Dela via


CNG-funktioner

CNG har följande funktioner.

Kryptografisk flexibilitet

Ett av CNG:s viktigaste värdeförslag är kryptografisk flexibilitet, som ibland kallas kryptografisk agnosticism. Att konvertera implementering av protokoll som Secure Sockets Layer Protocol (SSL) eller transport layer security (TLS), CMS (S/MIME), IPsec, Kerberos och så vidare till CNG krävdes dock för att göra den här möjligheten värdefull. På CNG-nivå var det nödvändigt att tillhandahålla ersättning och identifiering för alla algoritmtyper (symmetriska, asymmetriska, hash-funktioner), slumptalsgenerering och andra verktygsfunktioner. Ändringarna på protokollnivå är mer betydande eftersom protokoll-API:erna i många fall behövs för att lägga till algoritmval och andra flexibilitetsalternativ som inte fanns tidigare.

CNG är först tillgängligt i Windows Vista och är positionerat för att ersätta befintliga användningsområden för CryptoAPI- i hela Microsoft-programvarustacken. Utvecklare från tredje part hittar många nya funktioner i CNG, bland annat:

  • Ett nytt kryptokonfigurationssystem som stöder bättre kryptografisk flexibilitet.
  • Finare abstraktion för nyckellagring (och separation av lagring från algoritmåtgärder).
  • Bearbeta isolering för åtgärder med långsiktiga nycklar.
  • Utbytbara slumptalsgeneratorer.
  • Befrielse från exportsigneringsbegränsningar.
  • Trådsäkerhet i hela stacken.
  • Kryptografiskt API i kernelläge.

Dessutom innehåller CNG stöd för alla nödvändiga Suite B-algoritmer, inklusive elliptisk kurvkryptografi (ECC). Befintliga CryptoAPI-program fortsätter att fungera när CNG blir tillgängligt.

Certifiering och efterlevnad

CNG verifieras till FIPS (Federal Information Processing Standards) 140-2 och är en del av utvärderingsmålet för Certifiering av vanliga Windows-kriterier. CNG har utformats för att kunna användas som en komponent i ett FIPS-validerat system på nivå 2.

CNG uppfyller kraven för vanliga kriterier genom att lagra och använda långlivade nycklar i en säker process.

Stöd för Suite B

En viktig funktion i CNG är dess stöd för Suite B-algoritmerna. I februari 2005 tillkännagav National Security Agency (NSA) i USA en samordnad uppsättning symmetrisk kryptering, asymmetriskt hemligt avtal (även kallat nyckelutbyte), digital signatur och hashfunktioner för framtida amerikanska myndigheter som kallas Suite B. NSA har meddelat att certifierade Suite B-implementeringar kan och kommer att användas för skydd av information som betecknas som topphemlig, hemlig och privat information som tidigare beskrevs som känslig men oklassificerad. På grund av detta är Suite B-stöd mycket viktigt för programprogramleverantörer och systemintegrerare samt för Microsoft.

Alla Suite B-algoritmer är offentligt kända. De har utvecklats utanför det myndighetssekretess som historiskt förknippats med utveckling av kryptografiska algoritmer. Inom samma tidsram har vissa europeiska länder och regioner också föreslagit samma krav för svit B för att skydda sin information.

Suite B-kryptografi rekommenderar användning av elliptisk kurva Diffie-Hellman (ECDH) i många befintliga protokoll, till exempel Internet Key Exchange (IKE, som främst används i IPsec), transportnivåsäkerhet (TLS) och Secure MIME (S/MIME).

CNG har stöd för Suite B som omfattar alla nödvändiga algoritmer: AES (alla nyckelstorlekar), SHA-2-serien (SHA-256, SHA-384 och SHA-512) av hashalgoritmer, ECDH och elliptisk kurva DSA (ECDSA) över NIST-standardprimtalkurvorna P-256, P-384 och P-521. Binära kurvor, Koblitz-kurvor, anpassade primkurvor och elliptisk kurva Menezes–Qu-Vanstone (ECMQV) stöds inte av Microsofts algoritmprovidrar som ingår i Windows Vista.

Äldre support

CNG ger stöd för den aktuella uppsättningen algoritmer i CryptoAPI 1.0. Alla algoritmer som för närvarande stöds i CryptoAPI 1.0 kommer att fortsätta att stödjas i CNG.

Stöd för kernelläge

