Kanoniczne wyjaśnienie szyfrowania Androida i luk w zabezpieczeniach

16

Uwaga: Cóż, nagroda wygasła i jednym z możliwych powodów może być wysiłek, aby rozwiązać, jak zbieram z komentarzy. Biorąc pod uwagę liczbę głosów pozytywnych, wydaje się być interesujące również dla innych. Wciąż chciałbym uzyskać odpowiedź, więc oto, co proponuję - dobra odpowiedź w ciągu miesiąca dostanie premię w wysokości 50. Mam nadzieję, że dam odpowiedni czas i zachętę


Od jakiegoś czasu staram się zrozumieć proces szyfrowania Androida i jego słabe punkty

Istnieje wiele pytań dotyczących części tego tematu na tej stronie, a także na stronie siostrzanej. Aby odnieść mój punkt do domu, te pytania dotyczą części, a nie całości (przypominającej „ ślepców i słonia ?” :)

Moje zrozumienie (lub nieporozumienie?)

  1. Hasło szyfrowania jest generowane z kombinacji kodu PIN ekranu blokady użytkownika i algorytmu szyfrowania (w tym tkwi nieodłączna słabość wynikająca z ograniczonej długości kodu PIN)
  2. Jest to solone i przechowywane w lokalizacji głównej, niedostępnej dla użytkowników
  3. Służy do generowania rzeczywistego hasła do szyfrowania / deszyfrowania, a rzeczywiste hasło jest przechowywane w pamięci RAM
  4. Zostało to wzmocnione poprzez połączenie kroku 1 z SoC urządzenia ( która wersja Androida? Który element sprzętowy jednoznacznie identyfikuje urządzenie? Czy można go wymienić na fałszywy? )
  5. Dlatego nie jest możliwe odszyfrowanie danych bez klucza szyfrującego i urządzenia (dotyczy to również zewnętrznej karty SD)
  6. Możliwe metody odzyskiwania - brutalna siła, przechwytywanie informacji RAM (krok 3) w celu uzyskania klucza
  7. Zrootowane urządzenia wydają się być bardziej podatne na dostęp do danych kroku 2 poprzez niestandardowe odzyskiwanie / ewentualnie pamięć ROM i flashowanie jądra? ( jeśli to prawda, dlaczego nie jest to reklamowane jako duże ryzyko? )
  8. Nawet jeśli te informacje zostaną uzyskane, zgaduję, że wygenerowanie faktycznego hasła nie jest trywialne
  9. Marshmallow może traktować zewnętrzny SD jako „pamięć wewnętrzną” lub „pamięć przenośną”. Logicznie nie powinno to mieć znaczenia, ale nie jestem pewien

W moim rozumieniu istnieją luki, prawdopodobnie pomijane także w innych kluczowych aspektach.

Tak więc szukam kanonicznego wyjaśnienia zrozumienia z perspektywy użytkownika

  • Cały proces szyfrowania (w tym zewnętrzna karta SD)

  • Odmiana implementacji w różnych wersjach Androida - od KitKat do Marshmallow (w tym podwójne opcje dla zewnętrznego SD w Marshmallow)

  • Luki w zabezpieczeniach na poziomie użytkownika

Uwaga

  • Zdaję sobie sprawę z ryzyka, że ​​pytanie zostanie uznane za zbyt ogólne, ale IMO gwarantuje kompleksowe traktowanie
  • Mając pewne doświadczenie w zakresie bezpieczeństwa komunikacji, rozumiem wyzwanie związane z tłumaczeniem koncepcji kryptograficznych na poziom użytkownika. Wolę odpowiedź, aby rozwiązać ten problem, wraz ze wskazówkami wyjaśniającymi dla głębszego zrozumienia. Przykłady tego procesu nie muszą być poprawne kryptograficznie w ścisłym znaczeniu, ale powinny przekazać istotę

  • Możliwą zaletą może być „kopiowanie” przyszłych pytań dotyczących powiązanych aspektów

  • Kosztem powtórzeń odpowiedzi powinny być przede wszystkim na poziomie użytkownika , ale z odpowiednim wyjaśnieniem dla głębszego zrozumienia. Odpowiednim sposobem może być podzielenie odpowiedzi na dwie części .

  • Chciałbym, aby głosowanie w dół było trywialne / dorywczo / łatanie odpowiedzi roboczych, aby zachęcić do wyczerpujących odpowiedzi

