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?
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 Token
auf das Gerät heruntergeladen, die accounts.db
als Klartext in der Datei gespeichert wird. Für alle nachfolgenden Anmeldungen wird dieses Auth Token
verwendet, NICHT Ihr ursprüngliches Passwort.
Wenn Ihr Gerät also gestohlen wird, kann jeder nur das bekommen, Auth Token
was 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 Authentication
erstellen . Device Specific Password
Nachdem 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 Authentication
erstellen . Device Specific Password
Nachdem 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.
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 .
accounts.db
Datei ist davor geschützt, von anderen Konten als system
./data/system/sync/accounts.xml
(ja, es ist XML), wie in diesem Artikel angegeben.
Fluss
asudhak
Fluss