Wie wird das Gmail-Passwort in Android gespeichert – und wo?

Ich habe mich umgesehen und keine Informationen darüber gefunden, wie Android es schafft, Passwörter auf dem Gerät zu speichern. Vor allem Gmail-Passwörter. Ich möchte erfahren, wie Android Passwörter verschlüsselt und speichert. Welchen Schlüssel verwendet es und wo wird dieser Schlüssel gespeichert und welchen Verschlüsselungsalgorithmus verwendet es?

Warum sollte das gespeicherte Passwort mit einem Schlüssel verschlüsselt werden? Dies würde nur bedeuten, dass man jedes Mal den Schlüssel eingeben muss, wenn das Passwort benötigt wird, dann könnte man das Passwort einfach nicht speichern und es jedes Mal eingeben.
Ähm, der Schlüssel könnte gerätespezifisch sein, von der IMEI des Telefons oder so stammen. Das bedeutet, dass die Software den Schlüssel erhalten kann, ohne dass der Benutzer ihn jedes Mal eingeben muss.
Was hindert andere Softwareteile, die auf dem Telefon ausgeführt werden, daran, den Schlüssel zu erhalten? Dieser Ansatz fügt keine zusätzliche Sicherheitsebene hinzu

Antworten (2)

Die offizielle App von Google Mail speichert kein Passwort auf Ihrem Gerät. Ihr Passwort ist 100 % sicher, wenn Sie diese App verwenden.

So funktioniert es: Das Passwort wird NUR beim ersten Mal von den Authentifizierungsservern von Google verwendet. Nach der ersten erfolgreichen Authentifizierung wird eine Auth Tokenauf das Gerät heruntergeladen, die accounts.dbals Klartext in der Datei gespeichert wird. Für alle nachfolgenden Anmeldungen wird dieses Auth Tokenverwendet, NICHT Ihr ursprüngliches Passwort.
Wenn Ihr Gerät also gestohlen wird, kann jeder nur das bekommen, Auth Tokenwas ungültig wird, sobald Sie Ihr Passwort ändern. Sie haben also das ultimative Kommando.
Für ultimative Sicherheit empfehle ich Ihnen , für Ihr Gerät zu aktivieren und zu 2-Factor Authenticationerstellen . Device Specific PasswordNachdem Sie das Gerät verloren haben, müssen Sie es nur noch deaktivieren. Sie müssen nicht einmal das Hauptpasswort ändern.

Hinweis: All dies trifft nicht zu, wenn Sie E-Mail-Apps von Drittanbietern für Google Mail verwenden, nämlich. Standard-E-Mail-App, K-9-Mail usw. Das IMAP- oder POP-Protokoll benötigt jedes Mal ein Originalpasswort, um Benutzer zu authentifizieren. Daher muss der E-Mail-App ein einfaches Passwort zur Verfügung stehen, bevor es an den Server gesendet wird. Daher speichern die meisten E-Mail-Apps Passwörter im Klartext (Hashing/Verschlüsselung ist nutzlos, da Hashing/Verschlüsselungsschlüssel lokal gespeichert werden müssen). In diesem Fall würde ich Ihnen empfehlen , für Ihr Gerät zu aktivieren und zu 2-Factor Authenticationerstellen . Device Specific PasswordNachdem Sie das Gerät verloren haben, müssen Sie es nur noch deaktivieren.

Update:
Technisch gesehen ist es möglich, Passwörter lokal in verschlüsselter/gehashter Form zu speichern, ohne den Verschlüsselungsschlüssel/Hash-Schlüssel lokal im Klartext aufzubewahren. Danke an @JFSebastian für den Hinweis. Leider ist eine solche Implementierung für Android noch nicht verfügbar. Ab ICS bietet Android eine KeyChain-API , mit der eine App ein Passwort lokal in sicherer Form speichern kann. Apps, die die KeyChain-API verwenden, sind selten, aber Standard-E-Mail-Apps verwenden sie (Danke an @wawa für diese Informationen). Ihr Passwort ist also mit der Standard-E-Mail-App sicher, solange Ihr Bildschirm gesperrt ist. Denken Sie daran, dass KeyChain nicht sicher ist, wenn das Gerät gerootet ist und auf Pre-ICS-Geräten nicht verfügbar ist.

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Android-Passwörter, die mit der integrierten E-Mail-Anwendung verwendet werden, werden im Klartext in einer SQLite-Datenbank gespeichert. Dies steht im Gegensatz zur Gmail - Anwendung, die Auth-Token verwendet, wie in Sachin Sekhars Antwort beschrieben .

Für Jelly Bean lautet der Datenbankspeicherort:

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

Der obige Speicherort variiert mit der Android-Version

Dieser Speicherort auf einem nicht gerooteten Gerät ist durch das Betriebssystem gesichert und geschützt.
Auf gerooteten Geräten haben Benutzer bereits ihre eigene Sicherheit technisch geknackt, und selbst wenn es nicht im Klartext wäre, wäre es immer noch trivial zu entschlüsseln, da der Schlüssel irgendwo auf dem Gerät vorhanden sein muss, um dies zu tun.

