Counterfeit.ogg
- 1 year ago
- 0
- 0
Криптопровайдер (Cryptography Service Provider, CSP) — это независимый модуль, позволяющий осуществлять криптографические операции в операционных системах Microsoft , управление которым происходит с помощью функций CryptoAPI . Проще говоря, это посредник между операционной системой, которая может управлять им с помощью стандартных функций CryptoAPI , и исполнителем криптографических операций (это может быть как программа, так и аппаратный комплекс).
Любой криптопровайдер должен экспортировать набор обязательных функций, которые формируют системный программный интерфейс CryptoAPI , при этом каждая из этих функций соответствует некоторой функции CryptoAPI . Также криптопровайдер должен обеспечивать:
Приложения не работают напрямую с криптопровайдером. Вместо этого они вызывают функции CryptoAPI из библиотек Advapi32.dll и Crypt32.dll. Операционная система фильтрует вызовы этих функций и вызывает соответствующие функции CryptoAPI , которые непосредственно работают с криптопровайдером.
Минимальный состав криптопровайдера — одна DLL. Обычно эта библиотека хранится в папке \WINDOWS\system32\. Обязательным является контроль целостности этой DLL.
Кроме стандартных функций CryptoAPI , криптопровайдер обычно поддерживает ряд собственных функций. Если собственные функции не реализованы, то DLL действует, по сути, как промежуточный слой между операционной системой и исполнителем криптографических операций.
Одним из основных объектов является ключевой контейнер . Контейнер имеет своё имя, создаётся (или запрашивается, если уже был создан) функцией CryptAcquireContext(…). В контейнере может существовать не более одной пары ключей подписи, одной пары ключей обмена и одного симметричного ключа. Если поддерживается несколько алгоритмов симметричного шифрования, то симметричных ключей может быть несколько, по одному ключу каждого алгоритма.
Пары ключей и симметричные ключи могут находиться только в контейнере. Только открытый ключ пары может находиться вне контейнера.
Закрытые (private) ключи пар ключей экспортируются только в зашифрованном виде. Некоторые криптопровайдеры принципиально не позволяют экспортировать закрытые ключи, даже в зашифрованном виде. Симметричные ключи при экспорте также обязательно шифруются на открытом ключе получателя или ключе согласования. Для вычисления хеш-функций создаются объекты хеширования. Для создания объектов хеширования создавать контейнер не нужно.
Тип криптопровайдера | Номер типа | Алгоритмы ключевого обмена | Алгоритмы цифровой подписи | Алгоритмы шифрования | Алгоритмы хеширования |
---|---|---|---|---|---|
PROV_RSA_FULL | 1 | RSA | RSA | RC2 , RC4 | MD5 , SHA |
PROV_RSA_SIG | 2 | нет | RSA | нет | MD5 , SHA |
PROV_DSS | 3 | нет | DSS | нет | MD5 , SHA |
PROV_FORTEZZA | 4 | DSS | Skipjack | SHA | |
PROV_MS_EXCHANGE | 5 | RSA | RSA | CAST | MD5 |
PROV_SSL | 6 | RSA | RSA | могут быть различными | могут быть различными |
PROV_RSA_SCHANNEL | 12 | RSA | RSA | RC4 , DES , 3DES | MD5 , SHA |
PROV_DH_SCHANNEL | 18 | Диффи-Хеллман (ephemeral) | DSS | DES , 3DES | MD5 , SHA |
PROV_RSA_AES | 24 | RSA | RSA | RC2 , RC4 , AES | MD5 , SHA |
PROV_GOST_94_DH | 71 | ГОСТ Р 34.10-94 | ГОСТ Р 34.10-94 | ГОСТ 28147-89 | ГОСТ Р 34.11-94 |
PROV_GOST_2001_DH | 75 | ГОСТ Р 34.10-2001 | ГОСТ Р 34.10-2001 | ГОСТ 28147-89 | ГОСТ Р 34.11-94 |
PROV_GOST_2012_256 | 80 | ГОСТ Р 34.10-2012 256 бит | ГОСТ Р 34.10-2012 256 бит | ГОСТ 28147-89 , ГОСТ 34.12-2018 | ГОСТ Р 34.11-2012 256 бит |
PROV_GOST_2012_512 | 81 | ГОСТ Р 34.10-2012 512 бит | ГОСТ Р 34.10-2012 512 бит | ГОСТ 28147-89 , ГОСТ 34.12-2018 | ГОСТ Р 34.11-2012 512 бит |
Во все операционные системы Microsoft, начиная с Windows 2000, встроен криптопровайдер Microsoft Base Cryptographic Provider , который обладает набором основных криптографических функций. В Microsoft Base Cryptographic Provider длина ключей шифрования не превышает 40 бит. Так как до января 2000 года в США существовал запрет на экспорт программного обеспечения для шифрования с использованием ключей длиной более 40 бит, то в Windows 98 и ранних версиях Windows 2000 существовала поддержка только этого криптопровайдера. Microsoft Base Cryptographic Provider по сути является урезанным вариантом Microsoft Enhanced Cryptographic Provider . Но после отмены запрета на экспорт стало бессмысленно иметь 2 криптопровайдера, поэтому программисты Microsoft ввели ещё одно название — Microsoft Strong Cryptographic Provider , который ничем не отличается от Microsoft Enhanced Cryptographic Provider. Этот криптопровайдер является криптопровайдером по умолчанию типа PROV_RSA_FULL в Windows 2000, Windows XP, Windows 2003.
Все криптопровайдеры Microsoft могут быть скачаны с сайта Microsoft.
Криптопровайдер | Имя криптопровайдера | Тип | Комментарий |
---|---|---|---|
Microsoft Base Cryptographic Provider | MS_DEF_PROV | PROV_RSA_FULL | Имеет широкий набор основных криптографических функций. Длина ключей шифрования не превышает 40 бит. |
Microsoft Strong Cryptographic Provider | MS_STRONG_PROV | PROV_RSA_FULL | Отличается от Microsoft Base Cryptographic Provider поддержкой больших длин ключей. |
Microsoft Enhanced Cryptographic Provider | MS_ENHANCED_PROV | PROV_RSA_FULL | Ничем не отличается от Microsoft Strong Cryptographic Provider. Является криптопровайдером по умолчанию. |
Microsoft AES Cryptographic Provider | MS_ENH_RSA_AES_PROV | PROV_RSA_AES | = Microsoft Enhanced Cryptographic Provider с поддержкой AES |
Microsoft DSS Cryptographic Provider | MS_DEF_DSS_PROV | PROV_DSS | Хеширование, подпись, проверка подписи с поддержкой алгоритма DSS . |
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider | MS_DEF_DSS_DH_PROV | PROV_DSS_DH | Хеширование, подпись DSS , генерация и обмен ключами Диффи-Хеллмана. Поддерживает генерацию ключей для протоколов SSL3 и TLS1. |
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider | MS_ENH_DSS_DH_PROV | PROV_DSS_DH | То же, что и Microsoft Base DSS and Diffie-Hellman Cryptographic Provider с поддержкой больших длин ключей. |
Microsoft DSS and Diffie-Hellman/Schannel Cryptographic Provider | MS_DEF_DH_SCHANNEL_PROV | PROV_DH_SCHANNEL | Хеширование, подпись DSS, генерация и обмен ключами Диффи-Хеллмана. Поддерживает генерацию ключей для протоколов SSL3 и TLS1. |
Microsoft RSA/Schannel Cryptographic Provider | MS_DEF_RSA_SCHANNEL_PROV | PROV_RSA_SCHANNEL | Хеширование, подпись, проверка подписи. Используется для аутентификации в протоколах SSL 3.0 and TLS 1.0. |
Microsoft RSA Signature Cryptographic Provider | MS_DEF_RSA_SIG_PROV | PROV_RSA_SIG | Минимальная функциональность, необходимая для электронной подписи и проверки ЭЦП. |