Udostępnij za pośrednictwem


Funkcje CNG

CNG ma następujące funkcje.

Zwinność kryptograficzna

Jedną z kluczowych propozycji wartości CNG jest elastyczność kryptograficzna, czasami nazywana agnostykiem kryptograficznym. Konwertowanie implementacji protokołów, takich jak protokół Secure Sockets Layer (SSL) lub zabezpieczenia warstwy transportu (TLS), CMS (S/MIME), IPsec, Kerberos i tak dalej, na CNG, jednak było wymagane, aby ta zdolność była cenna. Na poziomie CNG konieczne było zapewnienie podstawień i odnajdywania dla wszystkich typów algorytmów (symetrycznych, asymetrycznych, funkcji skrótu), generowania liczb losowych i innych funkcji narzędziowych. Zmiany na poziomie protokołu są bardziej znaczące, ponieważ w wielu przypadkach interfejsy API protokołu potrzebne do dodania wyboru algorytmu i innych opcji elastyczności, które nie istniały wcześniej.

CNG jest najpierw dostępny w systemie Windows Vista i jest umieszczony w celu zastąpienia istniejących zastosowań CryptoAPI w całym stosie oprogramowania firmy Microsoft. Deweloperzy innych firm znajdą wiele nowych funkcji w sieci CNG, w tym:

  • Nowy system konfiguracji kryptograficznej, obsługujący lepszą elastyczność kryptograficzną.
  • Bardziej szczegółowa abstrakcja magazynu kluczy (i oddzielenie magazynu od operacji algorytmów).
  • Izolacja procesów dla operacji z długoterminowymi kluczami.
  • Zamienialne generatory liczb losowych.
  • Ulga w zakresie ograniczeń dotyczących podpisywania eksportu.
  • Bezpieczeństwo wątków w całym stosie.
  • Interfejs API kryptograficzny trybu jądra.

Ponadto CNG obejmuje obsługę wszystkich wymaganych algorytmów pakietu B, w tym kryptografii krzywej eliptycznej (ECC). Istniejące aplikacje CryptoAPI będą nadal działać, ponieważ CNG stanie się dostępna.

Certyfikacja i zgodność

CNG jest weryfikowany w federalnych standardach przetwarzania informacji (FIPS) 140-2 i jest częścią oceny dla certyfikacji wspólnych kryteriów systemu Windows. CNG zaprojektowano tak, aby można było używać go jako składnika w zweryfikowanym systemie FIPS na poziomie 2.

CNG spełnia wymagania dotyczące wspólnych kryteriów, przechowując i używając kluczy długotrwałych w bezpiecznym procesie.

Obsługa pakietu B

Ważną funkcją CNG jest obsługa algorytmów B pakietu B. W lutym 2005 r. Agencja Bezpieczeństwa Narodowego (NSA) Stanów Zjednoczonych ogłosiła skoordynowany zestaw symetrycznego szyfrowania, asymetrycznej umowy tajnej (znanej również jako wymiana kluczy), podpisu cyfrowego i funkcji skrótu dla przyszłego użycia przez rząd USA o nazwie Suite B. NSA ogłosiła, że certyfikowane implementacje pakietu B mogą i będą używane do ochrony informacji wyznaczonych jako ściśle tajne, tajne i prywatne, które w przeszłości zostały opisane jako poufne, ale niesklasyfikowane. W związku z tym obsługa pakietu B jest bardzo ważna dla dostawców oprogramowania aplikacji i integratorów systemów, a także dla firmy Microsoft.

Wszystkie algorytmy Suite B są publicznie znane. Zostały one opracowane poza zakresem tajemnicy rządu historycznie związane z opracowywaniem algorytmów kryptograficznych. W tym samym czasie niektóre kraje europejskie i regiony zaproponowały również te same wymagania pakietu B dotyczące ochrony informacji.

Kryptografia pakietu B zaleca użycie krzywej wielokropkowej Diffie-Hellman (ECDH) w wielu istniejących protokołach, takich jak Internet Key Exchange (IKE, głównie używane w protokole IPsec), zabezpieczenia warstwy transportu (TLS) i Secure MIME (S/MIME).

Biblioteka CNG obejmuje obsługę pakietu B, która rozszerza wszystkie wymagane algorytmy: AES (wszystkie rozmiary kluczy), rodzinę SHA-2 (SHA-256, SHA-384 i SHA-512) algorytmów wyznaczania wartości skrótu, ECDH i eliptycznych krzywych DSA (ECDSA) na krzywe główne NIST standard P-256, P-384 i P-521. Krzywe binarne, krzywe Koblitz, niestandardowe krzywe pierwsze i wielokropkowe Menezes -Qu-Vanstone (ECMQV) nie są obsługiwane przez dostawców algorytmów firmy Microsoft dołączonych do systemu Windows Vista.

Starsza wersja pomocy technicznej

CNG zapewnia obsługę bieżącego zestawu algorytmów w CryptoAPI 1.0. Każdy algorytm, który jest obecnie obsługiwany w CryptoAPI 1.0, będzie nadal obsługiwany w CNG.

Obsługa trybu jądra

CNG obsługuje kryptografię w trybie jądra. Te same interfejsy API są używane zarówno w trybie jądra, jak i użytkownika, aby w pełni obsługiwać funkcje kryptografii. Protokoły SSL/TLS i IPsec działają w trybie jądra oprócz procesów rozruchowych, które będą używać sieci CNG. Nie wszystkie funkcje CNG mogą być wywoływane z trybu jądra. Temat referencyjny dla funkcji, których nie można wywołać z trybu jądra, jawnie stwierdzi, że nie można wywołać funkcji z trybu jądra. W przeciwnym razie wszystkie funkcje CNG mogą być wywoływane z trybu jądra, jeśli obiekt wywołujący jest uruchomiony w PASSIVE_LEVELIRQL. Ponadto niektóre funkcje CNG trybu jądra mogą być wywoływane w DISPATCH_LEVEL irQL, w zależności od możliwości dostawcy.

