Zaktualizowano

Dlaczego szyfrowanie po stronie klienta ma znaczenie przy udostępnianiu sekretów

Autor:

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:

  1. Wpisujesz swój sekret w formularz
  2. Twoja przeglądarka wysyła plaintext do serwera
  3. Serwer szyfruje go i przechowuje ciphertext
  4. 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:

  1. Wpisujesz swój sekret w formularz
  2. Twoja przeglądarka generuje klucz szyfrowania AES-256-GCM i szyfruje sekret lokalnie
  3. Na serwer wysyłany jest wyłącznie zaszyfrowany ciphertext
  4. 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