GmailのパスワードはAndroidにどのように保存されますか?


37

私は周りを見回しましたが、Androidがデバイスにパスワードを保存する方法に関する情報を見つけませんでした。特にGmailパスワード。Androidがパスワードを暗号化して保存する方法を学びたいですか?どのキーを使用し、このキーはどこに保存され、どの暗号化アルゴリズムを使用します。


1
保存されたパスワードをキーで暗号化する必要があるのはなぜですか?これは、パスワードが必要になるたびにキーを入力する必要があることを意味するだけであり、パスワードを保存して毎回入力することはできません
フロー

ええと、キーはデバイス固有のもので、電話のIMEIなどから取得できます。つまり、ユーザーが毎回入力することなく、ソフトウェアがキーを取得できます。
asudhak

1
キーを取得するために電話で実行されている他のソフトウェアを妨げるものは何ですか?このアプローチでは、追加のセキュリティレイヤーは追加されません
フロー

回答:


36

Gmailの公式アプリ パスワードをデバイスに保存しません。このアプリを使用する場合、パスワードは100%安全です。

これがどのように機能するかですパスワードはGoogleの認証サーバーによって初めて初めて使用されます。最初に認証に成功すると、ファイルにプレーンテキストとしてAuth Token保存されているデバイスにダウンロードされaccounts.dbます。以降のすべてのログインでAuth Tokenは、元のパスワードではなく、これが使用されます。
そのため、デバイスが盗まれた場合、だれでも手に入れることができるのはAuth Token、パスワードを変更すると無効になるだけです。だから、あなたは究極の指揮権を持つことになります。
究極のセキュリティを確保2-Factor AuthenticationするDevice Specific Passwordために、デバイスを有効にして作成することをお勧めします。デバイスを失った後、必要なのはそのデバイスを無効にすることだけです。メインパスワードを変更する必要さえありません。

注: Gmail viz用のサードパーティのメールアプリを使用している場合、これらはすべて当てはまりません。ストックメールアプリ、K-9メールなど。IMAPまたはPOPプロトコルでは、毎回ユーザーを認証するために元のパスワードが必要です。そのため、サーバーに送信する前に、メールアプリでプレーンパスワードを使用できるようにする必要があります。そのため、ほとんどのメールアプリはパスワードをプレーンテキストで保存します(ハッシュ/暗号化キーはローカルに保存する必要があるため、ハッシュ/暗号化は役に立ちません)。この場合、デバイスの有効化2-Factor Authenticationと作成Device Specific Passwordをお勧めします。デバイスを失った後、必要なのはそのデバイスを無効にすることだけです。

更新:
技術的には、暗号化キー/ハッシュキーをプレーンテキストでローカルに保持せずに、暗号化/ハッシュ形式でローカルにパスワードを保存することが可能です。指摘してくれた@JFSebastianに感謝します。残念ながら、Android向けのこのような実装はまだ利用できません。ICSを開始すると、AndroidはKeyChain APIを提供します。これを使用して、アプリはパスワードを安全な形式でローカルに保存できます。KeyChain APIを使用するアプリはほとんどありませんが、ストックメールアプリはそれを使用します(この情報は@wawaに感謝します)。そのため、画面がロックされている限り、ストックメールアプリでパスワードは安全になります。KeyChainは、デバイスがルート化されており、ICS以前のデバイスでは使用できない場合、安全ではないことに注意してください。


6
@JF Sebastian:パスワードを保存するサードパーティを完全に信頼していると仮定しても、デバイス自体にパスワードを保存するよりもわずかに安全でした。デバイスは、クラウドストレージからパスワードのプレーンテキストを取得できる必要があり、トンネルまたはエリアに入るたびにドングルを再接続する必要がないため、デバイスはパスワードをローカルにキャッシュする必要があります弱い受信。セキュリティで行うべき最悪のことは、誤ったセキュリティを提供することです。
ライライアン

4
@JFSebastian:結論として、認証が本当に安全な唯一の方法は、GoogleがGmailアプリで行ったことを行うことです。つまり、認証トークンで非標準の認証スキームを使用します。誰かが認証トークンを盗んだとしても、リモートでトークンを無効にできます。また、パスワードのプレーンテキストが侵害されることはないため、パスワードを変更する必要はありません。もう1つの安全な方法は、セッションなしでドングルを使用することです。そうすると、何をするかがわかります。ユーザーはドングルを永久に取り付けたままにしておきます。
ライライアン

