Architektura bezpieczeństwa: Pełny stos techniczny

Vaultaire nie opiera się na jednym algorytmie ani jednej sprytnej sztuczce. Wykorzystuje warstwową architekturę kryptograficzną, w której każdy komponent ma określone zadanie, a awaria którejkolwiek z warstw nie zagraża pozostałym. Oto każdy szyfr, protokół i decyzja projektowa, która stoi między Twoimi prywatnymi danymi a resztą świata. Stos zabezpieczeń

Vaultaire używa AES-256-GCM do uwierzytelnionego szyfrowania indeksów skarbca, kluczy opakowanych, nagłówków plików, treści, miniatur i metadanych. PBKDF2-HMAC-SHA512 wyprowadza klucz magazynu lokalnego ze wzorca i całego urządzenia Keychain sól. Ten klucz skarbca otacza oddzielny losowy 256-bitowy klucz główny, który wykonuje szyfrowanie plików CryptoKit w procesie aplikacji.

Stos kryptograficzny

Vaultaire wykorzystuje kilka współpracujących mechanizmów kryptograficznych, każdy wybrany do określonego zadania. PBKDF2 zamienia ludzkie dane uwierzytelniające w skarbiec lub klucz odzyskiwania. AES-256-GCM chroni indeksy, opakowania, metadane, miniatury i zawartość plików. Losowy klucz główny oddziela długotrwałe szyfrowanie plików od zmieniającego się wzorca. Keychain i iOS Ochrona danych chroni zapisy dotyczące soli i odzyskiwania powiązane z urządzeniem, gdy urządzenie jest zablokowane. Żaden klucz deszyfrujący przechowywany przez dostawcę nie zapewnia programiście rutynowego dostępu do zwykłego tekstu skarbca.

Nie jest to złożoność sama w sobie. Każda warstwa adresuje inną powierzchnię ataku. AES-256-GCM łączy poufność z uwierzytelnianiem, więc zmodyfikowany tekst zaszyfrowany nie podlega weryfikacji. PBKDF2 podnosi koszt testowania każdego wzorca lub frazy. Losowy klucz główny oznacza, że ​​zmiana wzorca może spowodować ponowne zawinięcie jednego klucza zamiast ponownego szyfrowania każdego pliku. Keychain ochrona danych strzeże lokalnych zapisów dotyczących soli i odzyskiwania, podczas gdy aplikacja nadal potwierdza, że szyfrowanie symetryczne odbywa się w pamięci procesowej.

Warstwy te tworzą razem architekturę głębokiej obrony, ale nie wszystkie stanowią niezależne bariery. Odgadnięty wzór można sprawdzić pod kątem nazwy pliku indeksu i AES-GCM uwierzytelnianie, a zhakowane odblokowane urządzenie może obserwować klucze lub zwykły tekst w procesie aplikacji. Dlatego architektura zależy od entropii poświadczeń, PBKDF2 koszt, iOS ochrona urządzenia i poprawna obsługa uwierzytelnionego szyfrowania, a także siła samego AES.

Obrona w głębi

Pomyśl o hierarchii Vaultaire jako o zestawie zagnieżdżonych zamkniętych kontenerów. Pochodzące ze wzoru klucz do skarbca otwiera uwierzytelniony indeks. Indeks uwalnia opakowany losowo klucz główny. Ten klucz główny chroni pliki i metadane. PBKDF2, AES-GCM, Keychain, i iOS Ochrona danych ma różne właściwości, ale zapewnienie bezpieczeństwa jest tak silne, jak cały łańcuch.

AES-256-GCM: Szyfrowanie plików

Każde zdjęcie, film i dokument przechowywane w Vaultaire są szyfrowane AES-256-GCM — Advanced Encryption Standard z 256-bitowym kluczem Tryb Galois/Licznika. Vaultaire również używa AES-GCM dla indeksów skarbca, nagłówków plików, miniatur i kopert kluczy. Algorytm i rozmiar klucza są ustandaryzowane; Bezpieczeństwo Vaultaire w dalszym ciągu zależy od obsługi jednorazowych danych, zarządzania kluczami, siły poświadczeń i poprawności implementacji.

