Model zagrożeń

Przed czym ta aplikacja chroni — i przed czym nie

Obietnica bezpieczeństwa bez podanych granic to reklama. Ta strona podaje jedno i drugie.

Co dzieje się na urządzeniu

Wszystkie wpisy leżą w jednym zaszyfrowanym pliku w telefonie. Klucz do niego powstaje od nowa przy każdym odblokowaniu i zaraz potem jest kasowany. Nie jest nigdzie zapisywany, nigdzie wysyłany i poza tą chwilą nie istnieje.

Wyprowadzanie klucza

Z hasła albo z plików klucza powstaje klucz przez Argon2id — funkcję pamięciowo-trudną. Praktyczna różnica wobec starszych rozwiązań: kto chce zgadywać hasło, potrzebuje na każdą próbę nie tylko czasu procesora, ale i pamięci. To właśnie czyni kosztownymi te ataki, które inaczej idą masowo i równolegle na kartach graficznych.

Parametry kosztu zapisane są w samym pliku. Istniejący sejf otwiera się zawsze dokładnie tymi wartościami, którymi został zapieczętowany — późniejsze ich podniesienie nie unieważnia starszych sejfów.

Szyfrowanie danych

Zawartość jest szyfrowana i uwierzytelniana algorytmem AES-256: plik zmieniony po zapisie zostaje rozpoznany jako naruszony, a nie otwarty po połowie jako uszkodzony. Nagłówek pliku też jest chroniony, więc nikt nie podmieni w nim parametrów niezauważenie.

Wiązanie z miejscem

Sejf można związać z miejscem. Klucz powstaje wtedy z Twoich czynników oraz z tego miejsca. To nie jest sprawdzenie, które wykonuje aplikacja i które można by jej wyperswadować — poza miejscem po prostu nie ma klucza, który trzeba by zatrzymać. Zmieniona wersja aplikacji ani podstawiona lokalizacja nic tu nie dają.

W pliku nie ma przy tym żadnych współrzędnych: ani miejsca, ani promienia, ani nawet informacji o tym, że sejf w ogóle jest z czymś związany.

Dwa sejfy w jednym pliku

Kontener zawsze ma dwa miejsca. Jeśli używasz jednego, drugie jest wypełnione losowym kluczem, którego nikt nie zna — my również. Z zewnątrz oba mają ten sam rozmiar i tę samą budowę.

Granice

Część, którą strony produktowe zwykle pomijają.

Miejsce ma niską entropię

Wiązanie z miejscem pomaga przeciw komuś, kto zdobył kopię zapasową i nie wie, gdzie miałby stanąć. Przeciw komuś, kto trzyma Twój telefon i wie, w jakim mieszkasz mieście, pomaga niewiele: przestrzeń poszukiwań jest wtedy mała. To czynnik dodatkowy do mocnego hasła — nie jego zamiennik.

Bez miejsca potrzebny jest kod awaryjny

Kto wiąże sejf z miejscem, dostaje przy zakładaniu jednorazowo pokazany kod awaryjny. Zastępuje on miejsce, a nie hasło — znaleziona kartka nie jest sejfem. Bez kodu i bez dostępu do miejsca sejf jest zamknięty ostatecznie.

Przejęty telefon jest stracony

Szyfrowanie chroni plik, nie działający system. Złośliwe oprogramowanie z szerokimi uprawnieniami na odblokowanym urządzeniu widzi to, co Ty. Żadna aplikacja tego nie powstrzyma i nie twierdzimy inaczej.

Biometria to wygoda

Odcisk palca jest skrótem na tym jednym urządzeniu, a nie czynnikiem kryptograficznym. Hasło albo pliki klucza otwierają sejf zawsze; biometria wyłącznie dodatkowo i wyłącznie tutaj.

Brak niezależnego audytu

Ta konstrukcja nie była dotąd sprawdzana z zewnątrz. Opisujemy tu, jak działa, żebyś mógł ją ocenić — ale opublikowany raport z audytu to co innego niż oświadczenie autora, i dopóki go nie ma, mówimy o tym wprost.

Sieć

W normalnej pracy aplikacja z nikim nie rozmawia. Nie ma konta, serwera ani synchronizacji.

Z internetu korzysta jedna jedyna funkcja i tylko wtedy, gdy ją włączysz: opcjonalny znacznik czasu dla zdjęć robionych w aplikacji. Urządzenie opuszcza wtedy wyłącznie skrót SHA-256 obrazu, nigdy sam obraz. Ze skrótu nie da się odtworzyć zdjęcia.

Kapsuły czasowe

Notatkę w sejfie można zamienić w kapsułę czasową: nie otworzy się przed wybraną chwilą — także dla Ciebie. Decyduje o tym nie aplikacja i nie zegar telefonu, tylko podpis, którego wcześniej po prostu nie ma.

Klucz notatki jest dzielony metodą Shamira na trzy udziały, z których wystarczą dwa: jeden uwalnia publiczna sieć losowości drand, drugi serwer klucza beattime.live, a trzeci zostaje u Ciebie jako kod awaryjny. Każdy udział jest zaszyfrowany na tę samą chwilę i żaden beacon nie wyda go wcześniej. Ponieważ wystarczą dwa z trzech, zniknięcie jednej strony nie odbiera Ci notatki.

Pieczętowanie nie wymaga sieci. Parametry łańcucha są wpisane na stałe, a pieczętuje się kluczami publicznymi. Połączenie jest potrzebne dopiero do otwarcia, bo wtedy trzeba pobrać uwolniony podpis — od nas, z kopii, skądkolwiek: to informacja publiczna, sprawdzana lokalnie wobec klucza zapisanego w kapsule.

Czego to nie obiecuje: gdyby oba beacony zniknęły na dobre, zostaje wyłącznie kod awaryjny. I kapsuła chroni treść, a nie fakt jej istnienia — kto widzi Twój otwarty sejf, widzi, że notatka czeka i kiedy się otworzy.

Notatki związane z miejscem

Niezależnie od tego notatkę można związać z miejscem. Jej klucz powstaje z pola siatki, w którym stałeś przy pieczętowaniu; gdzie indziej nie istnieje. Nic z tego nie jest zapisywane — ani współrzędne, ani pole, ani promień. Oba warunki można połączyć: notatka może wymagać chwili i miejsca. Tu również jest kod awaryjny, pokazywany raz i nigdzie nieodkładany.