Zawijanie kluczy

W kryptografii konstrukcje zawijania kluczy to klasa symetrycznych algorytmów szyfrowania zaprojektowanych do enkapsulacji (szyfrowania ) materiału klucza kryptograficznego. Algorytmy zawijania kluczy są przeznaczone do takich zastosowań, jak ochrona kluczy w niezaufanym magazynie lub przesyłanie kluczy przez niezaufane sieci komunikacyjne. Konstrukcje są zwykle budowane ze standardowych prymitywów, takich jak szyfry blokowe i kryptograficzne funkcje skrótu .

Zawijanie klucza można uznać za formę algorytmu enkapsulacji klucza , chociaż nie należy go mylić z bardziej znanymi algorytmami enkapsulacji klucza asymetrycznego (kluczem publicznym) (np. PSEC-KEM). Algorytmy zawijania kluczy mogą być używane w podobnych zastosowaniach: do bezpiecznego transportu klucza sesyjnego poprzez zaszyfrowanie go długoterminowym kluczem szyfrującym.

Tło

Pod koniec lat 90. National Institute of Standards and Technology (NIST) postawił problem „zawijania klucza”: opracowanie bezpiecznych i wydajnych algorytmów szyfrowania kluczy opartych na szyfrowaniu. Powstałe algorytmy zostałyby formalnie ocenione przez NIST i ostatecznie zatwierdzone do użytku w modułach kryptograficznych z certyfikatem NIST. NIST nie zdefiniował dokładnie celów bezpieczeństwa wynikowego algorytmu i pozostawił dalsze udoskonalenie twórcom algorytmu. Na podstawie powstałych algorytmów wydaje się, że wymaganiami projektowymi są (1) poufność, (2) ochrona integralności (uwierzytelnianie), (3) wydajność, (4) użycie standardowych (zatwierdzonych) prymitywów bazowych, takich jak Advanced Encryption Standard (AES) i Secure Hash Algorithm ( SHA-1 ) oraz (5) uwzględnienie dodatkowych okoliczności (np. odporność na błędy operatora, generatory liczb losowych niskiej jakości). Cele (3) i (5) są szczególnie ważne, biorąc pod uwagę, że wiele powszechnie stosowanych uwierzytelnionych algorytmów szyfrowania (np. AES-CCM) jest już wystarczających do osiągnięcia pozostałych celów.

Specyfikacja zawijania klucza NIST AES

Zaproponowano kilka konstrukcji. Obejmują one:

  •   Specyfikacja zawijania klucza AES (listopad 2001, RFC 3394 )
    • Zaimplementowana przez subtelny interfejs API WebCrypto.
  • American Standards Committee ANSX9.102 , który definiuje cztery algorytmy:
    • AESKW (wariant specyfikacji AES Key Wrap )
    • TDKW (podobny do AESKW, zbudowany z Triple DES zamiast AES).
    • AKW1 (TDES, dwie rundy CBC)
    • AKW2 (TDES, CBC, a następnie CBC-MAC)

Każdy z zaproponowanych algorytmów można uznać za formę uwierzytelnionego algorytmu szyfrowania zapewniającego poufność wysoce entropicznych wiadomości, takich jak klucze kryptograficzne. Specyfikacja zawijania klucza AES, AESKW, TDKW i AKW1 mają na celu zachowanie poufności w przypadku ataków z adaptacyjnym wybranym tekstem zaszyfrowanym , podczas gdy algorytm AKW2 został zaprojektowany tak, aby był bezpieczny tylko w przypadku ataków ze znanym tekstem jawnym (lub słabszymi). (Zadeklarowanym celem AKW2 jest użycie w starszych systemach i urządzeniach o ograniczonej mocy obliczeniowej, w których użycie innych algorytmów byłoby niepraktyczne). AESKW, TDKW i AKW2 zapewniają również możliwość uwierzytelnienia „nagłówka” zwykłego tekstu, powiązanego bloku danych, który jest nie zaszyfrowane.

Rogaway i Shrimpton ocenili projekt algorytmów ANSX9.102 pod kątem określonych celów bezpieczeństwa. Wśród swoich ogólnych ustaleń zauważyli brak jasno określonych celów projektowych dla algorytmów oraz brak dowodów bezpieczeństwa dla wszystkich konstrukcji.

  W swoim artykule Rogaway i Shrimpton zaproponowali dający się udowodnić algorytm zawijania kluczy (SIV — tryb wektora inicjalizacji syntetycznej), który uwierzytelnia i szyfruje dowolny ciąg oraz uwierzytelnia, ale nie szyfruje, powiązanych danych, które można powiązać z opakowanym kluczem. Zostało to ustandaryzowane jako nowy tryb AES w dokumencie RFC 5297 .

Zobacz też

Dalsza lektura