Wartość “256” w AES-256 odnosi się do długości klucza w bitach. Klucz 256-bitowy ma 2256 możliwych wartości. Dla porównania: jest ich około 1080 atomów w obserwowalnym wszechświecie. Gdyby każdy atom był superkomputerem testującym miliard kluczy na sekundę, działającym od Wielkiego Wybuchu, zbadałby mniej niż jedną bilionową z bilionowej części jednego procenta przestrzeni klucza. AES-256 nie będzie brutalnie wymuszane. Nie dzisiaj. Nie w tym stuleciu. Nie zanim gwiazdy się wypalą.

Dlaczego tryb GCM ma znaczenie

AES to szyfr blokowy; szyfruje dane w 128-bitowych fragmentach. “mode” określa sposób łączenia tych fragmentów. GCM (tryb Galois/Counter) zapewnia dwie funkcje, których nie zapewniają prostsze tryby, takie jak CBC: szyfrowanie równoległe i wbudowane uwierzytelnianie.

Element uwierzytelniający jest krytyczny. GCM generuje znacznik kryptograficzny dla każdego zaszyfrowanego pliku. Ta etykieta pełni funkcję plomby zabezpieczającej. Jeśli nawet pojedynczy bit tekstu zaszyfrowanego zostanie zmodyfikowany, przez złośliwego aktora lub uszkodzony sektor dysku, znacznik uwierzytelniający nie będzie zgodny i deszyfrowanie zakończy się niepowodzeniem. Nie otrzymasz uszkodzonych danych. Otrzymujesz wyraźny sygnał, że coś jest nie tak. Ta właściwość nazywa się szyfrowaniem uwierzytelnionym i zapobiega całej klasie ataków, w których przeciwnik modyfikuje zaszyfrowane dane w celu manipulowania odszyfrowanymi danymi wyjściowymi.

PBKDF2: Wyprowadzanie klucza

Vaultaire wyprowadza różne klucze do różnych zadań. Wzór i całe urządzenie Keychain pasza solna PBKDF2-HMAC-SHA512 dla 600 000 iteracji w celu wygenerowania lokalnego klucza skarbca. Deterministyczne wyprowadzenie wzorca tworzy oddzielny klucz zapasowy w chmurze. Znormalizowana fraza odzyskiwania przebiega przez 800 000 PBKDF2 iteracje w celu wygenerowania klucza dla koperty odzyskiwania. Żadne z tych wyprowadzeń nie zamienia ludzkiego uwierzytelnienia w 256 bitów entropii tylko dlatego, że dane wyjściowe mają długość 256 bitów.

Jak PBKDF2 chroni Twój wzór

Podstawowa idea PBKDF2 to celowa praca. Pobiera serializowany wzór lub znormalizowaną frazę i uruchamia setki tysięcy HMAC-SHA512 iteracje. Uprawniony użytkownik płaci ten koszt raz podczas próby odblokowania lub odzyskania. Osoba atakująca płaci za każdego kandydata, choć rzeczywisty współczynnik zgadywania zależy od równoległych wyborów sprzętu i implementacji.

Vaultaire konfiguruje PBKDF2 z 600 000 iteracji dla kluczy opartych na wzorach. To sprawia, że ​​każde przypuszczenie jest droższe, ale szacunkowa ocena odpowiedzialnego ataku musi zawierać zmierzony czas trwania każdego kandydata i założenia dotyczące sprzętu. Przy dokładnie 1 ms na kandydata 1 000 000 000 seryjnych domysłów zajmuje około 11,6 dni, a nie lat. Wynik 256-bitowy nie rozszerza entropii przewidywalnego wzorca.

Wyprowadzenie wzorca lokalnego wykorzystuje jedną kryptograficznie losową sól dla urządzenia, przechowywaną jako WhenUnlockedThisDeviceOnly Keychain przedmiot. Sól nie jest tajna i jest udostępniana przez skarbce na tym urządzeniu. Zapobiega to bezpośredniemu zastosowaniu tabeli utworzonej dla jednego urządzenia do innego urządzenia z inną solą, ale nie zmusza atakującego do rozpoczynania od nowa dla każdego skarbca na tym samym urządzeniu.

