Gmail şifresi Android'de nasıl saklanır - ve nerede?


37

Etrafıma baktım ve Android'in cihazda şifreleri depolamayı nasıl yönettiği konusunda hiçbir bilgi bulamadım. Özellikle Gmail şifreleri. Android'in şifreleri nasıl şifrelediğini ve sakladığını öğrenmek için arıyorum? Hangi anahtarı kullanır ve bu anahtar nerede saklanır ve hangi şifreleme algoritmasını kullanır.


1
Saklanan şifre neden bir anahtarla şifrelenmeli? Bu sadece bir tuşunu şifresi gereklidir her seferinde girmek zorunda olduğu anlamına gelecektir, o zaman basitçe olabilir değil şifreyi depolamak ve bunu her zaman girin.
Akış

Anahtar, telefon IMEI'sinden veya başka bir şeyden elde edilen cihaza özel olabilir. Bu, kullanıcının her zaman yazmasına gerek kalmadan yazılımın anahtarı alabileceği anlamına gelir.
asudhak

1
Telefonda çalışan diğer herhangi bir yazılım parçasının anahtarı almasını engelleyen nedir? Bu yaklaşım fazladan bir güvenlik katmanı oluşturmaz
Flow

Yanıtlar:


36

Gmail'in resmi uygulaması değildir cihazınızdaki şifreyi saklayın. Bu uygulamayı kullanırsanız şifreniz% 100 güvenlidir.

Bu şekilde çalışır: Şifre, SADECE ilk kez Google’ın kimlik doğrulama sunucuları tarafından kullanılır. İlk başarılı kimlik doğrulamasından sonra, bir dosyaya düz metin olarak Auth Tokendepolanan cihaza indirilir accounts.db. Sonraki tüm girişler için, Auth Tokenorijinal şifreniz DEĞİLDİR.
Bu nedenle, eğer cihazınız çalınmışsa, Auth Tokenşifreniz değiştiğinde herkesin ulaşabileceği bir şey olur. Yani, nihai emrinizde olacaksınız.
En yüksek güvenlik için, cihazınız için etkinleştirmenizi 2-Factor Authenticationve oluşturmanızı öneririm Device Specific Password. Cihazı kaybettikten sonra tek ihtiyacınız olan cihazı devre dışı bırakmak. Ana şifreyi değiştirmenize bile gerek yok.

Not: Gmail viz için üçüncü taraf e-posta uygulamaları kullanıyorsanız, bunlar doğru değildir. Stok E-posta uygulaması, K-9 Posta vb. IMAP veya POP protokolü, kullanıcıların her zaman kimlik doğrulaması için orijinal parola gerektirir. Bu nedenle, uygulamanın sunucuya gönderilmeden önce e-posta ile gönderilmesi için sade parolanın kullanılabilir olması gerekir. Bu nedenle, e-posta uygulamalarının çoğu şifreleri düz metin olarak saklar (karma / şifreleme işe yaramaz çünkü karma / şifreleme anahtarının yerel olarak depolanması gerekir). Bu durumda, cihazınız için etkinleştirmenizi 2-Factor Authenticationve oluşturmanızı tavsiye ederim Device Specific Password. Cihazı kaybettikten sonra tek ihtiyacınız olan cihazı devre dışı bırakmak.

Güncelleme:
Teknik olarak, şifreleme anahtarını / karma anahtarını yerel olarak düz metin olarak tutmadan şifreleri yerel olarak şifrelenmiş / karma biçimde depolamak mümkündür. @JFSebastian 'a işaret ettiği için teşekkür ederiz. Ne yazık ki, Android için böyle bir uygulama henüz mevcut değil. ICS'yi başlatan Android, bir uygulamanın yerel olarak güvenli bir şekilde bir parola depolayabilmesini sağlayan KeyChain API'sini sağlar . KeyChain API kullanan uygulamalar nadirdir, ancak stok e-posta uygulaması bunu kullanır (Bu bilgi için @wawa'ya teşekkür ederiz). Böylece şifreniz, ekranınız kilitlendiği sürece stok e-posta uygulamasıyla güvende olacak. Unutmayın, cihaz köklüse ve ICS öncesi cihazlarda mevcut değilse, KeyChain güvenli değildir.