CNG stöder kryptografi i kernelläge. Samma API:er används i både kernel- och användarläge för att fullt ut stödja kryptografifunktionerna. Både SSL/TLS och IPsec fungerar i kernelläge utöver startprocesser som använder CNG. Alla CNG-funktioner kan inte anropas från kernelläge. Referensavsnittet för de funktioner som inte kan anropas från kernelläge anger uttryckligen att funktionen inte kan anropas från kernelläge. Annars kan alla CNG-funktioner anropas från kernelläge om anroparen körs på PASSIVE_LEVELIRQL-. Dessutom kan vissa CNG-funktioner i kernelläge anropas på DISPATCH_LEVEL IRQL-, beroende på leverantörens funktioner.

Microsoft kernel security support provider interface (Ksecdd.sys) är en allmän, programvarubaserad, kryptografisk modul som finns på kernellägesnivån i Windows. Ksecdd.sys körs som exportdrivrutin i kernelläge och tillhandahåller kryptografiska tjänster via sina dokumenterade gränssnitt till kernelkomponenter. Den enda inbyggda Microsoft-provideralgoritmen som inte stöds av Ksecdd.sys är DSA.

Windows Server 2008 och Windows Vista: CNG stöder inte anslutningsbara algoritmer och leverantörer i kernelläge. De enda kryptografiska algoritmer som stöds i kernelläge är de implementeringar som tillhandahålls av Microsoft via CNG-API:er i kernelläge.

Granskning

För att uppfylla några av de gemensamma kriterierna förutom att tillhandahålla omfattande säkerhet granskas många åtgärder som sker i CNG-lagret i Microsofts programvarunyckellagringsprovider (KSP). Microsoft KSP följer följande riktlinjer för att skapa granskningsposter i säkerhetsloggen:

  • Nyckel- och nyckelpargenereringsfel, inklusive självtestfel, måste granskas.
  • Nyckelimport och -export måste granskas.
  • Fel vid nyckelförstörelse måste granskas.
  • Beständiga nycklar måste granskas när de skrivs till och läss från filer.
  • Fel med parvis konsekvenskontroll måste granskas.
  • Eventuella valideringsfel för hemliga nycklar måste granskas, till exempel paritetskontroller på 3DES-nycklar.
  • Fel i kryptering, dekryptering, hashning, signatur, verifiering, nyckelutbyte och slumptalsgenerering måste granskas.
  • Kryptografiska självtester måste granskas.

Om en nyckel i allmänhet inte har ett namn är det en tillfällig nyckel. En tillfällig nyckel bevaras inte och Microsoft KSP genererar inte granskningsposter för tillfälliga nycklar. Microsoft KSP genererar granskningsposter i användarläge endast i LSA-processen. Ingen granskningspost genereras av kernelläges-CNG. Administratörer måste konfigurera granskningsprincipen för att hämta alla KSP-granskningsloggar från säkerhetsloggen. En administratör måste köra följande kommandorad för att konfigurera ytterligare granskningar som genereras av KSP:er:

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

Utbytbara slumptalsgeneratorer

En annan förbättring som CNG ger är möjligheten att ersätta standardgeneratorn för slumptal (RNG). I CryptoAPI är det möjligt att tillhandahålla en alternativ RNG som en del av en kryptografisk tjänstprovider (CSP), men det går inte att omdirigera Microsoft Base CSP:er till att använda en annan RNG. CNG gör det möjligt att uttryckligen ange en viss RNG som ska användas inom specifika anrop.

Trådsäkerhet

Alla funktioner som ändrar samma minnesområde samtidigt (kritiska avsnitt) när de anropas från separata trådar är inte trådsäkra.

Åtgärdsläge

CNG stöder fem driftlägen som kan användas med symmetriska block chiffer via krypterings-API:erna. Dessa lägen och deras support finns i följande tabell. Åtgärdsläget kan ändras genom att ange egenskapen BCRYPT_CHAINING_MODE för algoritmprovidern med hjälp av funktionen BCryptSetProperty.

Åtgärdsläge BCRYPT_CHAINING_MODE värde Algoritmer Standard
ECB (elektronisk kodbok) BCRYPT_CHAIN_MODE_ECB Symmetriska block chiffer SP800-38A
CBC (chifferblocklänkning) BCRYPT_CHAIN_MODE_CBC Symmetriska block chiffer SP800-38A
CFB (Chifferfeedback) BCRYPT_CHAIN_MODE_CFB Symmetriska block chiffer SP800-38A
CCM (Räknare med CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Galois/Counter Mode) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

Not

Endast ECB-, CBC- och CFB-driftsätt definieras i Windows Vista. GCM och CCM kräver Windows Vista med Service Pack 1 (SP1) eller Windows Server 2008.