Interfejs dostawcy obsługi zabezpieczeń jądra firmy Microsoft (Ksecdd.sys) to moduł ogólnego przeznaczenia, oparty na oprogramowaniu, kryptograficzny znajdujący się na poziomie trybu jądra systemu Windows. Ksecdd.sys działa jako sterownik eksportu trybu jądra i zapewnia usługi kryptograficzne za pośrednictwem udokumentowanych interfejsów składników jądra. Jedynym wbudowanym algorytmem dostawcy firmy Microsoft, który nie jest obsługiwany przez Ksecdd.sys, jest DSA.

Windows Server 2008 i Windows Vista: CNG nie obsługuje podłączonych algorytmów i dostawców w trybie jądra. Jedynymi obsługiwanymi algorytmami kryptograficznymi dostępnymi w trybie jądra są te implementacje udostępniane przez firmę Microsoft za pośrednictwem interfejsów API CNG trybu jądra.

Inspekcja

Aby spełnić niektóre wymagania dotyczące wspólnych kryteriów oprócz zapewnienia kompleksowego zabezpieczeń, wiele akcji, które mają miejsce w warstwie CNG, są poddawane inspekcji w dostawcy magazynu kluczy oprogramowania (KSP) firmy Microsoft. Program Microsoft KSP jest zgodny z następującymi wytycznymi dotyczącymi tworzenia rekordów inspekcji w dzienniku zabezpieczeń:

  • Błędy generowania kluczy i par kluczy, w tym niepowodzenia samodzielnego testowania, muszą być poddawane inspekcji.
  • Importowanie i eksportowanie kluczy musi zostać poddane inspekcji.
  • Należy przeprowadzić inspekcję błędów niszczenia kluczy.
  • Klucze trwałe muszą być poddawane inspekcji podczas ich zapisywania i odczytywania z plików.
  • Błędy sprawdzania spójności mądrej pary muszą być poddawane inspekcji.
  • Jeśli istnieją błędy weryfikacji klucza tajnego, muszą zostać poddane inspekcji, na przykład testy parzystości kluczy 3DES.
  • Błędy szyfrowania, odszyfrowywania, skrótu, podpisu, weryfikacji, wymiany kluczy i generowania liczb losowych muszą być poddawane inspekcji.
  • Testy kryptograficzne muszą być poddawane inspekcji.

Ogólnie rzecz biorąc, jeśli klucz nie ma nazwy, jest to klucz efemeryczny. Klucz efemeryczny nie jest utrwalany, a microsoft KSP nie generuje rekordów inspekcji dla kluczy efemerycznych. Dostawca KSP firmy Microsoft generuje rekordy inspekcji tylko w trybie użytkownika w procesie LSA. Żaden rekord inspekcji nie jest generowany przez CNG trybu jądra. Administratorzy muszą skonfigurować zasady inspekcji, aby uzyskać wszystkie dzienniki inspekcji KSP z dziennika zabezpieczeń. Administrator musi uruchomić następujący wiersz polecenia, aby skonfigurować dodatkowe inspekcje generowane przez ks/s:

auditpol /set /subcategory:"other system events" /success:enable /failure:enable

Zamienialne generatory liczb losowych

Kolejną poprawą zapewnianą przez CNG jest możliwość zastąpienia domyślnego generatora liczb losowych (RNG). W interfejsie CryptoAPI istnieje możliwość udostępnienia alternatywnej sieci RNG jako części dostawcy usług kryptograficznych (CSP), ale nie można przekierować dostawców CSP bazy firmy Microsoft do korzystania z innej sieci RNG. CNG umożliwia jawne określenie określonej sieci RNG do użycia w ramach określonych wywołań.

Bezpieczeństwo wątków

Wszystkie funkcje modyfikujące ten sam obszar pamięci w tym samym czasie (sekcje krytyczne), gdy są wywoływane z oddzielnych wątków, nie są bezpieczne wątkami.

Tryb operacji

CNG obsługuje pięć trybów operacji, które mogą być używane z symetrycznymi szyframi bloków za pośrednictwem interfejsów API szyfrowania. Te tryby i ich możliwości obsługi są wymienione w poniższej tabeli. Tryb operacji można zmienić, ustawiając właściwość BCRYPT_CHAINING_MODE dla dostawcy algorytmów przy użyciu funkcji BCryptSetProperty.

Tryb operacji BCRYPT_CHAINING_MODE wartość Algorytmów Norma
EBC (elektroniczna kodeks) BCRYPT_CHAIN_MODE_ECB Szyfry bloków symetrycznych SP800-38A
CBC (łańcuch bloków szyfrowania) BCRYPT_CHAIN_MODE_CBC Szyfry bloków symetrycznych SP800-38A
CFB (opinie dotyczące szyfrowania) BCRYPT_CHAIN_MODE_CFB Szyfry bloków symetrycznych SP800-38A
CCM (licznik z CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Galois/Tryb licznika) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

Nuta

W systemie Windows Vista definiowane są tylko tryby EBC, CBC i CFB. Usługi GCM i CCM wymagają systemu Windows Vista z dodatkiem Service Pack 1 (SP1) lub Windows Server 2008.