256-bitowy Długość klucza szyfrującego
6
Warstwy kryptograficzne
0
Klucze przechowywane na serwerach

AES-256-GCM: Ochrona metadanych

Szyfrowanie zawartości pliku nie wystarczy. Nazwy plików, daty utworzenia, wymiary miniatur i struktura skarbca to metadane, a metadane mogą być równie odkrywcze jak same dane. Plik o nazwie “tax-return-2025.pdf” informuje atakującego dokładnie, co znajduje się w środku, nawet jeśli zawartość jest zaszyfrowana. Sygnatura czasowa pokazuje, kiedy korzystałeś ze skarbca. Rozmiar miniatury pokazuje, czy jest to zdjęcie, czy film.

Vaultaire chroni te metadane za pomocą AES-256-GCM, a nie ChaCha20. Nazwy plików i MIME typy są kodowane w zaszyfrowanych nagłówkach plików. Zaszyfrowany indeks skarbca zawiera rekordy plików, daty, informacje o rozmiarze, układ przechowywania i opakowany klucz główny. Dane miniatur są również szyfrowane pod losowym kluczem głównym.

Dlaczego uwierzytelnione szyfrowanie metadanych?

Metadane wymagają integralności i poufności. AES-GCM tworzy znacznik uwierzytelniający dla każdej zaszyfrowanej wartości, dzięki czemu Vaultaire może odrzucić zmodyfikowany nagłówek, indeks, miniaturę lub kopertę zamiast akceptować zwykły tekst kontrolowany przez osobę atakującą. Projekt celowo wykorzystuje jedną konstrukcję uwierzytelnionego szyfrowania w tych formatach przechowywania, zamiast twierdzić, że różnorodność kryptograficzna nie zapewnia tej implementacji.

Ten sam szyfr nie oznacza, że ten sam klucz lub ten sam klucz jest ponownie używany na ślepo. Klucz skarbca chroni indeks i otacza losowy klucz główny; klucz główny chroni materiał pliku. CryptoKit tworzy uwierzytelnione zapieczętowane pudełka ze świeżymi wartościami jednorazowymi, podczas gdy format przesyłania strumieniowego Vaultaire wyprowadza odrębną wartość jednorazową dla każdej zamówionej porcji. Odpowiednie gwarancje pochodzą z separacji kluczy, dyscypliny jednorazowej i uwierzytelnienia, a nie z drugiego szyfru metadanych.

Architektura wiedzy zerowej

Oto pytanie, które warto zadać w odniesieniu do dowolnej aplikacji zabezpieczającej: co się stanie, jeśli firma, która za nią stoi, zostanie zhakowana, wezwana do sądu lub po prostu stanie się złośliwa?

W przypadku większości aplikacji odpowiedź jest niewygodna. Przechowują Twoje dane, klucze lub jedno i drugie. Nakaz sądu nakazuje im je oddać. Naruszenie danych ujawnia to. Dostęp do niego uzyskuje nieuczciwy pracownik. Bezpieczeństwo aplikacji ’ jest tak silne, jak bezpieczeństwo operacyjne firmy ’, a historia pokazuje, że firmy są regularnie naruszane.

Vaultaire nie obsługuje konta ani usługi przechowywania, która otrzymuje Twój wzór, tajne frazy, klucze odszyfrowujące lub czytelną zawartość skarbca. Szyfrowanie i deszyfrowanie odbywa się w procesie aplikacji na Twoim urządzeniu. Kiedy iCloud kopia zapasowa jest włączona, aplikacja wysyła uwierzytelniony tekst zaszyfrowany do wiadomości prywatnej CloudKit bazy danych, a nie do usługi skarbca kontrolowanej przez Vaultaire.

Co oznacza wiedza zerowa w praktyce

