Rozejrzałem się i nie znalazłem informacji o tym, w jaki sposób Android przechowuje hasła na urządzeniu. Zwłaszcza hasła do Gmaila. Chcę się dowiedzieć, jak Android szyfruje i przechowuje hasła? Jakiego klucza używa i gdzie jest przechowywany ten klucz oraz jakiego algorytmu szyfrowania używa.
security
gmail
password
gmail-password
asudhak
źródło
źródło
Odpowiedzi:
Oficjalna aplikacja Gmaila nie przechowuje hasła na twoim urządzeniu. Twoje hasło jest w 100% bezpieczne, jeśli korzystasz z tej aplikacji.
Oto jak to działa: hasło jest używane tylko przez serwery uwierzytelniające Google. Po pierwszym udanym uwierzytelnieniu plik
Auth Token
jest pobierany na urządzenie, które jest przechowywane waccounts.db
pliku jako zwykły tekst. Przy wszystkich kolejnych logowaniachAuth Token
jest to używane, a NIE oryginalne hasło.Tak więc, jeśli twoje urządzenie zostanie skradzione, wszystko, co każdy może uzyskać, to
Auth Token
staje się nieważne po zmianie hasła. Będziesz więc absolutnie dowodzony.Aby uzyskać najwyższe bezpieczeństwo, zalecamy włączenie
2-Factor Authentication
i utworzenieDevice Specific Password
urządzenia. Po utracie urządzenia wystarczy go wyłączyć. Nie musisz nawet zmieniać głównego hasła.Uwaga: to wszystko nie jest prawdą, jeśli używasz zewnętrznych aplikacji e-mail do Gmaila. Podstawowa aplikacja e-mail, poczta K-9 itp. Protokół IMAP lub POP wymaga oryginalnego hasła do uwierzytelnienia użytkowników za każdym razem. Tak więc proste hasło musi być dostępne w aplikacji e-mail przed wysłaniem go na serwer. Dlatego większość aplikacji pocztowych przechowuje hasła w postaci zwykłego tekstu (haszowanie / szyfrowanie jest bezużyteczne, ponieważ klucz haszujący / szyfrujący musi być przechowywany lokalnie). W takim przypadku zalecam włączenie
2-Factor Authentication
i utworzenieDevice Specific Password
urządzenia. Po utracie urządzenia wystarczy go wyłączyć.Aktualizacja: Z
technicznego punktu widzenia możliwe jest lokalne przechowywanie haseł w postaci zaszyfrowanej / mieszanej bez lokalnego przechowywania klucza szyfrowania / klucza mieszającego w postaci zwykłego tekstu. Dzięki @JFSebastian za wskazanie tego.
Niestety taka implementacja dla Androida nie jest jeszcze dostępna.Począwszy od ICS, Android zapewnia KeyChain API, za pomocą którego aplikacja może przechowywać hasło lokalnie w bezpiecznej formie. Aplikacje korzystające z KeyChain API są rzadkie, ale używa ich standardowa aplikacja e-mailowa (dzięki @wawa za tę informację). Twoje hasło będzie więc bezpieczne w podstawowej aplikacji e-mail, dopóki ekran będzie zablokowany. Pamiętaj, że KeyChain nie jest bezpieczny, jeśli urządzenie jest zrootowane i nie jest dostępne na urządzeniach wcześniejszych niż ICS.źródło
Hasła Androida używane we wbudowanej aplikacji Email są przechowywane jako zwykły tekst w bazie danych SQLite. Jest to sprzeczne z aplikacją Gmaila , która korzysta z tokenów uwierzytelniania zgodnie z opisem w odpowiedzi Sachina Sekhara .
W przypadku Jelly Bean lokalizacja bazy danych to:
Powyższa lokalizacja różni się w zależności od wersji Androida
Ta lokalizacja na niezrootowanym urządzeniu jest chroniona i chroniona przez system operacyjny.
Na zrootowanych urządzeniach użytkownicy już technicznie złamali swoje zabezpieczenia, a nawet gdyby nie był to zwykły tekst, odszyfrowanie byłoby trywialne, ponieważ klucz musi istnieć gdzieś na urządzeniu, aby to zrobić.
Członek zespołu programistów Androida opublikował wyjaśnienie, które do dziś obowiązuje:
Dodatkowo, ponieważ wydaje się, że ten problem przeszkadza wielu użytkownikom Androida, możesz również śledzić tę dyskusję w Slashdot - dane hasła do Androida przechowywane jako zwykły tekst .
źródło
accounts.db
plik jest chroniony przed odczytem przez konta inne niżsystem
.