beeshyams
źródło
1
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu . //To może lepiej pasować do bezpieczeństwa . Myślę też, że jest zbyt szeroki, ponieważ spora część tego, o co pytasz, zależy od konkretnego sprzętu i tego, jak producent go implementuje.
Mateusz

Odpowiedzi:

3

Wyobrażam sobie, że działa to tak:

  • Pamięć jest szyfrowana przy użyciu synchronicznego klucza losowego.
  • Gdy użytkownik wybiera lub zmienia hasło oparte na dowolnym wprowadzeniu, może to być hasło składające się z liter, cyfr i znaków, kod PIN, przesunięcie wzoru, odcisk palca lub dowolne inne wejście, szyfrowanie asynchroniczne Algorytm służy do szyfrowania klucza głównego, tak że poprawna identyfikacja kończy się odszyfrowaniem danych wejściowych, co skutkuje uzyskaniem klucza głównego, co z kolei umożliwia szyfrowanie i deszyfrowanie pamięci.
  • W momencie wylogowania użytkownika pamięć główna klucza głównego jest nadpisywana

Wielką sztuczką jest tutaj asynchroniczne szyfrowanie klucza głównego. Gdy Android ma klucz główny, ma możliwość wymiany danych z pamięcią. Ten klucz główny jest znany tylko wtedy, gdy użytkownik jest zalogowany. Szyfrowanie asynchroniczne nazywane jest szyfrowaniem kluczem publicznym. Dzieje się tak, że klucz publiczny szyfruje dane (w tym przypadku klucz główny), a klucz prywatny odszyfrowuje dane. Nie należy mylić tego z szyfrowaniem pamięci. Pamięć jest po prostu szyfrowaniem synchronicznym. Tam ten sam klucz służy do szyfrowania i deszyfrowania. Ale znalezienie / odzyskanie tego „głównego” klucza to biggie. Oznacza to, że jeśli w pewnym momencie masz słabą metodę logowania, jak na przykład intencja „1234” jako kod PIN, a ty zmienisz zdanie i zmienisz kod PIN na „5364”, co jest trudniejsze do odgadnięcia, chyba że wcześniej „1234” „ został skradziony, podsunięty, w dowolnym momencie bezpieczeństwo właśnie się poprawiło. To samo dotyczy zmiany metody logowania na pełne hasło, którego nie można zgadnąć ani zaatakować słownikowo. Samo magazynowanie wcale nie musi być ponownie szyfrowane. Chodzi o ukrywanie tego klucza głównego - wewnętrznie. Użytkownik nigdy nie widzi tego klucza głównego, ponieważ najprawdopodobniej jest to po prostu przypadkowy kod skrótu - nic nigdy nie „znajdzie” ani nie zgadnie tego kodu skrótu. Nawet NSA ani żaden inny organ bezpieczeństwa na naszej planecie nigdy nie znalazł takiego pasującego klucza. Jedynym wektorem ataku jest nadzieja na słabość ze strony użytkownika. Być może użytkownik wybrał login kodu PIN. Jeśli jest to 4 cyfry, to maksymalnie 10000 możliwych kodów PIN. System operacyjny może „zablokować” urządzenie po wypróbowaniu kilku w krótkim czasie. Rozwiązaniem jest następnie „zhakować” system operacyjny, aby umożliwić wypróbowanie wszystkich możliwych kodów PIN bez interwencji i blokowania urządzenia przez system operacyjny. Uważam, że w ten sposób FBI ostatecznie uzyskało dostęp do telefonu przestępcy. Firma zewnętrzna (jakaś izraelska firma z tego, co pamiętam) zrobiła włamanie do FBI. Ominęli ten limit próby kodu. Jeśli login jest pełnym hasłem, a użytkownik wybrał silne hasło, a ty jesteś sol. Nie za życia, kiedy cała moc procesora na planecie zhakuje to za milion lat. Nie kupuję żadnego z NSA, który może odszyfrować cokolwiek pogłoski. Myślę, że ci ludzie obejrzeli jeden zbyt wiele filmów w czerni. Wystarczy spojrzeć na dokumenty naukowe dotyczące różnych algorytmów szyfrowania (np. AES), a dowiesz się, że hackowanie po prostu nie nastąpi, z wyjątkiem dawnych czasów, kiedy było 40 bitów. Te dni już dawno minęły. Myślę, że AES128 jest już nie do zhakowania, a jeśli ktoś jest zaniepokojony, przeskakiwanie do AES256 sprawia, że ​​jest bardziej bezpieczny dzięki wielkości do wielkości wszechświata. Może pewnego dnia komputery kwantowe mogą go odszyfrować, ale jestem sceptyczny. Nie jestem pewien, czy można mieć system prawdopodobieństwa, po prostu wyróżnij rozwiązanie. W końcu się przekonamy. Być może i tak jest kilka wcieleń. Teraz nie ma się czym martwić.

