Cryptographic Service Provider (CSP) je nezávislý modul, který umožňuje provádět kryptografické operace v operačních systémech Microsoft , který je řízen pomocí funkcí CryptoAPI . Zjednodušeně řečeno jde o prostředníka mezi operačním systémem, který jej může spravovat pomocí standardních funkcí CryptoAPI , a vykonavatelem kryptografických operací (může to být buď program nebo hardwarový komplex).
Každý poskytovatel kryptoměn musí exportovat sadu povinných funkcí, které tvoří systémové programovací rozhraní CryptoAPI , přičemž každá z těchto funkcí odpovídá některé funkci CryptoAPI . Poskytovatel kryptoměn musí také poskytnout:
Aplikace nefungují přímo s poskytovatelem kryptoměn. Místo toho volají funkce CryptoAPI z knihoven Advapi32.dll a Crypt32.dll. Operační systém filtruje tato volání funkcí a volá příslušné funkce CryptoAPI , které spolupracují přímo s poskytovatelem kryptoměn.
Minimální složení cryptoprovider je jedna DLL. Tato knihovna je obvykle uložena ve složce \WINDOWS\system32\. Povinná je kontrola integrity této DLL.
Kromě standardních funkcí CryptoAPI poskytovatel kryptoměn obvykle podporuje řadu vlastních funkcí. Pokud nejsou implementovány nativní funkce, pak DLL funguje ve skutečnosti jako mezivrstva mezi operačním systémem a vykonavatelem kryptografických operací.
Jedním z hlavních objektů je kontejner klíčů . Kontejner má svůj vlastní název, je vytvořen (nebo požadován, pokud již byl vytvořen) funkcí CryptAcquireContext(...). V kontejneru může být nejvýše jeden pár podpisových klíčů, jeden pár výměnných klíčů a jeden pár symetrických klíčů. Pokud je podporováno několik symetrických šifrovacích algoritmů, může existovat několik symetrických klíčů, jeden klíč pro každý algoritmus.
Páry klíčů a symetrické klíče mohou být umístěny pouze v kontejneru. Mimo kontejner může být pouze veřejný klíč páru.
Soukromé klíče párů klíčů jsou exportovány pouze v zašifrované podobě. Někteří poskytovatelé kryptoměn zásadně neumožňují export soukromých klíčů, a to ani v zašifrované podobě. Při exportu symetrických klíčů musí být také zašifrovány pomocí veřejného klíče příjemce nebo vyjednávacího klíče. Hash objekty jsou vytvořeny pro výpočet hash funkcí. K vytvoření hash objektů není nutné vytvářet kontejner.
Typ poskytovatele kryptoměn | Zadejte číslo | Algoritmy výměny klíčů | Algoritmy digitálního podpisu | Šifrovací algoritmy | Hašovací algoritmy |
---|---|---|---|---|---|
PROV_RSA_FULL | jeden | RSA | RSA | RC2 , RC4 | MD5 , SHA |
PROV_RSA_SIG | 2 | Ne | RSA | Ne | MD5 , SHA |
PROV_DSS | 3 | Ne | DSS | Ne | MD5 , SHA |
PROV_FORTEZZA | čtyři | KEA | DSS | skipjack | SHA |
PROV_MS_EXCHANGE | 5 | RSA | RSA | OBSAZENÍ | MD5 |
PROV_SSL | 6 | RSA | RSA | může být jiný | může být jiný |
PROV_RSA_SCHANNEL | 12 | RSA | RSA | RC4 , DES , 3DES | MD5 , SHA |
PROV_DH_SCHANNEL | osmnáct | Diffie-Hellman (efemérní) | DSS | DES , 3DES | MD5 , SHA |
PROV_RSA_AES | 24 | RSA | RSA | RC2 , RC4 , AES | MD5 , SHA |
PROV_GOST_94_DH | 71 | GOST R 34.10-94 | GOST R 34.10-94 | GOST 28147-89 | GOST R 34.11-94 |
PROV_GOST_2001_DH | 75 | GOST R 34.10-2001 | GOST R 34.10-2001 | GOST 28147-89 | GOST R 34.11-94 |
PROV_GOST_2012_256 | 80 | GOST R 34.10-2012 256 bit | GOST R 34.10-2012 256 bit | GOST 28147-89 , GOST 34.12-2018 | GOST R 34.11-2012 256 bit |
PROV_GOST_2012_512 | 81 | GOST R 34.10-2012 512 bit | GOST R 34.10-2012 512 bit | GOST 28147-89 , GOST 34.12-2018 | GOST R 34.11-2012 512 bit |
Všechny operační systémy Microsoft, počínaje Windows 2000, mají vestavěný Microsoft Base Cryptographic Provider , který má sadu základních kryptografických funkcí. V Microsoft Base Cryptographic Provider jsou šifrovací klíče omezeny na 40 bitů. Vzhledem k tomu, že před lednem 2000 platil ve Spojených státech zákaz exportu šifrovacího softwaru pomocí klíčů delších než 40 bitů, byl v systému Windows 98 a starších verzích systému Windows 2000 podporován pouze tento poskytovatel šifrování. Microsoft Base Cryptographic Provider je v podstatě zkrácená verze Microsoft Enhanced Cryptographic Provider . Po zrušení zákazu exportu ale přestalo mít smysl mít 2 kryptografické poskytovatele, takže programátoři Microsoftu zavedli jiný název – Microsoft Strong Cryptographic Provider , který se nijak neliší od Microsoft Enhanced Cryptographic Provider. Tento poskytovatel kryptoměn je výchozím poskytovatelem kryptoměn typu PROV_RSA_FULL ve Windows 2000, Windows XP, Windows 2003.
Všechny poskytovatele kryptografických služeb společnosti Microsoft lze stáhnout z webu společnosti Microsoft.
Poskytovatel kryptoměn | Název poskytovatele kryptoměn | Typ | Komentář |
---|---|---|---|
Poskytovatel Microsoft Base Cryptographic Provider | MS_DEF_PROV | PROV_RSA_FULL | Má širokou škálu základních kryptografických funkcí. Délka šifrovacích klíčů nepřesahuje 40 bitů. |
Microsoft Strong Cryptographic Provider | MS_STRONG_PROV | PROV_RSA_FULL | Liší se od Microsoft Base Cryptographic Provider podporou velkých délek klíčů. |
Microsoft Enhanced Cryptographic Provider | MS_ENHANCED_PROV | PROV_RSA_FULL | Neliší se od Microsoft Strong Cryptographic Provider. Je to výchozí poskytovatel kryptoměn. |
Poskytovatel kryptografie Microsoft AES | MS_ENH_RSA_AES_PROV | PROV_RSA_AES | = Microsoft Enhanced Cryptographic Provider s podporou AES |
Poskytovatel kryptografických služeb Microsoft DSS | MS_DEF_DSS_PROV | PROV_DSS | Hašování, podepisování, ověřování podpisu s podporou algoritmu DSS . |
Microsoft Base DSS a Diffie-Hellman Cryptographic Provider | MS_DEF_DSS_DH_PROV | PROV_DSS_DH | Hašování, podepisování DSS , generování a výměna klíčů Diffie-Hellman. Podporuje generování klíčů pro protokoly SSL3 a TLS1. |
Microsoft Enhanced DSS a Diffie-Hellman Cryptographic Provider | MS_ENH_DSS_DH_PROV | PROV_DSS_DH | Stejné jako Microsoft Base DSS a Diffie-Hellman Cryptographic Provider s podporou velkých délek klíčů. |
Microsoft DSS a Diffie-Hellman/Schannel Cryptographic Provider | MS_DEF_DH_SCHANNEL_PROV | PROV_DH_SCHANNEL | Hašování, podepisování DSS, generování a výměna klíčů Diffie-Hellman. Podporuje generování klíčů pro protokoly SSL3 a TLS1. |
Poskytovatel kryptografie Microsoft RSA/Schannel | MS_DEF_RSA_SCHANNEL_PROV | PROV_RSA_SCHANNEL | Hašování, podepisování, ověřování podpisů. Používá se pro ověřování v protokolech SSL 3.0 a TLS 1.0. |
Poskytovatel kryptografických podpisů Microsoft RSA | MS_DEF_RSA_SIG_PROV | PROV_RSA_SIG | Minimální funkčnost požadovaná pro elektronický podpis a ověřování digitálního podpisu. |