Jeśli organ ścigania prześle Vaultaire wezwanie do sądu z żądaniem zwykłego tekstu skarbca, firma nie posiada wzoru, frazy odzyskiwania, klucza skarbca, klucza zapasowego ani klucza głównego potrzebnych do jego odszyfrowania. Zaszyfrowane iCloud zapisy żyją w użytkowniku CloudKit prywatna baza danych. Jednak na urządzeniu materiał do odzyskiwania jest przechowywany w postaci zaszyfrowanej Keychain baza danych, a klucze symetryczne istnieją w pamięci aplikacji CryptoKit szyfruje lub deszyfruje otwarty skarbiec.

Ta granica dostawcy jest właściwością architektury, a nie obietnicą, że każda część środowiska klienta znajduje się poza modelem zaufania. Vaultaire nie przechowuje klucza deszyfrującego po stronie serwera, który mógłby przekazać w celu rutynowego odzyskania skarbca. Dostarczona aplikacja, iOS, odblokowane urządzenie i implementacja kryptograficzna mogą nadal przetwarzać czytelne dane i należy im odpowiednio ufać.

Nie ufaj nikomu, Zgodnie z projektem

Granica dostawcy Vaultaire usuwa posiadany przez firmę klucz deszyfrujący z normalnego projektu. To ogranicza ryzyko ujawnienia samego naruszenia Vaultaire. Nie usuwa to konieczności zaufania wysłanemu klientowi, iOS, stan urządzenia lub implementacja udokumentowanej hierarchii kluczy. Granice te należy oceniać osobno, a nie skupiać się na absolutnej obietnicy.

Keychain oraz granicę procesu aplikacji

Apple Secure Enclave może chronić obsługiwane klucze prywatne i uczestniczy w częściach architektury bezpieczeństwa platformy, ale jej publiczne interfejsy API nie akceptują arbitralnych PBKDF2-wyprowadzony klucz symetryczny i wykonaj klucz Vaultaire'a AES-GCM operacje na plikach wewnątrz koprocesora. Dlatego Vaultaire nie opisuje swojego szyfru skarbcowego jako Secure Enclave AES.

Vaultaire używa zwykłego iOS Keychain elementy hasła ogólnego dla losowej soli urządzenia, zaszyfrowanej bazy danych odzyskiwania i losowego klucza chroniącego tę bazę danych. Te elementy korzystają z klasy dostępności WhenUnlockedThisDeviceOnly. Keychain i ochrona danych tworzą znaczącą granicę urządzenia, szczególnie gdy telefon jest zablokowany, ale ta architektura różni się od architektury nieeksportowalnej Secure Enclave klucz.

Kiedy rysujesz wzór, CommonCrypto wyprowadza klucz skarbca w procesie aplikacji. CryptoKit i CryptoEngine firmy Vaultaire następnie wykorzystują w tym procesie bajty klucza symetrycznego do uwierzytelniania i odszyfrowywania indeksu, rozpakowywania klucza głównego i przetwarzania plików. Aplikacja kasuje stan aktywny po zablokowaniu, ale wystarczająco uprzywilejowany atakujący obserwujący odblokowaną sesję ma inne możliwości niż egzaminator posiadający tylko tekst zaszyfrowany na zablokowanym urządzeniu.

System operacyjny po jailbreaku lub w inny sposób zagrożony może atakować wprowadzane wzorce, pamięć aplikacji, odszyfrowane podglądy, eksporty lub ekran. Vaultaire zaleca wersję aktualną, bez jailbreaka iPhone ponieważ projekt opiera się na iOS izolacja procesu, Keychaini Ochrona danych. Nie twierdzi, że naruszenie uprawnień roota powoduje, że klucze symetryczne otwartego skarbca stają się niedostępne.

Wektory inicjujące dla poszczególnych plików

Kiedy szyfrujesz dwa identyczne pliki tym samym kluczem, naiwna implementacja dałaby identyczny tekst zaszyfrowany. To jest problem. Osoba atakująca, która widzi dwa identyczne zaszyfrowane obiekty BLOB, wie, bez odszyfrowywania czegokolwiek, że dwa oryginalne pliki są takie same. W skarbcu pełnym zdjęć tego rodzaju analiza wzorców może ujawnić informacje nawet poprzez szyfrowanie.

