Słownik

Czym jest Key Wrapping?

Key wrapping to operacja kryptograficzna, która szyfruje klucz (klucz ładunku) za pomocą innego klucza (klucza opakowującego lub klucza szyfrowania kluczy), zapewniając poufność i integralność materiału klucza podczas przechowywania lub transportu.

Znane również jako: key wrap, AES-KW, key encryption key

Key wrapping rozwiązuje praktyczny problem w systemach kryptograficznych: jak chronić same klucze szyfrujące? Jeśli klucz szyfrowania danych jest przechowywany w postaci jawnej, każda osoba mająca dostęp do miejsca przechowywania może go użyć. Key wrapping rozwiązuje to przez zaszyfrowanie klucza danych osobnym kluczem opakowującym — tworzy hierarchię kluczy, w której dostęp do zaszyfrowanych danych wymaga jednoczesnego posiadania opakowanego klucza i środków do jego rozpakowania.

AES-KW (AES Key Wrap, zdefiniowany w RFC 3394) to najpowszechniej stosowany algorytm key wrappingu. W odróżnieniu od ogólnych trybów szyfrowania AES-KW jest zaprojektowany specjalnie do opakowywania materiału klucza. Zapewnia zarówno poufność, jak i integralność — jeśli klucz opakowujący jest błędny lub opakowane dane zostały zmodyfikowane, operacja rozpakowania kończy się niepowodzeniem zamiast produkować błędny materiał klucza. Ta kontrola integralności jest krytyczna, ponieważ cichy błędny klucz prowadziłby do odszyfrowania danych w postać śmieciową bez żadnego komunikatu o błędzie.

Key wrapping jest fundamentem systemów zarządzania kluczami, HSM-ów (sprzętowych modułów bezpieczeństwa) i schematów szyfrowania kopertowego stosowanych przez dostawców chmury. W szyfrowaniu kopertowym dane są szyfrowane kluczem danych, a klucz danych jest opakowywany kluczem głównym. Ten wzorzec umożliwia efektywną rotację kluczy — gdy zmienia się klucz główny, wystarczy ponownie zaszyfrować tylko małe opakowane klucze, nie cały zestaw danych.

Wrap a data key with a passphrase

A random AES-256 data key gets encrypted by a wrapping key derived from your passphrase via PBKDF2. Change the unwrap passphrase to see AES-KW reject the wrong key cleanly.

Data key (AES-256, what actually encrypts your secret)
 
Wrapped key (what gets stored / shared)
 
Salt (random per wrap, fed to PBKDF2)
 
Try matching and mismatching the unwrap passphrase to compare outcomes.

This is exactly the flow Vaulted runs when you set a passphrase. The wrapping key never leaves your browser; only the wrapped key and salt travel — in the URL fragment, so the server sees neither.

Jak Vaulted używa Key Wrapping

Vaulted używa AES-KW key wrappingu, gdy dla sekretu ustawiona jest passphrase. Przepływ działa następująco: przeglądarka generuje losowy klucz AES-256-GCM do zaszyfrowania sekretu, a następnie wyprowadza klucz opakowujący z passphrase za pomocą PBKDF2. Klucz AES-256-GCM jest opakowywany (szyfrowany) przy użyciu AES-KW z wyprowadzonym kluczem opakowującym. Opakowany klucz, sól i IV są osadzane we fragmencie URL. Odbiorca wpisuje passphrase, ponownie wyprowadza klucz opakowujący przez PBKDF2, rozpakowuje klucz AES-256-GCM i odszyfrowuje sekret.