5
@JFSebastian:あなたはポイントを逃していると思います。パスワードを暗号化することは、プレーンテキストで保存するだけでなく、1ビットでも安全ではありません。accounts.dbをコピーする攻撃者は、復号化キーも一緒にコピーできます。暗号化が提供する唯一のことは、セキュリティがないというよりも悪いセキュリティの誤った感覚です。はい、プレーンテキストのパスワードを保存するよりもはるかに優れたソリューションがありますが、それらはすべて電子メールプロトコルの変更を必要とするため、現在あるものをそのまま使用することになりました。または、Gmailのように非標準的な方法で適切に実行します。
ライライアン

3
@JFSebastian ApplesキーチェーンサービスまたはLinuxカーネルが提供するサービスは、より安全なオプションではありません。パスワードはメモリ内に残っており、キーチェーンが暗号化されていなくてもロック解除されている場合。そのため、ルートとしてのみ読み取り可能な.dbファイルとして取得するのは、わずかに難しいだけです。Googleは、デバイスが侵害された場合に無効にできる認証トークンを使用することにより、可能な限り最良の実行可能なソリューションを実装しました。次に安全なオプションは、毎回パスワードを入力するか、単に電子メールを使用しないようにすることです。
フロー

4
@LieRyan ICSの時点では、ストックメールアプリは実際にはプレーンテキストではなくKeyStore APIを使用しています。android-developers.blogspot.com/2012/03/...
ウェズリーワイザー

12

組み込みのメールアプリケーションで使用されるAndroidパスワードは、SQLiteデータベース内にプレーンテキストで保存されます。これは、Sachin Sekharの回答で説明されているように、認証トークンを使用するGmailアプリケーションとは対照的です。

Jelly Beanの場合、データベースの場所は次のとおりです。

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

上記の場所は、Androidのバージョンによって異なります

ルート化されていないデバイス上のこの場所は、オペレーティングシステムによって保護および保護されています。
根ざしたデバイスでは、ユーザーは既に技術的に独自のセキュリティをクラックしており、プレーンテキストでなくても、キーをデバイスのどこかに存在させる必要があるため、解読するのは簡単です。

Android開発チームのメンバーが、今日まで適用される説明投稿しました

さて、この特定の懸念に関して。最初に明確にすることは、メールアプリがPOP3、IMAP、SMTP、およびExchange ActiveSyncの4つのプロトコルをサポートしていることです。非常にわずかな例外を除き、これらはすべてクライアントがサーバーにパスワードを提示する必要がある古いプロトコルですすべての接続で。これらのプロトコルでは、デバイスでアカウントを使用する限り、パスワードを保持する必要があります。新しいプロトコルはこれを行いません-これが、たとえば記事のいくつかがGmailと対照的である理由です。新しいプロトコルでは、クライアントは一度パスワードを使用してトークンを生成し、トークンを保存して、パスワードを破棄できます。

コメント#38にリンクされている記事を確認することをお勧めします。「隠蔽」パスワードと、それらを本当に「安全」にすることとの違いに関する非常に優れた背景を提供します。パスワード(base64など)を隠したり、他の場所に保存されたキーで暗号化しただけでは、パスワードやデータの安全性は向上しません。攻撃者はそれを取得できます。

(特に、平文でパスワードを保存しない他の電子メールクライアントの一部についていくつかの主張が行われています。これが真実であっても、パスワードがより安全であることを示すものではありません。デバイスが構成されたアカウントで電子メールを受信し始めると、パスワードは本当に安全ではありません。難読化されるか、別の場所に保存された別のキーで暗号化されます。

さらに、この問題は多くのAndroidユーザーを混乱させるように見えるので、Slashdot-平文で保存されたAndroidパスワードデータでこの議論に従うこともできます。


ワオ。それは私を驚かせます。プレーンテキストで保存されているという事実を知りませんでした。根ざしまたは根ざしを忘れます。デバイスが盗まれた場合、セキュリティキーで電話機をロックしても、悪意のない人が簡単に資格情報を取得する可能性があります。この事実を考えると、ディスク全体の暗号化メカニズムも知っていますか。
asudhak

1
それらが何であれ、それらはアカウントへのアクセスを得るために使用できるものです。しかし、@ SachinShekhar、accounts.dbファイル以外のアカウントによる読み取りから保護されていますsystem
ワイザード

1
ズール、あなたが答えを出してくれたことに感謝していますが、この答えは非常に誤解を招くと思います。再度引用した引用を実行すると、Gmailアプリはパスワードを保存しません。-@SachinShekharの回答も編集してください。
ロキサン

2
@asudhakオリジナルのパスワードを使用しているアプリがある場合、それを保護する方法はありません。ハッカーは、ローカルに保存する必要がある暗号化/ハッシュキーを見つけた後、accounts.dbからエンコードされた文字列をデコードできます。
Android Quesito

2
@roxanパスワードがGmailアプリに保存されていないことを示すものは見つかりませんでした。見積もりやリンクを提供できますか?
フロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.