Vaultaire zapobiega deterministycznemu tekstowi zaszyfrowanemu, generując dla każdego nową kryptograficzną wartość jednorazową AES-256-GCM operacja uszczelniania. Nagłówki plików i zawartość plików są zapieczętowane oddzielnie, a duże pliki korzystają z uwierzytelnionego formatu przesyłania strumieniowego z losową bazową wartością jednorazową i odrębną wartością jednorazową dla każdej uporządkowanej porcji. Dlatego dwie kopie tego samego zdjęcia nie dają tej samej zaszyfrowanej reprezentacji.

Wartości jednorazowe są przechowywane wraz z zaszyfrowanym tekstem i nie są tajne; ich wymogiem bezpieczeństwa jest unikalność pod danym kluczem. Vaultaire żąda 96-bitowej wartości jednorazowej od kryptograficznego generatora losowego firmy Apple w celu jednorazowego szyfrowania i rejestruje podstawową wartość jednorazową w nagłówku przesyłania strumieniowego. Ryzyko kolizji zależy od liczby szyfrowań w ramach jednego klucza, dlatego implementacja generuje nową wartość, zamiast przedstawiać rozmiar 96-bitowy jako stałą wartość jeden na dwa96 dożywotnia gwarancja.

Twój wzór
Wejście siatki 5×5
PBKDF2
KDF o wysokiej iteracji
Klucz do skarbca
Indeks + opakowanie na klucze
Losowy klucz główny
AES-GCM pliki + metadane

Zarządzanie pamięcią: Czyszczenie stanu aktywnego klucza

Częstą awarią oprogramowania zabezpieczającego jest pozostawianie wrażliwych danych w pamięci, gdy nie są już potrzebne. Klucze szyfrujące, wygenerowane hasła i odszyfrowane dane mogą pozostać w pamięci RAM długo po tym, jak aplikacja zakończy ich używanie. Narzędzia kryminalistyczne mogą zrzucać pamięć urządzenia i wyszukiwać te pozostałości; to technika znana jako atak zimnego rozruchu lub analiza zrzutu pamięci.

Vaultaire ogranicza czas dostępności stanu aktywnego klucza i odszyfrowanych danych interfejsu użytkownika. Gdy aplikacja zostanie zablokowana lub sesja zostanie przerwana, jej kod wykonuje kilka ścieżek czyszczenia:

  • Stan aktywnego skarbca został usunięty. Aplikacja usuwa bieżącą sesję klucza skarbca i wymaga ponownego odblokowania przed zaprezentowaniem zawartości skarbca.
  • Opakowania kluczy usuwają posiadane bufory. Bezpieczne kontenery bajtów Vaultaire zastępują posiadane przez siebie bufory, gdy te kontenery zostaną zwolnione.
  • Stan klucza głównego w pamięci podręcznej jest unieważniony. Odszyfrowany klucz główny przechowywany dla otwartego indeksu jest odrzucany na odpowiednich ścieżkach blokady i resetowania pamięci podręcznej.
  • Odszyfrowane pamięci podręczne interfejsu użytkownika są czyszczone, jeśli jest to kontrolowane przez Vaultaire. Czyszczenie miniatur i podglądu zmniejsza resztkowy stan aplikacji, bez przejmowania kontroli nad każdą kopią wykonaną przez Swift, iOSlub inny proces.

Następnym razem, gdy Vaultaire otworzy się w stanie zablokowanym, narysujesz wzór, a aplikacja ponownie uzyska klucz skarbca, zanim będzie mogła uwierzytelnić indeks i rozpakować klucz główny. To jest czyszczenie sesji, a nie twierdzenie, że każda przejściowa kopia pamięci została poddana możliwemu do udowodnienia wieloprzebiegowemu czyszczeniu lub że a Secure Enclave kluczowe odniesienie zostało zniszczone. Powoduje awarię iOS aby odzyskać proces, ale kod czyszczący nie może zostać uruchomiony po każdym nagłym zakończeniu.

