Słownik

Czym jest Szyfrowanie po stronie klienta?

Szyfrowanie po stronie klienta to praktyka szyfrowania danych na urządzeniu użytkownika — zazwyczaj w przeglądarce lub natywnej aplikacji — przed ich przesłaniem na serwer, dzięki czemu serwer zawsze odbiera i przechowuje wyłącznie zaszyfrowane dane.

Szyfrowanie po stronie klienta to mechanizm techniczny umożliwiający budowę systemów zero-knowledge i end-to-end. Dzięki wykonywaniu szyfrowania przed opuszczeniem urządzenia użytkownika przez dane, tekst jawny nigdy nie przechodzi przez sieć i nie istnieje na serwerze. Chroni to jednocześnie przed przechwyceniem sieciowym, naruszeniami po stronie serwera i zagrożeniami wewnętrznymi.

W aplikacjach webowych szyfrowanie po stronie klienta zazwyczaj opiera się na Web Crypto API — natywnym dla przeglądarki interfejsie do operacji kryptograficznych. Jest ono preferowane względem bibliotek kryptograficznych w JavaScript, ponieważ Web Crypto API uruchamia skompilowany kod natywny, jest odporne na ataki timing i korzysta z akceleracji sprzętowej na nowoczesnych urządzeniach.

Podstawowym kompromisem szyfrowania po stronie klienta jest to, że serwer nie może przetwarzać ani przeszukiwać zaszyfrowanych danych. Funkcje takie jak wyszukiwanie po stronie serwera, analiza treści czy transformacja danych stają się niemożliwe, ponieważ serwer genuinely nie może odczytać danych. W przypadku udostępniania sekretów ten kompromis jest idealny — serwer musi jedynie przechować dane i egzekwować reguły dostępu, a nie rozumieć treści.

Jak Vaulted używa Szyfrowanie po stronie klienta

Każdy sekret udostępniany przez Vaulted jest szyfrowany po stronie klienta przy użyciu Web Crypto API, zanim przeglądarka wykona jakiekolwiek żądanie sieciowe. Przeglądarka generuje losowy klucz AES-256-GCM, szyfruje tekst jawny i wysyła na serwer wyłącznie powstały szyfrogram i IV. Klucz szyfrowania jest umieszczany we fragmencie URL, który przeglądarka nigdy nie dołącza do żądań HTTP. Oznacza to, że tekst jawny istnieje wyłącznie w pamięci przeglądarki nadawcy i odbiorcy — nigdy w sieci, nigdy na serwerze.