Tak więc na koniec dnia ograniczenie bezpieczeństwa leży wyłącznie w użytej metodzie logowania. Można zmienić metodę bez konieczności ponownego szyfrowania magazynu. Wszystko to z powodu asynchronicznego szyfrowania klucza głównego kluczem publicznym.

Mikrofon
źródło
Myślę, że masz na myśli „symetryczny” i „asymetryczny”. Nie „synchroniczny” i „asynchroniczny”.
Jay Sullivan
1

Ponieważ aktualizacje są częste, sposób szyfrowania w telefonie (system operacyjny Android) może się zmieniać z jednej kompilacji na drugą. Dlatego głównym problemem nie jest samo szyfrowanie, ale miejsce, w którym proces jest uruchomiony. A jeśli ta platforma ma luki, siła samego algorytmu szyfrowania staje się niewielka lub nie ma żadnego znaczenia.

Zasadniczo, gdy urządzenie odszyfruje pliki, można uzyskać do nich bezpośredni dostęp dzięki procesowi z uprawnieniami superużytkownika. Ten proces może uzyskać dostęp do twojego urządzenia poprzez wykorzystanie słabości samej pamięci ROM (Android OS). (Było to niedawno w wiadomościach, ponieważ niektóre błędy zostały ujawnione przez WikiLeaks)

Zrootowane urządzenia wydają się być bardziej podatne na dostęp do danych kroku 2 poprzez niestandardowe odzyskiwanie / ewentualnie pamięć ROM i flashowanie jądra? (jeśli to prawda, dlaczego nie jest to reklamowane jako duże ryzyko?)

Przed rootowaniem : Aby zrootować urządzenie, musisz użyć zewnętrznych narzędzi, z których wszystkie mają głęboki dostęp do wewnętrznej struktury urządzenia. Niektóre z tych narzędzi są wstępnie skompilowane i nie są oprogramowaniem typu open source. Mają „oficjalne” strony internetowe, ale kim są ci ludzie? (twrp.me, na przykład supersu.com, ale są też tacy jak KingoRoot) Czy możemy im naprawdę zaufać? Ufam niektórym bardziej niż innym. Na przykład KingoRoot zainstalował program na moim komputerze, który zachowywał się w sposób podobny do wirusa (musiał użyć podwójnego rozruchu, aby go usunąć).

Po zrootowaniu : przyznanie dostępowi SU do skompilowanego programu (APK) oznacza, że ​​może on robić wszystko, co chce, bez ograniczeń lub wskazując, z jakiego zamiaru będzie korzystać. (Zamiary są sposobem dla APK na dostęp do takich rzeczy jak WiFi, kamera itp.) Tak więc „dobrze zaufana aplikacja”, po uzyskaniu dostępu do konta root, może łatwo uzyskać dostęp do dowolnego rodzaju informacji i odesłać ją z powrotem na serwer.

Czy pełne szyfrowanie urządzenia chroni moje dane przed Google i rządem?

Google - tak. Nie ma klucza do odblokowania.

Rząd (lub haker) - nie. ponieważ rząd lub haker może zasadniczo wykorzystać exploit, który przechwyci pliki, jak wspomniałem powyżej.

Złożoność procedur / algorytmów bezpieczeństwa jest mało przydatna, jeśli można je przechwycić i ominąć.

Edycja: Warto wspomnieć, że Google faktycznie może pobierać i instalować / aktualizować aplikacje na urządzeniu z Androidem bez pytania o zgodę, a nawet powiadamiania o tym, że aktualizacja miała miejsce. Nawet na zrootowanym urządzeniu nie ma sposobu, aby to zablokować bez utraty kluczowych funkcji (Play Store, Maps, Sync itp.)

Emil
źródło