Często zadawane pytania

Czy AES-256 jest naprawdę niezniszczalny?

AES-256 jest znormalizowanym, intensywnie analizowanym szyfrem blokowym. Brak praktycznego ataku na poprawnie wdrożone AES-256-GCM z losowym 256-bitowym kluczem jest publicznie znany, ale to nie oznacza, że całego skarbca nie da się złamać. Entropia poświadczeń, PBKDF2 koszt, obsługa jednorazowa, przechowywanie kluczy, odzyskiwanie, stan urządzenia i wady implementacyjne pozostają ścieżkami ataku.

Dlaczego warto używać PBKDF2 do wyprowadzania klucza?

Vaultaire używa PBKDF2-HMAC-SHA512 przez CommonCrypto: 600 000 iteracji dla wzorców i 800 000 dla fraz odzyskiwania. Lokalne wyprowadzenie wzorca wykorzystuje jedną losową sól przechowywaną w całym urządzeniu Keychain. PBKDF2 podnosi koszt każdego domysłu, ale nie dodaje entropii do wzorca, więc czas ataku zależy od siły poświadczeń, zmierzonej szybkości sprzętu i równoległości.

Jakie dane Vaultaire wysyła do swoich serwerów?

Brak. Vaultaire nie ma serwerów odbierających Twoje dane. Jeśli włączysz opcję tworzenia kopii zapasowych iCloud, Twoje zaszyfrowane dane będą przechowywane na Twoim osobistym koncie iCloud, zaszyfrowane zanim opuszczą Twoje urządzenie z kluczami, których Apple nie posiada. Vaultaire firma nigdy nie otrzymuje, nie przetwarza ani nie przechowuje żadnych danych użytkownika, zaszyfrowanych ani innych.

Czy jailbreak iPhone może zagrozić mojemu skarbcowi?

Jailbreak znacząco osłabia granicę urządzenia. Vaultaire’a AES-GCM operacje są uruchamiane w procesie aplikacji CryptoKit, więc bajty klucza symetrycznego istnieją w pamięci aplikacji, gdy skarbiec jest otwarty. Kompromis na poziomie głównym może dotyczyć danych wejściowych, pamięci, zrzutów ekranu lub odszyfrowanych danych wyjściowych. Keychain i Data Protection nadal stanowią bariery, gdy urządzenie jest zablokowane, ale Vaultaire nie twierdzi, że jego klucze AES pozostają wewnątrz izolowane Secure Enclave.

W jaki sposób szyfrowane są metadane?

Vaultaire nie używa ChaCha20 do metadanych skarbca. Nazwy plików, MIME typy, znaczniki czasu, dane miniatur, struktura skarbca i opakowany klucz główny są chronione AES-256-GCM uwierzytelniony tekst zaszyfrowany. Użycie jednej uwierzytelnionej konstrukcji zapewnia spójność kontroli poufności i integralności w całym formacie przechowywania.

Co stanie się z moimi kluczami, jeśli aplikacja ulegnie awarii?

iOS odzyskuje zakończony proces, a następne uruchomienie wymaga ponownego odblokowania, zanim Vaultaire przywróci stan aktywnego klucza. Vaultaire nie tworzy plików o zasięgu sesji Secure Enclave Referencje AES. Podczas gdy jego opakowania kluczy czyszczą swoje bufory podczas zwalniania alokacji, a ścieżki blokujące tracą stan aktywny, Swift i iOS nie uzasadniają gwarancji, że każda kopia przejściowa została nadpisana przed awarią.

Zobacz stos w akcji

Uwierzytelnione szyfrowanie, klucze warstwowe, kosztowne wyprowadzanie i brak klucza skarbca przechowywanego przez dostawcę. Pobierz Vaultaire, aby móc korzystać z opisanej tutaj architektury, z wyraźnie określonymi granicami urządzeń i poświadczeń.

Pobierz Vaultaire za darmo