Architektura bezpieczeństwa Cryptile, warstwa po warstwie
Cryptile szyfruje każdy plik, miniaturę i indeks AES-256-GCM, kluczami tworzonymi na Twoim telefonie z rysowanego przez Ciebie wzoru. Nie ma konta ani serwera, a twórca aplikacji nigdy nie ma kluczy.
Proste podsumowanie jest na stronie o bezpieczeństwie.
Co muszę wiedzieć?
- Twój wzór jest źródłem każdego klucza. Bez niego nic czytelnego nie jest przechowywane.
- Rozmiary i liczba sejfów są zamazane. Pliki są wyrównywane, a miejsca na wabiki ukrywają, ile istnieje sejfów.
- Możesz to sprawdzić. Rdzeń szyfrowania jest opublikowany do audytu (source-available) wraz z modelem zagrożeń i wektorami testowymi: github.com/jasonbrelsford/cryptile-core.
Jak wzór staje się kluczem?
- Wzór jest zapisywany jako rozmiar siatki, a po nim dotknięte pola, w kolejności.
- Jest łączony z 32-bajtowym sekretem urządzenia, przechowywanym w pęku kluczy (Keychain) iPhone'a tylko dla tego urządzenia.
- PBKDF2-HMAC-SHA512 przetwarza go 600 000 razy. Każda próba zgadnięcia kosztuje tyle samo pracy.
- HKDF-SHA256 dzieli wynik na klucz wyszukiwania i klucz opakowujący.
- Klucz wyszukiwania wskazuje plik indeksu sejfu. Klucz opakowujący go otwiera.
W indeksie znajduje się losowy 256-bitowy klucz główny sejfu. HKDF wyprowadza z niego osobne podklucze dla plików, miniatur i indeksu. Żaden klucz nie służy dwóm celom.
Jak szyfrowane są pliki?
Małe elementy, takie jak miniatury i indeks, są zamykane w całości przez AES-256-GCM z losowym nonce.
Duże pliki używają układu STREAM w porcjach po 1 MB. Każda porcja ma własny nonce i zapisuje swoją pozycję oraz to, czy jest ostatnia. Wycięcie, przestawienie lub podmiana porcji sprawia, że odszyfrowanie się nie uda.
GCM uwierzytelnia też każdy nagłówek, więc zmieniony plik jest odrzucany, a nie wyświetlany.
Jak ukrywane są rozmiary i liczba sejfów?
Każdy mały blok danych i każda ostatnia porcja pliku są wyrównywane do wielokrotności 64 KiB. Ktoś, kto je skopiuje, widzi przybliżone rozmiary, nie dokładne.
Nie ma listy sejfów. Aplikacja trzyma co najmniej 8 miejsc o kształcie indeksu, prawdziwych i wabików, a wabiki losuje na nowo przy każdym zapisie. Wzór, który nie wskazuje żadnego miejsca, otwiera pusty sejf.
Jak działa odzyskiwanie?
Każdy sejf dostaje 9-wyrazową frazę odzyskiwania, czyli 96 bitów losowości. Otwiera ona osobną kopię odzyskiwania sejfu, zamkniętą kluczem utworzonym z frazy.
Kopia w iCloud odzwierciedla zaszyfrowane pliki w niezmienionej postaci. Domyślnie nie zawiera sekretu urządzenia, więc sama kopia nie wystarczy do zgadywania wzorów.
Co jest szyfrowane, a co nie?
Szyfrowane: zdjęcia, filmy, pliki, notatki, miniatury, nazwy, foldery, ulubione, rozpoznany tekst i lokalizacje zdjęć. Mały plik, który śledzi wabiki i liczniki planu darmowego, jest zamknięty kluczem urządzenia.
Nieszyfrowane przez Cryptile:
- Ustawienia. Czas automatycznej blokady, kolejność sortowania i przełącznik kopii nie zawierają sekretów.
- Udostępnione elementy czekające na dodanie. Do otwarcia sejfu chroni je ochrona plików iOS.
- Łączny rozmiar kontenera i czasy zapisu. Sejf o rozmiarze 10 GB nie wygląda jak 10 MB.
- Wszystko, co wyeksportujesz. Kopia zapisana w Zdjęciach lub Plikach jest poza sejfem.
Przed czym to chroni?
- Przed kimś, kto kopiuje pliki aplikacji bez Twojego Keychain. Dostaje szyfrogram i nie może próbować wzorów.
- Przed Apple lub wyciekiem w Apple. iCloud przechowuje szyfrogram i żadnych kluczy.
- Przed manipulacją. Zmienione lub przestawione dane nie dadzą się odszyfrować.
- Przed nami. Nie prowadzimy serwera i nie mamy kluczy, więc nie możemy zresetować dostępu.
Przed czym to nie chroni?
- Przed krótkimi wzorami. Wzór jest słabszy niż hasło. Mając Twoje pliki i Twój Keychain, wzór z 6 pól na siatce 4×4 pada w kilka minut na GPU. Użyj co najmniej 8 pól.
- Przed złośliwym oprogramowaniem na odblokowanym telefonie. Kod, który czyta pamięć, gdy sejf jest otwarty, jest poza zasięgiem każdej aplikacji.
- Przed kimś, kto patrzy, jak rysujesz. Rysuj tam, gdzie nikt nie widzi Twojej ręki.
- Przed utratą telefonu i frazy. Sejf przepada. Nie ma resetu.
Wzór paniki w Plus niszczy sekret urządzenia, więc żaden sejf na telefonie się nie otworzy, dopóki nie zostanie przywrócony.