6
@JF Sebastian: Şifrelerinizi depolayan üçüncü tarafa tamamen güvendiğinizi varsaysanız bile, bunlar yalnızca şifreyi cihazın içine koymaktan çok daha güvenliydi. Cihazın hala şifrenin düz metnini bulut deposundan alabilmesi gerekir ve cihazın yine de şifreyi yerel olarak önbelleğe alması gerekir; Zayıf alımı. Güvenlikte yapılacak en kötü şey, yanlış bir güvenlik hissi sağlamaktır.
Lie Ryan

4
@JFSebastian: Sonuç olarak, kimlik doğrulamanın tek güvenli yolu Google’ın Gmail uygulamasıyla yaptıklarını yapmak, yani auth token ile standart olmayan kimlik doğrulama düzenini kullanmaktır. Birisi, kimlik kartınızı çalmayı başlasa bile, belirteci uzaktan geçersiz kılabilirsiniz ve şifrenizi değiştirmenize gerek yoktur çünkü parola metni metninden asla ödün verilmez. Diğer güvenli yol, dongle'ı oturum olmadan kullanmaktır; Peki, bunu yaptığınızda ne olacağını biliyorsunuz, kullanıcılarınız dongle'ı kalıcı olarak ekli bırakacaklar.
Yalan Ryan

5
@ JFSebastian: Sanırım noktayı kaçırıyorsunuz. Şifreyi şifrelemek, sadece bir bit bile değil, düz metin olarak saklamaktan daha güvenli değildir. Account.db dosyasını kopyalamayı başaran herhangi bir saldırgan şifre çözme anahtarını bununla birlikte de kopyalayabilir; şifrelemenin size verdiği tek şey, güvenlikten daha kötü olmayan bir güvenlik hissidir. Evet, düz metin şifresini depolamaktan çok daha iyi çözümler var, ancak hepsinin e-posta protokolünde değişiklik yapması gerekiyor, bu yüzden şu anda sahip olduklarımızla birlikte yaşamamız gerekiyor. Veya Gmail’in yaptığı gibi standart dışı bir şekilde doğru şekilde yapın.
Lie Ryan

3
@ JFSebastian Elmalar anahtarlık hizmeti veya Linux çekirdeği tarafından sağlanan bir daha güvenli bir seçenek değildir. Parola hala bellekte takılı kalıyorsa ve anahtarlık kilitli değilse bile şifrelenmemiş. Bu nedenle, sadece .db dosyası tarafından okunabilen kök olarak elde etmek biraz zor olabilir. Google, cihazın tehlikeye girmesi durumunda geçersiz hale getirilebilecek bir auth jetonu kullanarak mümkün olan en iyi çözümü verdi. Bir sonraki daha güvenli seçenek her seferinde şifreyi girmek veya sadece e-posta kullanmaktan kaçınmak olacaktır.
Akış

4
@LieRyan ICS'den itibaren, stoktaki E-posta uygulaması aslında KeyStore API'sini düz metin değil kullanıyor. android-developers.blogspot.com/2012/03/…
Wesley Wiser

12

Dahili E-posta uygulamasıyla kullanılan Android şifreleri, bir SQLite Veritabanının içinde düz metin olarak saklanır. Bu, Sachin Sekhar'ın cevabında açıklandığı gibi Auth Tokens kullanan Gmail uygulamasının aksine .

Jelly Bean için veritabanı yeri:

/data/system/users/0/accounts.db

Yukarıdaki konum Android sürümüne göre değişir

Köklü olmayan bir cihazda bu konum, İşletim Sistemi tarafından korunur ve korunur.
Köklü cihazlarda, kullanıcılar teknik olarak kendi güvenliklerini zaten çözmüşlerdir ve düz metin içinde olmasalar bile, anahtarın cihazda bir yerde olması gerektiğinden şifresini çözmek önemsiz olacaktır.

