Funkcja HKDF w Windows korzysta z implementacji CNG

Począwszy od platformy .NET 11, element HKDF w systemie Windows korzysta z wbudowanej implementacji interfejsu API Windows Cryptography: Next Generation (CNG). Implementacja w systemie Windows bardziej ogranicza niektóre rozmiary danych wejściowych niż poprzednia implementacja platformy .NET, dlatego niektóre dane wejściowe, które działały we wcześniejszych wersjach .NET, powodują teraz zgłoszenie wyjątku CryptographicException.

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 1)

Poprzednie zachowanie

Wcześniej w Windows DeriveKey i Expand zaakceptowano dane wejściowe o dowolnym rozmiarze, o ile dane wejściowe były dozwolone przez specyfikację HKDF.

Nowe zachowanie

Począwszy od platformy .NET 11 w systemie Windows składniki DeriveKey i Expand ograniczają maksymalną długość danych wejściowych dla wejściowego materiału kluczowego i kluczy pseudolosowych. Jeśli materiał klucza wejściowego przekazany do DeriveKey lub klucz pseudolosowy przekazany do Expand przekracza limit, metoda zgłasza wyjątek CryptographicException.

Oba limity to obecnie 2048 bajtów.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

W Windows .NET 11 została zmieniona z zarządzanej implementacji HKDF na implementację udostępnioną przez Windows CNG. Biblioteki kryptograficzne .NET preferują implementacje platform dla algorytmów kryptograficznych.

Typowe zastosowania HKDF nie powinny osiągać tych limitów. Jeśli aplikacja przekazuje wejściowy materiał kluczujący lub pseudolosowe klucze większe niż 2048 bajtów w systemie Windows, rozważ użycie mniejszych danych wejściowych.

Interfejsy API, których dotyczy problem