Google – firma, która prężnie rozwija system Android, wprowadza nowy sposób szyfrowania urządzeń.

Każdy z nas zna Androida. Co „chwilę” uzyskuje pewne aktualizacje, czy to zabezpieczeń, czy też możliwości. Odstępy między tymi chwilami bywają różne, ale efekt jest jeden – Google chce zapewnić wysoką jakość swojego „podopiecznego”.

Na przestrzeni ostatnich lat system zmieniał się pod względem wyglądu interfejsu UI, zyskaliśmy nowe możliwości, nowe funkcje. Jednak, aż od roku 2016, kiedy to pojawiła się szósta odsłona „zielonego ludka” zmianom nie uległa metoda szyfrowania danych. Zdałoby się pomyśleć, że ten dosyć ważny element układanki został pominięty, czy też zapomniany przez giganta z Mountain View.

A jednak nie…

Już od  jakiegoś czasu trwały prace nad nowym szyfrowaniem.

Adiantum

W przypadku wielu aplikacji do szyfrowania pamięci tekst zaszyfrowany musi być tej samej wielkości co tekst zwykły. Zazwyczaj odpowiada rozmiarowi sektora dysków o wielkości 512 lub 4096 bajtów. Oznacza to, że nie można zastosować standardowych podejść, takich jak AES-GCM lub tych opisanych w RFC7539. Standardowym rozwiązaniem jest AES-XTS, ale ma to dwie wady:

  • Jeśli sprzęt AES jest nieobecny, to wtedy metoda AES jest stosunkowo powolna, w szczególności implementacje w czasie stałym.
  • Użycie XTS powoduje, że jednobitowa zmiana w zwykłym tekście oznacza jedynie 16-bajtową zmianę w zaszyfrowanym tekście, co ujawnia atakującemu więcej niż jest to konieczne.

Dzisiaj Android oferuje szyfrowanie pamięci masowej przy użyciu AES-128-CBC-ESSIV dla szyfrowania pełnego dysku i AES-256-XTS dla szyfrowania plików. Większość nowych urządzeń obsługuje AES za pośrednictwem rozszerzeń kryptograficznych ARMv8. Jednak Android działa na wielu urządzeniach. Obejmuje to nie tylko najnowsze telefony flagowe i średniej klasy, ale także podstawowe telefony z Androidem Go sprzedawane głównie w krajach rozwijających się, a także inteligentne zegarki i telewizory. W segmentach niskobudżetowych producenci urządzeń czasami używają procesorów low-end, jak np. ARM Cortex-A7, który nie ma wsparcia sprzętowego dla AES. Na tych urządzeniach AES jest tak powolny, że spowodowałoby to marną satysfakcję użytkownika. Uruchomienie aplikacji zajęłoby znacznie więcej czasu, a urządzenie generalnie pracowałby zdecydowanie wolniej.

Adiantum to innowacja w kryptografii zaprojektowana w celu zwiększenia efektywności szyfrowania pamięci masowej w przypadku urządzeń bez akceleracji kryptograficznej, aby zapewnić szyfrowanie wszystkich urządzeń. Ma znaczący wpływ na poprawę wydajności na urządzeniach low-end. Adiantum używa szybkiego skrótu (NH + Poly1305) i szybkiego strumienia (XChaCha12) do zbudowania konstrukcji, która szyfruje cały sektor na raz. Na procesorze ARM Cortex-A7 Adiantum odszyfrowuje 4096-bajtowe wiadomości w 11 cyklach na bajt, ponad pięć razy szybciej niż AES-256-XTS. Jest to „permutacja super pseudolosowa” w całym sektorze, co oznacza, że każda zmiana w jawnym tekście sektora powoduje, że sektor tekstu zaszyfrowanego jest nieznany i vice versa. No dobrze. Teoria teorią, ale jak to ma się w praktycznym zastosowaniu? Zerknijmy na wykres poniżej:

Widzimy, że faktycznie rzeczywiste prędkości szyfrowania uległy znacznej poprawie. Wręcz kilkukrotnej. Z pewnością użytkowanie najnowszej odsłony Android Q może być przełomowe pod względem wydajności samego już systemu, a co dopiero pracy na aplikacjach, czy grach. Tylko, na jakiej zasadzie działa całe to szyfrowanie? Tutaj również łatwiej jest to przedstawić graficznie:

W przeciwieństwie do trybów takich jak XTS lub CBC-ESSIV, Adiantum jest prawdziwym trybem „szerokiego bloku”. Zmiana dowolnego znaku w prostym tekście spowoduje nieodwracalną zmianę całego zaszyfrowanego tekstu i na odwrót. Działa przez pierwsze hashe na prawie cały tekst jawny za pomocą klucza hash opartego na Poly1305 i innej bardzo szybko kluczowanej funkcji haszowania o nazwie NH. Mamy również wartość mieszającą zwaną „podkręcaniem”, która służy do tego, aby różne sektory były szyfrowane w różny sposób. Ten skrót jest następnie używany do generowania przyrostka dla szyfrowania ChaCha. Po zaszyfrowaniu ponownie włączamy funkcję skrótu, dzięki czemu mamy taką samą siłę w kierunku odszyfrowywania, jak kierunek szyfrowania. Jest to ustawione w konfiguracji znanej jako sieć Feistel, dzięki czemu możemy odszyfrować to, co zaszyfrowaliśmy. Wymagane jest również pojedyncze wywołanie AES-256 w bloku 16-bajtowym, ale w przypadku danych wejściowych 4096-bajtowych ta część nie jest krytyczna dla wydajności.

Także jak widać nasze bezpieczeństwo jest dla Google bardzo istotne. Zwłaszcza w dzisiejszych czasach, kiedy to temat prywatności, przestrzeni osobistej, RODO, bezpieczeństwa jest tematem przewodnim. Dla wielu osób jest to niczym bajka dla dzieci – jest bo jest, ale mało interesujące, wręcz wcale. Dla innych jest to istotna cecha, na którą zwracają szczególną uwagę.
W końcu przecież zwykły, przeciętny „Kowalski” nie będzie się przejmował, czy coś ma szyfrowane, czy też nie. Chyba tylko duże firmy już się skupiają na tym przy zakupie nowego sprzętu.

Google zależy na tym, aby system Android był najbezpieczniejszym system mobilnym, jak tylko to możliwe, co nas bardzo cieszy. Wszystkie aktualizacje zabezpieczeń to jedno i dużo znaczą, ale zmiana metody szyfrowania naszych danych? Czekamy!

A Wy? Co myślicie o tym? Dajcie znać w komentarzach!

Jeżeli znalazłeś/aś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij Zgłoś pomyłkę.