Słownik

Czym jest Wektor inicjalizacji?

Wektor inicjalizacji (IV) to losowa lub pseudolosowa wartość używana jako dodatkowe wejście do algorytmu szyfrowania obok klucza, zapewniająca, że identyczny tekst jawny zaszyfrowany tym samym kluczem daje różne szyfrogramy w kolejnych operacjach.

Znane również jako: IV, initialisation vector

Wektor inicjalizacji służy temu samemu podstawowemu celowi co nonce — wprowadza unikalność do każdej operacji szyfrowania. Terminy są często używane zamiennie, choć „IV" jest bardziej powszechny w kontekście trybów szyfru blokowego (CBC, GCM, CTR), podczas gdy „nonce" jest używany szerzej. W AES-GCM IV to 12-bajtowa wartość inicjalizująca licznik używany w trybie Galois/Counter Mode.

IV nie musi być tajny — zazwyczaj jest przechowywany lub przesyłany w postaci jawnej razem z szyfrogramem. Jego wkład w bezpieczeństwo wynika z unikalności, a nie tajności. Jednak zależnie od trybu szyfru, IV może wymagać nieprzewidywalności (jak w trybie CBC) lub jedynie unikalności (jak w trybie GCM). Użycie przewidywalnego IV z trybem CBC umożliwia specyficzne ataki, podczas gdy GCM wymaga jedynie, by IV nigdy nie był ponownie używany z tym samym kluczem.

Ponowne użycie IV z AES-GCM jest katastrofalne: pozwala atakującemu odzyskać klucz uwierzytelniania i fałszować poprawne szyfrogramy, a także ujawnia informacje o tekście jawnym przez XOR dwóch strumieni szyfrogramów. Dlatego implementacje muszą używać kryptograficznie bezpiecznego generatora liczb losowych do generowania IV i nigdy nie konstruować ani ponownie używać IV ręcznie.

Jak Vaulted używa Wektor inicjalizacji

Vaulted generuje świeży 12-bajtowy IV przy użyciu crypto.getRandomValues() Web Crypto API dla każdego sekretu. IV jest wysyłany na serwer razem z szyfrogramem i przechowywany w Redis jako część zaszyfrowanego rekordu. Gdy odbiorca pobiera sekret, IV jest zwracany razem z szyfrogramem, by przeglądarka mogła zrekonstruować parametry deszyfrowania AES-256-GCM. Ponieważ Vaulted generuje też unikalny klucz dla każdego sekretu, para klucz-IV jest zawsze unikalna.