Model zagrożeń
Obietnica bezpieczeństwa bez podanych granic to reklama. Ta strona podaje jedno i drugie.
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.
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.
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.
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.
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ę.
Część, którą strony produktowe zwykle pomijają.
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.
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.
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.
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.
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.
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.
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.
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.