Interested Article - Криптопровайдер

Криптопровайдер (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

Во все операционные системы 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 Минимальная функциональность, необходимая для электронной подписи и проверки ЭЦП.

См. также

Ссылки

Источник —

Same as Криптопровайдер