CNG-szolgáltatások
A CNG a következő funkciókkal rendelkezik.
- titkosítási agility
- tanúsítási és megfelelőségi
- Suite B támogatási
- örökölt támogatási
- Kernel mód támogatása
- naplózási
- cserélhető véletlenszám-generátorok
- Szálbiztonság
- üzemmód
Titkosítási agilitás
A CNG egyik fő értékajánlata a titkosítási agilitás, más néven kriptográfiai agnosztikizmus. Az olyan protokollok implementációjának konvertálása, mint a Secure Sockets Layer protokoll (SSL) vagy átviteli réteg biztonsági (TLS), CMS (S/MIME), IPsec, Kerberos stb. A CNG szintjén az összes algoritmustípushoz (szimmetrikus, aszimmetrikus, kivonatfüggvényekhez), véletlenszerű számgeneráláshoz és egyéb segédprogramfüggvényekhez biztosítani kellett a helyettesítést és a felderíthetőséget. A protokollszintű változások sokkal jelentősebbek, mert sok esetben a protokoll API-knak az algoritmusok kiválasztásához és más olyan rugalmassági beállításokhoz kellett hozzáadniuk, amelyek korábban nem léteztek.
A CNG először a Windows Vista rendszerben érhető el, és a CryptoAPI meglévő felhasználási területeinek lecserélésére szolgál a Microsoft szoftververemében. A külső fejlesztők számos új funkciót találnak a CNG-ben, többek között az alábbiakat:
- Egy új kriptokonfigurációs rendszer, amely jobb titkosítási rugalmasságot támogat.
- A kulcstárolók részletesebb absztrakciója (és a tárterület elkülönítése az algoritmusműveletektől).
- Folyamatelkülönítés a hosszú távú kulcsokkal rendelkező műveletekhez.
- Cserélhető véletlenszerű számgenerátorok.
- Mentesség az exportálási aláírási korlátozások alól.
- Szálbiztonság az egész veremben.
- Kernel módú titkosítási API.
Emellett a CNG támogatja az összes szükséges Suite B algoritmust, beleértve háromliptikus görbe titkosítási (ECC) használatát is. A meglévő CryptoAPI-alkalmazások a CNG elérhetővé válása után is működni fognak.
Minősítés és megfelelőség
A CNG a Federal Information Processing Standards (FIPS) 140-2 szabványra van érvényesítve, és része a Windows Common Criteria minősítés kiértékelési céljának. A CNG-t úgy tervezték, hogy a FIPS 2. szintű érvényesített rendszer összetevőjeként használható legyen.
A CNG egy biztonságos folyamat során hosszú élettartamú kulcsok tárolásával és használatával megfelel a Common Criteria követelményeinek.
Suite B-támogatás
A CNG egyik fontos funkciója a Suite B algoritmusok támogatása. 2005 februárjában az Egyesült Államok Nemzetbiztonsági Ügynöksége (NSA) bejelentette a szimmetrikus titkosítás, az aszimmetrikus titkos megállapodás (más néven kulcscsere) összehangolt készletét, a digitális aláírást és a kivonatolási funkciókat a jövőbeli amerikai kormány számára Suite Bnéven. Az NSA bejelentette, hogy a minősített Suite B implementációk használhatók és használhatók lesznek a szigorúan titkosként, titkosként és privátként megjelölt információk védelmére, amelyeket korábban bizalmas, de besorolatlanként írtak le. Emiatt a Suite B támogatása nagyon fontos az alkalmazásszoftver-gyártók és a rendszer integrátorai, valamint a Microsoft számára.
Minden Suite B algoritmus nyilvánosan ismert. Ezeket a titkosítási algoritmusok fejlesztéséhez kapcsolódó kormányzati titoktartás hatókörén kívül fejlesztették ki. Ugyanebben az időkeretben egyes európai országok és régiók is ugyanazokat a B csomagra vonatkozó követelményeket javasolták információik védelmére.
A Suite B titkosítása a háromliptikus görbe Diffie-Hellman (ECDH) használatát javasolja számos meglévő protokollban, például az internetes kulcscsere (IKE, főként az IPsec-ben), átviteli réteg biztonsági (TLS) és a Secure MIME (S/MIME).
A CNG támogatja a B csomagot, amely az összes szükséges algoritmusra kiterjed: az AES-re (minden kulcsméretre), az SHA-2 családra (SHA-256, SHA-384 és SHA-512) a kivonatoló algoritmusokra, az ECDH-re és az elliptikus görbe DSA-jára (ECDSA) a P-256, P-384 és P-521 NIST standard prímgörbéken. A Bináris görbéket, a Koblitz-görbéket, az egyéni prímgörbéket és a háromliptikus görbét Menezes-Qu-Vanstone (ECMQV) a Windows Vista-beli Microsoft-algoritmusszolgáltatók nem támogatják.
Örökölt támogatás
A CNG támogatja az algoritmusok jelenlegi készletét CryptoAPI 1.0-s verziójában. Az CryptoAPI 1.0-s verziója által jelenleg támogatott algoritmusok továbbra is támogatottak lesznek a CNG-ben.
Kernel mód támogatása
A CNG kernel módban támogatja a titkosítást. A rendszermag és a felhasználói módban is ugyanazokat az API-kat használják a titkosítási funkciók teljes körű támogatásához. Az SSL/TLS és az IPsec is kernel módban működik a CNG-t használó rendszerindítási folyamatok mellett. Nem minden CNG-függvény hívható meg kernel módból. A kernel módból nem hívható függvények referenciatémaköre kifejezetten azt állítja, hogy a függvény nem hívható meg kernel módból. Ellenkező esetben az összes CNG-függvény meghívható kernel módból, ha a hívó PASSIVE_LEVELIRQL. Emellett egyes kernel módú CNG-függvények hívhatók DISPATCH_LEVEL IRQL, a szolgáltató képességeitől függően.
A Microsoft kernel biztonsági támogatási szolgáltatói felülete (Ksecdd.sys) egy általános célú, szoftveralapú, titkosítási modul, amely a Windows kernel mód szintjén található. Ksecdd.sys kernel módú exportálási illesztőprogramként fut, és a dokumentált interfészeken keresztül titkosítási szolgáltatásokat biztosít a kernel összetevőinek. Az egyetlen beépített Microsoft-szolgáltatói algoritmus, amelyet a Ksecdd.sys nem támogat, a DSA.
Windows Server 2008 és Windows Vista: A CNG nem támogatja a csatlakoztatható algoritmusokat és szolgáltatókat kernel módban. A kernel módban csak a Microsoft által a kernel módú CNG API-kon keresztül biztosított implementációk támogatott titkosítási algoritmusok érhetők el.
Könyvvizsgálat
A CNG-rétegben végrehajtott számos műveletet a Microsoft szoftverkulcs-tárolószolgáltatója (KSP) naplóz, hogy az átfogó biztonság mellett megfeleljen a közös követelmények néhány követelményének. A Microsoft KSP az alábbi irányelveket követi a biztonsági naplóban való naplózási rekordok létrehozásához:
- A kulcs- és kulcspárok létrehozásának hibáit, beleértve az öntesztelési hibákat is, naplózni kell.
- A kulcsimportálást és -exportálást naplózni kell.
- A kulcsmegsemmisítési hibákat naplózni kell.
- Az állandó kulcsokat naplózni kell, amikor a fájlokba írnak és olvasnak.
- A párszintű konzisztencia-ellenőrzési hibákat naplózni kell.
- A titkos kulcsok érvényesítési hibáit , ha vannak ilyenek, naplózni kell, például a 3DES-kulcsok paritásos ellenőrzését.
- A titkosítás, a visszafejtés, a kivonatolás, az aláírás, az ellenőrzés, a kulcscsere és a véletlenszerű számgenerálás hibáit naplózni kell.
- A titkosítási önteszteket naplózni kell.
Általánosságban elmondható, hogy ha egy kulcsnak nincs neve, az rövid élettartamú kulcs. A rövid élettartamú kulcsok nem maradnak meg, és a Microsoft KSP nem hoz létre naplózási rekordokat a rövid élettartamú kulcsokhoz. A Microsoft KSP csak az LSA-folyamat felhasználói módban hoz létre naplózási rekordokat. A kernel módú CNG nem hoz létre naplózási rekordot. A rendszergazdáknak konfigurálnia kell a naplózási szabályzatot, hogy lekérjük az összes KSP-naplót a biztonsági naplóból. A rendszergazdáknak a következő parancssort kell futtatniuk a KSP-k által létrehozott további naplózások konfigurálásához:
auditpol /set /subcategory:"egyéb rendszeresemények" /success:enable /failure:enable
Cserélhető véletlenszám-generátorok
A CNG által biztosított másik fejlesztés az alapértelmezett véletlenszerű számgenerátor (RNG) lecserélése. A CryptoAPI-ban alternatív RNG-t lehet biztosítani egy titkosítási szolgáltató (CSP) részeként, de nem lehet átirányítani a Microsoft Base CSP-ket egy másik RNG használatára. A CNG lehetővé teszi egy adott híváson belül használni kívánt RNG explicit megadását.
Menetbiztonság
Azok a függvények, amelyek ugyanazt a memóriaterületet módosítják egy időben (kritikus szakaszok), amikor külön szálakból hívják őket, nem biztonságosak.
Működési mód
A CNG öt olyan műveletmódot támogat, amelyek a titkosítási API-kon keresztül szimmetrikus blokkok titkosításával használhatók. Ezek a módok és azok támogatottsága az alábbi táblázatban található. A működési mód az algoritmusszolgáltató BCRYPT_CHAINING_MODE tulajdonságának beállításával módosítható a BCryptSetProperty függvény használatával.
Működési mód | BCRYPT_CHAINING_MODE érték | Algoritmusok | Szabvány |
---|---|---|---|
EKB (elektronikus kódkönyv) | BCRYPT_CHAIN_MODE_ECB | Szimmetrikus blokkjelek | SP800-38A |
CBC (Titkosítási blokkláncolás) | BCRYPT_CHAIN_MODE_CBC | Szimmetrikus blokkjelek | SP800-38A |
CFB (Titkosítási visszajelzés) | BCRYPT_CHAIN_MODE_CFB | Szimmetrikus blokkjelek | SP800-38A |
CCM (Számláló CBC-vel) | BCRYPT_CHAIN_MODE_CCM | AES | SP800-38C |
GCM (Galois/Counter Mode) | BCRYPT_CHAIN_MODE_GCM | AES | SP800-38D |
Jegyzet
A Windows Vista rendszerben csak az EKB, a CBC és a CFB működési mód van meghatározva. A GCM-hez és a CCM-hez Windows Vista és Service Pack 1 (SP1) vagy Windows Server 2008 szükséges.