Dlaczego szyfrowanie po stronie klienta ma znaczenie przy udostępnianiu sekretów
Autor: Maxim Novak
Szyfrowanie po stronie klienta ma kluczowe znaczenie przy bezpiecznym udostępnianiu sekretów, ponieważ zapewnia, że serwer nigdy nie widzi twoich danych w postaci jawnej (plaintext). Przy szyfrowaniu po stronie serwera usługa może odczytać twoje sekrety – podobnie jak każdy, kto skompromituje jej infrastrukturę. Narzędzia po stronie klienta, takie jak Vaulted, szyfrują dane w twojej przeglądarce za pomocą AES-256-GCM, zanim cokolwiek zostanie wysłane.
Problem z szyfrowaniem po stronie serwera
Tradycyjne narzędzia do udostępniania sekretów działają według następującego schematu:
- Wpisujesz swój sekret w formularz
- Twoja przeglądarka wysyła plaintext do serwera
- Serwer szyfruje go i przechowuje ciphertext
- Generowany jest link dla odbiorcy
Problem leży w kroku 2. Twój sekret przesyłany jest przez sieć w postaci jawnej (chroniony przez TLS, ale w pełni widoczny dla serwera). Usługa ma dostęp do twoich danych, choćby tylko przez chwilę.
Oznacza to:
- Skompromitowany serwer ujawnia każdy sekret w tranzycie – naruszenie danych tylko czekające, aż nastąpi
- Pracownicy usługi mogliby teoretycznie uzyskać dostęp do twoich danych
- Organy ścigania lub wnioski prawne mogłyby zmusić usługę do ujawnienia sekretów
- Logi serwera mogą przypadkowo przechwycić dane w postaci jawnej
Jak szyfrowanie po stronie klienta rozwiązuje ten problem
Vaulted stosuje inne podejście. Szyfrowanie odbywa się w całości w twojej przeglądarce:
- Wpisujesz swój sekret w formularz
- Twoja przeglądarka generuje klucz szyfrowania AES-256-GCM i szyfruje sekret lokalnie
- Na serwer wysyłany jest wyłącznie zaszyfrowany ciphertext
- Klucz szyfrowania umieszczany jest we fragmencie URL (
#), który przeglądarki nigdy nie wysyłają do serwerów
Serwer widzi wyłącznie zaszyfrowane dane. Nie może odszyfrować twojego sekretu, ponieważ nigdy nie posiada klucza.
Dlaczego fragment URL ma znaczenie
Fragment URL – wszystko po symbolu # – ma szczególną właściwość: przeglądarki nie dołączają go do żądań HTTP. Gdy ktoś otwiera twój link Vaulted, fragment pozostaje w przeglądarce tej osoby. Serwer otrzymuje żądanie o identyfikator sekretu, ale nigdy nie widzi klucza deszyfrowania.
To nie jest niestandardowy protokół ani obejście. Tak przeglądarki działają od zawsze, zgodnie ze specyfikacją RFC 3986.
Co to oznacza w praktyce
Dzięki szyfrowaniu po stronie klienta, nawet gdyby serwery Vaulted zostały całkowicie skompromitowane, atakujący otrzymałby jedynie zaszyfrowane bloki danych – bezużyteczne bez kluczy, które istnieją wyłącznie w udostępnionych linkach. To jest podstawowa zasada architektury zero-knowledge.
Żadnego zaufania nie wymaga. Kryptografia mówi sama za siebie.
Chcesz bezpiecznie udostępnić sekret? Wypróbuj Vaulted – to bezpłatne.
Powiązane
- Czym jest szyfrowanie po stronie klienta? — pełna definicja w słowniku
- Plac zabaw szyfrowania — obserwuj szyfrowanie AES-256-GCM krok po kroku
- Czym jest architektura zero-knowledge? — dlaczego serwer nigdy nie może odczytać twoich danych