Android Geliştirme Ekibinden bir üye bugüne kadar hala geçerli olduğuna dair bir açıklama yaptı :

Şimdi, bu özel endişe ile ilgili olarak. Açıklığa kavuşturmak için ilk şey, E-posta uygulamasının dört protokolü (POP3, IMAP, SMTP ve Exchange ActiveSync) desteklediği ve çok az, çok sınırlı istisnalar dışında, bunların hepsinin müşterinin şifreyi sunucuya sunmasını gerektiren eski protokoller olduğu. her bağlantıda. Bu protokoller, hesabı cihazda kullanmak istediğiniz sürece şifreyi saklamamızı gerektirir. Daha yeni protokoller bunu yapmaz - bu yüzden bazı makaleler örneğin Gmail’le çelişiyor. Daha yeni protokoller, istemcinin bir belirteç oluşturmak, belirteci kaydetmek ve şifreyi silmek için şifreyi bir kez kullanmasına izin verir.

38 numaralı yorumda yer alan makaleyi , iyi yazılmış ve oldukça bilgilendirici olarak incelemenizi tavsiye ederim . "Gizli" şifreleri ve onları gerçekten "güvenli" yapmak arasındaki farktan çok iyi bir arka plan sağlar. Basitçe (örn base64) şifrenizi engellemeyecek veya olacak başka bir yerde saklanan bir anahtar ile şifreleyerek değil şifrenizi veya veri daha güvenli hale getirmek. Bir saldırgan yine de alabilecek.

(Özellikle, şifreyi açık metin içinde saklamayan diğer e-posta istemcilerinden bazıları hakkında bazı iddialarda bulunulmuştur. Bu doğru olsa bile, şifrenin daha güvenli olduğunu göstermez. Basit bir test: cihazınız yapılandırılmış hesaplarınızda e-posta almaya başlayacak, ardından şifreler tam anlamıyla güvenli değil.

Genelde, bu sorun birçok Android kullanıcısını rahatsız ettiğinden, bu tartışmayı Slashdot - Düz Metin Olarak Saklanan Android Parola Verileri bölümünden de takip edebilirsiniz .


Vay. Bu beni şaşırtıyor. Düz metin olarak saklandığı gerçeğinin farkında değildim. Köklü veya köklü unut. Cihazınız çalınırsa, telefonu güvenlik kilidiyle kilitlemiş olsanız bile, güvenilir olmayan bir kişi kimlik bilgilerinizi kolayca alabilir. Bu gerçeği göz önüne alındığında, ayrıca disk genelinde şifreleme mekanizmalarının farkında mısınız?
asudhak

1
Ne olursa olsun, hesaba erişmek için kullanılabilecek bir şey. Ama, @SachinShekhar, accounts.dbdosya edilir dışındaki hesaplara göre okunduğunu korunmaktadır system.
Wyzard --Stop zarar Monica--

1
Zuul, cevaplarına verdiğin çaba için teşekkür ederim ama bence bu cevap çok yanıltıcı. Tekrar alıntı yaptığınız teklifi geçerseniz, Gmail uygulaması şifreyi kaydetmez. - denetleyin @SachinShekhar da cevap.
roxan

2
@ Asudhak Herhangi bir uygulama orijinal bir şifre kullanıyorsa, korumanın YOK yolu yoktur. Bir bilgisayar korsanı, yerel olarak depolanması gereken şifreleme / hash anahtarını bulduktan sonra hesaplar.db'den şifrelenmiş dize kodunu çözebilir, çünkü e-posta uygulaması, sunucuya göndermeden önce orijinal şifreyi derlemek için bu anahtara ihtiyaç duyar.
Android Quesito

2
@roxan ben şifre noktaları o şey bulamadı değil Gmail uygulamasının tarafından depolanmaktadır. Bir teklif veya link verebilir misiniz?
Akış
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.