CNG-functies
CNG heeft de volgende functies.
- cryptografische flexibiliteit
- certificering en naleving
- Suite B Support
- verouderde ondersteuning
- ondersteuning voor kernelmodus
- controle
- vervangbare generatoren voor willekeurige getallen
- Thread Safety-
- bewerkingsmodus
Cryptografische flexibiliteit
Een van de belangrijkste waardeproposities van CNG is cryptografische flexibiliteit, ook wel cryptografische agnosticisme genoemd. Het converteren van implementatie van protocollen zoals Secure Sockets Layer-protocol (SSL) of transport layer security (TLS), CMS (S/MIME), IPsec, Kerberos, enzovoort, was echter vereist om dit vermogen waardevol te maken. Op CNG-niveau was het noodzakelijk om vervanging en detectie te bieden voor alle algoritmetypen (symmetrische, asymmetrische, hash-functies), het genereren van willekeurige getallen en andere hulpprogrammafuncties. De wijzigingen op protocolniveau zijn belangrijker, omdat in veel gevallen de protocol-API's nodig zijn om algoritmeselectie en andere flexibiliteitsopties toe te voegen die nog niet eerder bestonden.
CNG is voor het eerst beschikbaar in Windows Vista en wordt geplaatst om bestaande toepassingen van CryptoAPI- te vervangen in de Hele Microsoft-softwarestack. Ontwikkelaars van derden vinden veel nieuwe functies in CNG, waaronder:
- Een nieuw cryptoconfiguratiesysteem dat betere cryptografische flexibiliteit ondersteunt.
- Fijnmazige abstractie voor sleutelopslag (en scheiding van opslag van algoritmebewerkingen).
- Procesisolatie voor bewerkingen met langetermijnsleutels.
- Vervangbare generatoren voor willekeurige getallen.
- Beperking van exportondertekening.
- Thread-veiligheid in de hele stapel.
- Cryptografische API voor kernelmodus.
Daarnaast bevat CNG ondersteuning voor alle vereiste Suite B-algoritmen, waaronder elliptische curvecryptografie (ECC). Bestaande CryptoAPI-toepassingen blijven werken naarmate CNG beschikbaar komt.
Certificering en naleving
CNG wordt gevalideerd voor Federal Information Processing Standards (FIPS) 140-2 en maakt deel uit van het doel van evaluatie voor de Windows Common Criteria-certificering. CNG is ontworpen om te kunnen worden gebruikt als onderdeel in een gevalideerd FIPS-systeem op niveau 2.
CNG voldoet aan algemene criteriavereisten door sleutels met een lange levensduur op te slaan en te gebruiken in een veilig proces.
Suite B-ondersteuning
Een belangrijke functie van CNG is de ondersteuning voor de Suite B-algoritmen. In februari 2005 kondigde het National Security Agency (NSA) van de Verenigde Staten een gecoördineerde set symmetrische versleuteling, asymmetrische geheime overeenkomst (ook wel bekend als sleuteluitwisseling), digitale handtekening- en hashfuncties aan voor toekomstig amerikaans overheidsgebruik genaamd Suite B. De NSA heeft aangekondigd dat gecertificeerde Suite B-implementaties kunnen en worden gebruikt voor de bescherming van informatie die is aangewezen als Top Secret, Secret en persoonlijke informatie die in het verleden is beschreven als Vertrouwelijk-Maar-Niet-geclassificeerd. Daarom is Suite B-ondersteuning zeer belangrijk voor softwareleveranciers en systeemintegrators van toepassingen, evenals voor Microsoft.
Alle Suite B-algoritmen zijn openbaar bekend. Ze zijn ontwikkeld buiten het bereik van het overheidsgeheim dat historisch is gekoppeld aan de ontwikkeling van cryptografische algoritmen. In ditzelfde tijdsbestek hebben sommige Europese landen en regio's ook dezelfde Suite B-vereisten voorgesteld voor de bescherming van hun informatie.
Suite B-cryptografie raadt het gebruik aan van elliptische curven Diffie-Hellman (ECDH) in veel bestaande protocollen zoals Internet Key Exchange (IKE, voornamelijk gebruikt in IPsec), transport layer security (TLS) en Secure MIME (S/MIME).
CNG bevat ondersteuning voor Suite B die uitbreidt tot alle vereiste algoritmen: AES (alle sleutelgrootten), de SHA-2-serie (SHA-256, SHA-384 en SHA-512) van hash-algoritmen, ECDH en elliptische curve DSA (ECDSA) via de NIST-standaard prime curven P-256, P-384 en P-521. Binaire curven, Koblitz-curven, aangepaste prime curven en elliptische curve Menezes-Qu-Vanstone (ECMQV) worden niet ondersteund door de Microsoft-algoritmeproviders die zijn opgenomen in Windows Vista.
Verouderde ondersteuning
CNG biedt ondersteuning voor de huidige set algoritmen in CryptoAPI 1.0. Elk algoritme dat momenteel wordt ondersteund in CryptoAPI 1.0, wordt nog steeds ondersteund in CNG.
Ondersteuning voor kernelmodus
CNG ondersteunt cryptografie in kernelmodus. Dezelfde API's worden gebruikt in zowel kernel- als gebruikersmodus om de cryptografiefuncties volledig te ondersteunen. Zowel SSL/TLS als IPsec werken in de kernelmodus, naast opstartprocessen die gebruikmaken van CNG. Niet alle CNG-functies kunnen worden aangeroepen vanuit de kernelmodus. In het naslagonderwerp voor de functies die niet kunnen worden aangeroepen vanuit de kernelmodus, wordt expliciet aangegeven dat de functie niet kan worden aangeroepen vanuit de kernelmodus. Anders kunnen alle CNG-functies worden aangeroepen vanuit de kernelmodus als de aanroeper wordt uitgevoerd op PASSIVE_LEVELIRQL-. Daarnaast kunnen sommige CNG-functies in de kernelmodus worden aangeroepen op DISPATCH_LEVEL IRQL-, afhankelijk van de mogelijkheden van de provider.
De interface van de microsoft-kernelbeveiligingsondersteuningsprovider (Ksecdd.sys) is een algemene, op software gebaseerde, cryptografische module die zich op het niveau van de kernelmodus van Windows bevindt. Ksecdd.sys wordt uitgevoerd als exportstuurprogramma voor kernelmodus en biedt cryptografische services via hun gedocumenteerde interfaces voor kernelonderdelen. Het enige ingebouwde Microsoft-provideralgoritmen dat niet wordt ondersteund door Ksecdd.sys is DSA.
Windows Server 2008 en Windows Vista: CNG biedt geen ondersteuning voor pluggable algoritmen en providers in kernelmodus. De enige ondersteunde cryptografische algoritmen die beschikbaar zijn in de kernelmodus, zijn de implementaties van Microsoft via de CNG-API's voor de kernelmodus.
Controle
Om te voldoen aan enkele van de algemene criteriavereisten naast het bieden van uitgebreide beveiliging, worden veel acties die plaatsvinden in de CNG-laag gecontroleerd in de Microsoft-KSP (Software Key Storage Provider). De Microsoft KSP voldoet aan de volgende richtlijnen om auditrecords te maken in het beveiligingslogboek:
- Sleutel- en sleutelpaargeneratiefouten, inclusief zelftestfouten, moeten worden gecontroleerd.
- Sleutel importeren en exporteren moet worden gecontroleerd.
- Belangrijke vernietigingsfouten moeten worden gecontroleerd.
- Permanente sleutels moeten worden gecontroleerd wanneer ze naar bestanden worden geschreven en gelezen.
- Consistentiecontrolefouten met paarsgewijs moeten worden gecontroleerd.
- Mislukte validatie van geheime sleutels, indien aanwezig, moeten worden gecontroleerd, bijvoorbeeld pariteitscontroles op 3DES-sleutels.
- Fouten in versleuteling, ontsleuteling, hashing, handtekening, verificatie, sleuteluitwisseling en het genereren van willekeurige getallen moeten worden gecontroleerd.
- Cryptografische zelftests moeten worden gecontroleerd.
Als een sleutel geen naam heeft, is deze in het algemeen een kortstondige sleutel. Een kortstondige sleutel blijft niet behouden en de Microsoft KSP genereert geen auditrecords voor kortstondige sleutels. De Microsoft KSP genereert alleen controlerecords in de gebruikersmodus in het LSA-proces. Er wordt geen controlerecord gegenereerd door CNG in de kernelmodus. Beheerders moeten het controlebeleid configureren om alle KSP-auditlogboeken op te halen uit het beveiligingslogboek. Een beheerder moet de volgende opdrachtregel uitvoeren om extra controles te configureren die zijn gegenereerd door KPI's:
auditpol /set /subcategory:"other system events" /success:enable /failure:enable
Vervangbare generatoren voor willekeurige getallen
Een andere verbetering die CNG biedt, is de mogelijkheid om de standaardgenerator voor willekeurige getallen (RNG) te vervangen. In CryptoAPI is het mogelijk om een alternatieve RNG te bieden als onderdeel van een cryptografische serviceprovider (CSP), maar het is niet mogelijk om de Microsoft Base CSP's om te leiden om een andere RNG te gebruiken. CNG maakt het mogelijk om expliciet een bepaalde RNG op te geven voor gebruik binnen bepaalde aanroepen.
Schroefdraadveiligheid
Functies die hetzelfde geheugengebied op hetzelfde moment wijzigen (kritieke secties) wanneer ze worden aangeroepen vanuit afzonderlijke threads, zijn niet threadveilig.
Bewerkingsmodus
CNG ondersteunt vijf modi van bewerkingen die kunnen worden gebruikt met symmetrische blokcoderingen via de versleutelings-API's. Deze modi en hun ondersteuningsmogelijkheden worden vermeld in de volgende tabel. De bewerkingsmodus kan worden gewijzigd door de eigenschap BCRYPT_CHAINING_MODE voor de algoritmeprovider in te stellen met behulp van de functie BCryptSetProperty.
Bewerkingsmodus | BCRYPT_CHAINING_MODE waarde | Algoritmen | Standaard |
---|---|---|---|
ECB (Elektronisch codeboek) | BCRYPT_CHAIN_MODE_ECB | Symmetrische blok-coderingen | SP800-38A |
CBC (coderingsblokketen) | BCRYPT_CHAIN_MODE_CBC | Symmetrische blok-coderingen | SP800-38A |
PHER Feedback (Feedback over codering) | BCRYPT_CHAIN_MODE_CFB | Symmetrische blok-coderingen | SP800-38A |
CCM (Teller met CBC) | BCRYPT_CHAIN_MODE_CCM | AES | SP800-38C |
GCM (Galois/tellermodus) | BCRYPT_CHAIN_MODE_GCM | AES | SP800-38D |
Notitie
In Windows Vista worden alleen ecb-, CBC- en GEGEVENSmodi gedefinieerd. GCM en CCM vereisen Windows Vista met Service Pack 1 (SP1) of Windows Server 2008.