Ein Mitglied des Android-Entwicklungsteams hat eine Erklärung gepostet , die bis heute gilt:

Nun zu diesem speziellen Anliegen. Das erste, was klargestellt werden muss, ist, dass die E-Mail-App vier Protokolle unterstützt – POP3, IMAP, SMTP und Exchange ActiveSync – und mit sehr wenigen, sehr begrenzten Ausnahmen sind dies alles ältere Protokolle, die erfordern, dass der Client dem Server das Passwort präsentiert auf jeder Verbindung. Diese Protokolle erfordern, dass wir das Passwort so lange aufbewahren, wie Sie das Konto auf dem Gerät verwenden möchten. Neuere Protokolle tun dies nicht - deshalb haben einige Artikel beispielsweise Gmail gegenübergestellt. Neuere Protokolle ermöglichen es dem Client, das Kennwort einmal zu verwenden, um ein Token zu generieren, das Token zu speichern und das Kennwort zu verwerfen.

Ich fordere Sie dringend auf, den in Kommentar Nr. 38 verlinkten Artikel zu lesen , der gut geschrieben und sehr informativ ist. Es bietet einige sehr gute Hintergrundinformationen über den Unterschied zwischen dem „Verbergen“ von Passwörtern und dem wirklich „sicheren“ Kennwörtern. Das einfache Verschleiern Ihres Passworts (z. B. base64) oder das Verschlüsseln mit einem an anderer Stelle gespeicherten Schlüssel macht Ihr Passwort oder Ihre Daten nicht sicherer. Ein Angreifer kann es immer noch abrufen.

(Insbesondere wurden einige Behauptungen darüber aufgestellt, dass einige der anderen E-Mail-Clients das Passwort nicht im Klartext speichern. Selbst wenn dies zutrifft, bedeutet dies nicht, dass das Passwort sicherer ist. Ein einfacher Test: Wenn Sie den Gerät und es beginnt, E-Mails auf Ihren konfigurierten Konten zu empfangen, dann sind die Passwörter nicht wirklich sicher. Sie sind entweder verschleiert oder mit einem anderen Schlüssel verschlüsselt, der woanders gespeichert ist.)

Da dieses Problem viele Android-Benutzer zu stören scheint, können Sie außerdem dieser Diskussion unter Slashdot - Android Password Data Stored In Plain Text folgen .

Wow. Das erstaunt mich. Mir war nicht bewusst, dass es im Klartext gespeichert ist. Vergiss gerootet oder nicht gerootet. Wenn Ihr Gerät gestohlen wird, könnte eine skrupellose Person leicht Ihre Zugangsdaten erlangen, selbst wenn Sie das Telefon mit einem Sicherheitsschlüssel sperren würden. Kennen Sie angesichts dieser Tatsache auch plattenweite Verschlüsselungsmechanismen?
Nun, ich habe gerade herausgefunden, dass die Passwörter NICHT im Klartext sind. accounts.db hatte die Benutzernamen der verschiedenen Konten in Verbindung mit einigen seltsam aussehenden Zeichenfolgen. Ich vermutete eine einfache base64-Codierung, aber das war auch nicht der Fall. Es muss also eine Art Zugriffstokenmechanismus verwendet werden, wie von @SachinShekhar angegeben. Aber ich möchte noch bestätigen, ob diese "Strings" nicht eine Art verschlüsseltes Passwort sind
Was auch immer sie sind, sie können verwendet werden, um Zugriff auf das Konto zu erhalten. Aber, @SachinShekhar, die accounts.dbDatei ist davor geschützt, von anderen Konten als system.
Zuul, ich weiß deine Mühe zu schätzen, die du in die Antworten gesteckt hast, aber ich denke, diese Antwort ist sehr irreführend. Wenn Sie das zitierte Zitat noch einmal durchgehen, speichert die Google Mail-App das Passwort nicht. --edit check @SachinShekhar Antwort auch.
@asudhak Wenn eine App das ursprüngliche Passwort verwendet, gibt es KEINE Möglichkeit, es zu schützen. Ein Hacker kann eine verschlüsselte Zeichenfolge aus accounts.db entschlüsseln, nachdem er einen Verschlüsselungs-/Hashing-Schlüssel gefunden hat, der lokal gespeichert werden muss, da die E-Mail-App diesen Schlüssel benötigt, um das ursprüngliche Passwort zu kompilieren, bevor es an den Server gesendet wird.
@roxan Ich konnte nichts finden, was darauf hindeutet, dass das Passwort nicht von der Google Mail-App gespeichert wird. Können Sie ein Zitat oder einen Link angeben?
Ich habe diese Antwort zu einem Community-Wiki gemacht, damit jeder seinen Inhalt verbessern kann. Da die Meinungen auseinander gehen, kann so jeder etwas beitragen.
Mein Telefon ist ASUS Zenfone 2, auf dem Android 5.0 ausgeführt wird, und der Speicherort der "Datenbank" -Datei ist /data/system/sync/accounts.xml(ja, es ist XML), wie in diesem Artikel angegeben.