Co to jest szyfrowanie zero-knowledge? Prosty przewodnik
Szyfrowanie zero-knowledge oznacza, że dostawca nie może uzyskać dostępu do Twoich danych.
Szyfrowanie zero-knowledge to architektura kryptograficzna, w której dostawca usługi nie może uzyskać dostępu do danych użytkownika, ponieważ klucze szyfrujące są wyprowadzane i przechowywane wyłącznie na urządzeniu użytkownika i nigdy nie są przesyłane na serwery dostawcy. W przeciwieństwie do standardowego szyfrowania w chmurze, gdzie dostawca przechowuje klucze, szyfrowanie zero-knowledge oznacza, że nawet przy nakazie sądowym, naruszeniu danych czy nieuczciwym pracowniku dostawca nie ma nic do przekazania. Wytyczne NIST dotyczące zarządzania kluczami (SP 800-57) ustanawiają zasadę, że posiadanie klucza determinuje dostęp do danych -- szyfrowanie zero-knowledge doprowadza tę zasadę do jej logicznej konkluzji.
Jak działa szyfrowanie zero-knowledge
Najprostsza analogia: sejf hotelowy, w którym tylko Ty ustawiasz kombinację, a hotel nigdy jej nie poznaje. Jeśli zapomnisz kombinacji, hotel nie może otworzyć dla Ciebie sejfu. To nie jest wada projektu. To jest projekt.
W kategoriach technicznych szyfrowanie zero-knowledge działa w trzech krokach:
Wyprowadzanie klucza na urządzeniu. Użytkownik podaje poświadczenia (hasło, frazę lub wzorzec). Funkcja wyprowadzania klucza (zazwyczaj PBKDF2 lub Argon2) łączy te poświadczenia z unikalną solą kryptograficzną, tworząc klucz szyfrujący. Dzieje się to wyłącznie na urządzeniu użytkownika.
Szyfrowanie przed transmisją. Wszystkie dane są szyfrowane na urządzeniu przy użyciu wyprowadzonego klucza, zanim opuszczą urządzenie, by trafić do przechowywania w chmurze lub kopii zapasowej. Zaszyfrowane dane (szyfrogramy) są tym, co jest przesyłane.
Dostawca nigdy nie widzi klucza. Klucz szyfrujący istnieje tylko w pamięci urządzenia podczas aktywnego użytkowania. Nigdy nie jest przesyłany na serwery dostawcy. Dostawca przechowuje zaszyfrowane dane, które są nie do odróżnienia od losowych danych.
Kluczowe ograniczenie: jeśli użytkownik straci swoje poświadczenia i nie ma frazy odzyskiwania, dane są trwale niedostępne. Nie ma przepływu „zapomniano hasła", który działa bez niezależnie przechowywanego mechanizmu odzyskiwania. Jeśli usługa oferuje reset hasła przez e-mail i Twoje dane ponownie się pojawiają, ta usługa nie używa szyfrowania zero-knowledge. Posiada Twoje klucze.
Szyfrowanie zero-knowledge a inne rodzaje szyfrowania
Termin „szyfrowanie" pojawia się w materiałach marketingowych niemal każdej usługi w chmurze. Różnice między typami są znaczące.
| Typ | Kto posiada klucz | Dostawca może odczytać dane | Przeżywa naruszenie dostawcy | Przykład |
|---|---|---|---|---|
| Brak szyfrowania | Nie dotyczy | Tak | Nie | Dropbox (standardowy poziom) |
| Szyfrowanie w tranzycie (TLS) | Dostawca | Tak (w spoczynku na jego serwerach) | Nie | Google Photos |
| Szyfrowanie po stronie serwera w spoczynku | Dostawca | Tak (posiada klucz deszyfrujący) | Częściowo (zależy od zakresu naruszenia) | iCloud (standard) |
| Szyfrowanie E2E zarządzane przez dostawcę | Dostawca generuje, użytkownik przechowuje | Technicznie nie, ale dostawca miał dostęp przy generowaniu klucza | Częściowo | iCloud Advanced Data Protection |
| Szyfrowanie zero-knowledge | Tylko użytkownik (wyprowadzane na urządzeniu) | Nie. Matematycznie niemożliwe. | Tak. Zaszyfrowane dane są bezużyteczne bez klucza użytkownika. | Signal, Proton Mail, Vaultaire |
Różnica między „szyfrowaniem w spoczynku" a „szyfrowaniem zero-knowledge" jest najczęściej mylona. Przy szyfrowaniu w spoczynku dostawca szyfruje Twoje dane na swoich serwerach przy użyciu kontrolowanych przez siebie kluczy. Chroni to przed fizyczną kradzieżą sprzętu serwerowego. Nie chroni przed odczytaniem Twoich danych przez dostawcę, wezwaniem sądowym dotyczącym danych i kluczy, ani zagrożeniem wewnętrznym. Dostawca posiada zdolność deszyfrowania.
Przy szyfrowaniu zero-knowledge dostawca nigdy nie posiada zdolności deszyfrowania. Zaszyfrowane dane na jego serwerach są dla niego równie nieprzejrzyste, jak dla każdego zewnętrznego atakującego.
Dlaczego szyfrowanie zero-knowledge ma znaczenie
Naruszenia danych dotykają co roku miliardy rekordów
Identity Theft Resource Center odnotowało 3205 naruszeń danych w Stanach Zjednoczonych w 2023 roku, dotykając około 353 milionów osób. Kiedy dostawca posiadający klucze szyfrujące zostaje naruszony, atakujący potencjalnie uzyskuje dostęp zarówno do zaszyfrowanych danych, jak i do kluczy do ich odszyfrowania. Architektura zero-knowledge całkowicie eliminuje to ryzyko. Naruszony serwer zawiera tylko szyfrogramy, których odszyfrowanie jest obliczeniowo niewykonalne.
Przymus prawny jest realnym zagrożeniem
Organy rządowe w wielu jurysdykcjach mogą zmusić dostawców do przekazania przechowywanych danych. Jeśli dostawca posiada klucze szyfrujące, musi zastosować się do nakazu. W architekturze zero-knowledge odpowiedzią dostawcy na wezwanie sądowe jest zaszyfrowany blob bezużyteczny bez poświadczeń użytkownika. Apple Advanced Data Protection dla iCloud zmierza w tym kierunku, ale zostało wprowadzone dopiero w iOS 16.2 (grudzień 2022) i nie jest domyślnie włączone.
„Zaufaj nam" nie jest architekturą bezpieczeństwa
Standardowe szyfrowanie opiera się na obietnicy dostawcy, że nie uzyska dostępu do Twoich danych. Szyfrowanie zero-knowledge zastępuje tę obietnicę matematyczną gwarancją. Dostawca nie może uzyskać dostępu do danych nawet jeśli chce, nawet jeśli pracownik okaże się nieuczciwy, nawet jeśli zostanie przejęty przez firmę z innymi wartościami dotyczącymi prywatności. Architektura wymusza to ograniczenie.
Standard NIST stojący za kryptografią
AES-256-GCM, szyfr najczęściej używany w implementacjach zero-knowledge, został ustandaryzowany przez National Institute of Standards and Technology w SP 800-38D (2007). Sam AES został wybrany przez NIST w drodze publicznego konkursu w 2001 roku, zastępując przestarzały standard DES. „256" odnosi się do długości klucza w bitach -- klucz 256-bitowy ma 2^256 możliwych wartości, liczba tak duża, że jego złamanie brutalną siłą wymagałoby więcej energii niż słońce wyprodukuje przez resztę swojego życia.
GCM (tryb Galois/licznik) dodaje uwierzytelnione szyfrowanie, co oznacza, że proces deszyfrowania wykrywa wszelkie manipulacje przy szyfrogramie. Jeśli zostanie zmieniony choćby jeden bit zaszyfrowanych danych, deszyfrowanie kończy się niepowodzeniem zamiast produkcji uszkodzonych danych. Uniemożliwia to atakującym manipulowanie zaszyfrowanymi danymi bez wykrycia.
PBKDF2 (funkcja wyprowadzania klucza opartego na haśle 2), określona w RFC 8018, przekształca poświadczenia podane przez człowieka w klucz kryptograficzny poprzez wielokrotne hashowanie. Uruchamianie funkcji hash setki tysięcy razy sprawia, że każde odgadnięcie hasła jest obliczeniowo kosztowne, przekształcając prosty wzorzec lub hasło w klucz odporny na ataki brutalnej siły.
Jak Vaultaire implementuje szyfrowanie zero-knowledge
Vaultaire to aplikacja sejfu na iPhone'a zbudowana na architekturze zero-knowledge. Oto jak działa implementacja na każdej warstwie.
Wyprowadzanie klucza. Użytkownik rysuje wzorzec na siatce 5x5 z 25 punktów. Sekwencja punktów, w kolejności, jest przekazywana do PBKDF2 z HMAC-SHA512 i unikalną solą kryptograficzną dla każdego sejfu. Wynikiem jest 256-bitowy klucz szyfrujący AES. Wzorzec nigdy nie jest przechowywany na urządzeniu. Nie jako hash, nie jako reprezentacja, nie w żadnej formie.
Szyfrowanie plików. Każdy importowany plik jest szyfrowany za pomocą AES-256-GCM przy użyciu wyprowadzonego klucza i losowo wygenerowanego wektora inicjalizacji (IV) unikalnego dla tego pliku. Identyczne pliki dają różne szyfrogramy, ponieważ IV różni się.
Szyfrowanie metadanych. Nazwy plików, daty utworzenia i dane miniatur są szyfrowane oddzielnie przy użyciu ChaCha20, innego szyfru zapewniającego kryptograficzną różnorodność i eliminującego ataki bocznym kanałem związane z czasem dostępu do pamięci podręcznej.
Zarządzanie kluczami. Apple Secure Enclave przechowuje materiał klucza w dedykowanym koprocesorze sprzętowym z własną zaszyfrowaną pamięcią. Klucze są usuwane z pamięci aplikacji, gdy Vaultaire zostaje zamknięty lub użytkownik przełącza się na inną aplikację.
Brak rejestru sejfów. Nie ma bazy danych wymieniającej sejfy, żadnej liczby, żadnych nazw. Każdy wzorzec otwiera inny sejf. Sama aplikacja nie może określić, ile sejfów istnieje. Zobacz pełną architekturę bezpieczeństwa i wyjaśnienie szyfrowania wzorcem.
Jak sprawdzić, czy aplikacja używa prawdziwego szyfrowania zero-knowledge
Trzy testy zajmujące mniej niż minutę:
Test zapomnianego hasła. Jeśli aplikacja może zresetować Twoje hasło przez e-mail i Twoje dane ponownie się pojawiają, aplikacja przechowuje Twoje klucze szyfrujące. Nie jest to zero-knowledge.
Test nowego urządzenia. Jeśli zalogujesz się na nowym urządzeniu i Twoje dane pojawiają się bez przenoszenia kluczy ze starego urządzenia lub wprowadzenia frazy odzyskiwania, serwer posiada Twoje klucze. Nie jest to zero-knowledge.
Test konta. Jeśli aplikacja wymaga adresu e-mail lub numeru telefonu, dostawca ma powiązanie między Twoją tożsamością a Twoimi danymi. Nie jest to samo w sobie dyskwalifikujące, ale w połączeniu z którymś z powyższych potwierdza, że dostawca może uzyskać dostęp do Twoich danych.
Aplikacje, które przechodzą wszystkie trzy testy: Signal, Proton Mail, Standard Notes, Vaultaire. Aplikacje, które nie przechodzą co najmniej jednego: większość usług przechowywania w chmurze, większość aplikacji „sejf" w App Store.
Najczęściej zadawane pytania
Czy szyfrowanie zero-knowledge to to samo co szyfrowanie end-to-end?
Pokrywają się, ale nie są identyczne. Szyfrowanie end-to-end (E2EE) oznacza, że dane są szyfrowane na urządzeniu nadawcy i odszyfrowywane tylko na urządzeniu odbiorcy. Szyfrowanie zero-knowledge oznacza, że dostawca nie może uzyskać dostępu do danych. Usługa może być szyfrowana end-to-end bez bycia zero-knowledge, jeśli dostawca wygenerował lub miał dostęp do kluczy w pewnym momencie. Szyfrowanie zero-knowledge jest surowszym standardem.
Co się stanie, jeśli zgubię hasło przy szyfrowaniu zero-knowledge?
Twoje dane stają się trwale niedostępne. Nie ma klucza głównego, backdoora ani procesu odzyskiwania, który działa bez osobno przechowywanej frazy odzyskiwania. To jest fundamentalny kompromis: absolutna prywatność wymaga absolutnej odpowiedzialności. Niektóre aplikacje zero-knowledge (w tym Vaultaire) generują frazę odzyskiwania przy tworzeniu sejfu, która może odtworzyć klucz szyfrujący w przypadku utraty podstawowych poświadczeń.
Czy organy ścigania mogą uzyskać dostęp do danych zaszyfrowanych zero-knowledge?
Organy ścigania mogą zmusić dostawcę do przekazania przechowywanych danych. Przy szyfrowaniu zero-knowledge dane, które dostawca przekazuje, to zaszyfrowany blob bezużyteczny bez klucza użytkownika. To, czy organy ścigania mogą zmusić użytkownika do podania klucza, to odrębne pytanie prawne, które różni się w zależności od jurysdykcji. Sądy w USA generalnie uznały, że przymusowe odblokowanie biometryczne (Face ID, odciski palców) jest dopuszczalne, podczas gdy przymusowe ujawnienie hasła/wzorca jest bardziej sporne w kontekście Piątej Poprawki.
Czy szyfrowanie zero-knowledge jest wolniejsze niż zwykłe szyfrowanie?
Operacje szyfrowania i deszyfrowania są identyczne. AES-256-GCM działa z tą samą szybkością niezależnie od tego, kto trzyma klucz. Jedynym dodatkowym kosztem jest wyprowadzanie klucza: uruchomienie PBKDF2 z setkami tysięcy iteracji zajmuje około 0,5–2 sekundy na nowoczesnym iPhonie. Dzieje się to raz przy odblokowaniu sejfu, nie przy każdym pliku. W praktyce użytkownicy nie zauważają różnicy w szybkości.
Czy zero-knowledge oznacza, że aplikacja w ogóle nie zbiera żadnych danych?
Niekoniecznie. Zero-knowledge odnosi się konkretnie do architektury szyfrowania. Dostawca nie może uzyskać dostępu do zaszyfrowanych treści. Aplikacja może nadal zbierać anonimową analitykę, raporty o awariach lub metadane użytkowania, jeśli użytkownik wyrazi na to zgodę. Czego nie może zbierać, to zawartość zaszyfrowanych plików, klucz szyfrujący ani poświadczenia użyte do jego wyprowadzenia. Polityka prywatności Vaultaire szczegółowo określa, jakie opcjonalne dane są zbierane za zgodą użytkownika.
Jak szyfrowanie zero-knowledge wypada w porównaniu z Apple Advanced Data Protection?
Apple Advanced Data Protection (ADP), wprowadzone w iOS 16.2, rozszerza szyfrowanie end-to-end na większość kategorii danych iCloud. Przy włączonym ADP Apple nie może uzyskać dostępu do chronionych danych. Kluczowe różnice w stosunku do dedykowanej aplikacji zero-knowledge: ADP jest opcjonalne (domyślnie wyłączone), wymaga Apple ID i chroni dane wyłącznie w ekosystemie Apple. Aplikacja sejfu zero-knowledge, taka jak Vaultaire, działa niezależnie od infrastruktury Apple, nie wymaga konta i dodaje funkcje, takie jak wiarygodne zaprzeczenie i tryb przymusu, których ADP nie zapewnia.
Podsumowanie
Szyfrowanie zero-knowledge to architektura, w której dostawca matematycznie nie może uzyskać dostępu do danych użytkownika, ponieważ klucze szyfrujące nigdy nie opuszczają urządzenia użytkownika. Różni się od standardowego szyfrowania, szyfrowania w spoczynku, a nawet niektórych form szyfrowania end-to-end w jeden kluczowy sposób: niemożność dostawcy dostępu do danych jest wymuszana przez matematykę, a nie politykę. Kompromis -- utrata klucza oznacza utratę danych -- nie jest błędem. To mechanizm, który sprawia, że gwarancja jest realna.