Cryptographic Service Provider (CSP) este un modul independent care vă permite să efectuați operațiuni criptografice în sistemele de operare Microsoft , care este controlat folosind funcțiile CryptoAPI . Mai simplu spus, este un intermediar între sistemul de operare, care îl poate gestiona folosind funcțiile standard CryptoAPI și executantul operațiunilor criptografice (aceasta poate fi fie un program, fie un complex hardware).
Orice furnizor de cripto trebuie să exporte un set de funcții obligatorii care formează interfața de programare a sistemului CryptoAPI , fiecare dintre aceste funcții corespunzând unei anumite funcții CryptoAPI . De asemenea, furnizorul cripto trebuie să furnizeze:
Aplicațiile nu funcționează direct cu furnizorul cripto. În schimb, apelează funcțiile CryptoAPI din bibliotecile Advapi32.dll și Crypt32.dll. Sistemul de operare filtrează aceste apeluri de funcții și apelează funcțiile CryptoAPI corespunzătoare care lucrează direct cu furnizorul de cripto.
Compoziția minimă a unui criptofurnizor este un DLL. Această bibliotecă este de obicei stocată în folderul \WINDOWS\system32\. Este obligatoriu controlul integrității acestui DLL.
În plus față de funcțiile CryptoAPI standard , un furnizor de cripto acceptă de obicei o serie de funcții proprii. Dacă funcțiile native nu sunt implementate, atunci DLL-ul acționează, de fapt, ca un strat intermediar între sistemul de operare și executorul operațiunilor criptografice.
Unul dintre obiectele principale este containerul pentru chei . Containerul are propriul nume, este creat (sau solicitat dacă a fost deja creat) de către funcția CryptAcquireContext(...). Într-un container poate exista cel mult o pereche de chei de semnătură, o pereche de chei de schimb și o pereche de chei simetrice. Dacă sunt acceptați mai mulți algoritmi de criptare simetrici, atunci pot exista mai multe chei simetrice, câte o cheie pentru fiecare algoritm.
Perechile de chei și cheile simetrice pot locui numai într-un container. Doar cheia publică a perechii poate fi în afara containerului.
Cheile private ale perechilor de chei sunt exportate doar în formă criptată. Unii furnizori de criptografii nu permit în mod fundamental exportarea cheilor private, chiar și în formă criptată. La exportul cheilor simetrice, acestea trebuie, de asemenea, să fie criptate folosind cheia publică a destinatarului sau cheia de negociere. Obiectele hash sunt create pentru a calcula funcții hash. Nu trebuie să creați un container pentru a crea obiecte hash.
Tip de furnizor de cripto | Număr de tip | Algoritmi de schimb de chei | Algoritmi de semnătură digitală | Algoritmi de criptare | Algoritmi de hashing |
---|---|---|---|---|---|
PROV_RSA_FULL | unu | RSA | RSA | RC2 , RC4 | MD5 , SHA |
PROV_RSA_SIG | 2 | Nu | RSA | Nu | MD5 , SHA |
PROV_DSS | 3 | Nu | DSS | Nu | MD5 , SHA |
PROV_FORTEZZA | patru | KEA | DSS | lista | SHA |
PROV_MS_EXCHANGE | 5 | RSA | RSA | CAST | MD5 |
PROV_SSL | 6 | RSA | RSA | poate fi diferit | poate fi diferit |
PROV_RSA_SHANNEL | 12 | RSA | RSA | RC4 , DES , 3DES | MD5 , SHA |
PROV_DH_SHANNEL | optsprezece | Diffie-Hellman (efemer) | 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 biți | GOST R 34.10-2012 256 biți | GOST 28147-89 , GOST 34.12-2018 | GOST R 34.11-2012 256 biți |
PROV_GOST_2012_512 | 81 | GOST R 34.10-2012 512 biți | GOST R 34.10-2012 512 biți | GOST 28147-89 , GOST 34.12-2018 | GOST R 34.11-2012 512 biți |
Toate sistemele de operare Microsoft, începând cu Windows 2000, au încorporat un Microsoft Base Cryptographic Provider , care are un set de funcții criptografice de bază. În Microsoft Base Cryptographic Provider , cheile de criptare sunt limitate la 40 de biți. Deoarece înainte de ianuarie 2000 a existat o interdicție privind exportul de software de criptare folosind chei mai lungi de 40 de biți în Statele Unite, doar acest furnizor de criptografie a fost acceptat în Windows 98 și versiunile anterioare ale Windows 2000. Microsoft Base Cryptographic Provider este în esență o versiune simplificată a Microsoft Enhanced Cryptographic Provider . Dar după ce a fost ridicată interdicția de export, a devenit inutil să existe 2 furnizori de criptografie, așa că programatorii Microsoft au introdus un alt nume - Microsoft Strong Cryptographic Provider , care nu este diferit de Microsoft Enhanced Cryptographic Provider. Acest furnizor cripto este furnizorul cripto implicit de tip PROV_RSA_FULL pe Windows 2000, Windows XP, Windows 2003.
Toți furnizorii de criptografii Microsoft pot fi descărcați de pe site-ul web Microsoft.
Furnizor de cripto | Numele furnizorului de criptografii | Tip de | cometariu |
---|---|---|---|
Furnizor de criptografic de bază Microsoft | MS_DEF_PROV | PROV_RSA_FULL | Are o gamă largă de funcții criptografice de bază. Lungimea cheilor de criptare nu depășește 40 de biți. |
Microsoft Strong Criptographic Provider | MS_STRONG_PROV | PROV_RSA_FULL | Diferă de Microsoft Base Cryptographic Provider în sprijinul cheilor de lungimi mari. |
Furnizor de criptografie îmbunătățit Microsoft | MS_ENHANCED_PROV | PROV_RSA_FULL | Nu este diferit de Microsoft Strong Cryptographic Provider. Este furnizorul implicit de criptografii. |
Furnizor criptografic Microsoft AES | MS_ENH_RSA_AES_PROV | PROV_RSA_AES | = Microsoft Enhanced Cryptographic Provider cu suport AES |
Furnizor criptografic Microsoft DSS | MS_DEF_DSS_PROV | PROV_DSS | Hashing, semnare, verificare a semnăturii cu suport pentru algoritmul DSS . |
Microsoft Base DSS și Diffie-Hellman Cryptographic Provider | MS_DEF_DSS_DH_PROV | PROV_DSS_DH | Hashing, semnare DSS , generare și schimb de chei Diffie-Hellman. Suportă generarea de chei pentru protocoalele SSL3 și TLS1. |
Microsoft Enhanced DSS și Diffie-Hellman Cryptographic Provider | MS_ENH_DSS_DH_PROV | PROV_DSS_DH | La fel ca Microsoft Base DSS și Diffie-Hellman Cryptographic Provider cu suport pentru chei de lungimi mari. |
Microsoft DSS și Diffie-Hellman/Schannel Cryptographic Provider | MS_DEF_DH_SHANNEL_PROV | PROV_DH_SHANNEL | Hashing, semnare DSS, generare și schimb de chei Diffie-Hellman. Suportă generarea de chei pentru protocoalele SSL3 și TLS1. |
Furnizor de criptografic Microsoft RSA/Schannel | MS_DEF_RSA_SHANNEL_PROV | PROV_RSA_SHANNEL | Hashing, semnare, verificare semnătură. Folosit pentru autentificare în protocoalele SSL 3.0 și TLS 1.0. |
Furnizor criptografic de semnătură Microsoft RSA | MS_DEF_RSA_SIG_PROV | PROV_RSA_SIG | Funcționalitatea minimă necesară pentru semnătura electronică și verificarea semnăturii digitale. |