Криптопровайдер
Криптопровайдер (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 | RSA | RSA | RC2, RC4 | MD5, SHA |
PROV_RSA_AES | RSA | RSA | RC2, RC4, AES | MD5, SHA |
PROV_RSA_SIG | нет | RSA | нет | MD5, SHA |
PROV_RSA_SCHANNEL | RSA | RSA | RC4, DES, 3DES | MD5, SHA |
PROV_DSS | нет | DSS | нет | MD5, SHA |
PROV_DH_SCHANNEL | DH (ephemeral) | DSS | DES, 3DES | MD5, SHA |
PROV_FORTEZZA | KEA | DSS | Skipjack | SHA |
PROV_MS_EXCHANGE | RSA | RSA | CAST | MD5 |
PROV_SSL | RSA | RSA | могут быть различными | могут быть различными |
PROV_GOST_94_DH | ГОСТ Р 34.10-94 | ГОСТ Р 34.10-94 | ГОСТ 28147-89 | ГОСТ Р 34.11-94 |
PROV_GOST_2001_DH | ГОСТ Р 34.10-2001 | ГОСТ Р 34.10-2001 | ГОСТ 28147-89 | ГОСТ Р 34.11-94 |
Криптопровайдеры 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 | Минимальная функциональность, необходимая для электронной подписи и проверки ЭЦП. |
Эта статья или раздел носит выраженный рекламный характер. Это не соответствует правилам Википедии. Вы можете помочь проекту, исправив текст согласно стилистическим рекомендациям Википедии.
|
См. также
Напишите отзыв о статье "Криптопровайдер"
Ссылки
- [msdn.microsoft.com/en-us/library/aa380245(VS.85).aspx Раздел, посвященный криптопровайдерам на MSDN]
- [www.osp.ru/win2000/2001/05/174887/ Интерфейс CryptoAPI]
- [www.freevbcode.com/ShowCode.asp?ID=804 Encryption using CryptoAPI]
- [msdn.microsoft.com/en-us/library/aa380244(VS.85).aspx Типы криптопровайдеров]
- [www.securitylab.ru/informer/240665.php ГОСТ Р 34.11-94]
Отрывок, характеризующий Криптопровайдер
Только когда уже перестала бороться жертва и вскрики ее заменились равномерным протяжным хрипеньем, толпа стала торопливо перемещаться около лежащего, окровавленного трупа. Каждый подходил, взглядывал на то, что было сделано, и с ужасом, упреком и удивлением теснился назад.«О господи, народ то что зверь, где же живому быть!» – слышалось в толпе. – И малый то молодой… должно, из купцов, то то народ!.. сказывают, не тот… как же не тот… О господи… Другого избили, говорят, чуть жив… Эх, народ… Кто греха не боится… – говорили теперь те же люди, с болезненно жалостным выражением глядя на мертвое тело с посиневшим, измазанным кровью и пылью лицом и с разрубленной длинной тонкой шеей.
Полицейский старательный чиновник, найдя неприличным присутствие трупа на дворе его сиятельства, приказал драгунам вытащить тело на улицу. Два драгуна взялись за изуродованные ноги и поволокли тело. Окровавленная, измазанная в пыли, мертвая бритая голова на длинной шее, подворачиваясь, волочилась по земле. Народ жался прочь от трупа.
В то время как Верещагин упал и толпа с диким ревом стеснилась и заколыхалась над ним, Растопчин вдруг побледнел, и вместо того чтобы идти к заднему крыльцу, у которого ждали его лошади, он, сам не зная куда и зачем, опустив голову, быстрыми шагами пошел по коридору, ведущему в комнаты нижнего этажа. Лицо графа было бледно, и он не мог остановить трясущуюся, как в лихорадке, нижнюю челюсть.
– Ваше сиятельство, сюда… куда изволите?.. сюда пожалуйте, – проговорил сзади его дрожащий, испуганный голос. Граф Растопчин не в силах был ничего отвечать и, послушно повернувшись, пошел туда, куда ему указывали. У заднего крыльца стояла коляска. Далекий гул ревущей толпы слышался и здесь. Граф Растопчин торопливо сел в коляску и велел ехать в свой загородный дом в Сокольниках. Выехав на Мясницкую и не слыша больше криков толпы, граф стал раскаиваться. Он с неудовольствием вспомнил теперь волнение и испуг, которые он выказал перед своими подчиненными. «La populace est terrible, elle est hideuse, – думал он по французски. – Ils sont сошше les loups qu'on ne peut apaiser qu'avec de la chair. [Народная толпа страшна, она отвратительна. Они как волки: их ничем не удовлетворишь, кроме мяса.] „Граф! один бог над нами!“ – вдруг вспомнились ему слова Верещагина, и неприятное чувство холода пробежало по спине графа Растопчина. Но чувство это было мгновенно, и граф Растопчин презрительно улыбнулся сам над собою. „J'avais d'autres devoirs, – подумал он. – Il fallait apaiser le peuple. Bien d'autres victimes ont peri et perissent pour le bien publique“, [У меня были другие обязанности. Следовало удовлетворить народ. Много других жертв погибло и гибнет для общественного блага.] – и он стал думать о тех общих обязанностях, которые он имел в отношении своего семейства, своей (порученной ему) столице и о самом себе, – не как о Федоре Васильевиче Растопчине (он полагал, что Федор Васильевич Растопчин жертвует собою для bien publique [общественного блага]), но о себе как о главнокомандующем, о представителе власти и уполномоченном царя. „Ежели бы я был только Федор Васильевич, ma ligne de conduite aurait ete tout autrement tracee, [путь мой был бы совсем иначе начертан,] но я должен был сохранить и жизнь и достоинство главнокомандующего“.
Слегка покачиваясь на мягких рессорах экипажа и не слыша более страшных звуков толпы, Растопчин физически успокоился, и, как это всегда бывает, одновременно с физическим успокоением ум подделал для него и причины нравственного успокоения. Мысль, успокоившая Растопчина, была не новая. С тех пор как существует мир и люди убивают друг друга, никогда ни один человек не совершил преступления над себе подобным, не успокоивая себя этой самой мыслью. Мысль эта есть le bien publique [общественное благо], предполагаемое благо других людей.
Для человека, не одержимого страстью, благо это никогда не известно; но человек, совершающий преступление, всегда верно знает, в чем состоит это благо. И Растопчин теперь знал это.
Он не только в рассуждениях своих не упрекал себя в сделанном им поступке, но находил причины самодовольства в том, что он так удачно умел воспользоваться этим a propos [удобным случаем] – наказать преступника и вместе с тем успокоить толпу.
«Верещагин был судим и приговорен к смертной казни, – думал Растопчин (хотя Верещагин сенатом был только приговорен к каторжной работе). – Он был предатель и изменник; я не мог оставить его безнаказанным, и потом je faisais d'une pierre deux coups [одним камнем делал два удара]; я для успокоения отдавал жертву народу и казнил злодея».
Приехав в свой загородный дом и занявшись домашними распоряжениями, граф совершенно успокоился.
Через полчаса граф ехал на быстрых лошадях через Сокольничье поле, уже не вспоминая о том, что было, и думая и соображая только о том, что будет. Он ехал теперь к Яузскому мосту, где, ему сказали, был Кутузов. Граф Растопчин готовил в своем воображении те гневные в колкие упреки, которые он выскажет Кутузову за его обман. Он даст почувствовать этой старой придворной лисице, что ответственность за все несчастия, имеющие произойти от оставления столицы, от погибели России (как думал Растопчин), ляжет на одну его выжившую из ума старую голову. Обдумывая вперед то, что он скажет ему, Растопчин гневно поворачивался в коляске и сердито оглядывался по сторонам.
Сокольничье поле было пустынно. Только в конце его, у богадельни и желтого дома, виднелась кучки людей в белых одеждах и несколько одиноких, таких же людей, которые шли по полю, что то крича и размахивая руками.
Один вз них бежал наперерез коляске графа Растопчина. И сам граф Растопчин, и его кучер, и драгуны, все смотрели с смутным чувством ужаса и любопытства на этих выпущенных сумасшедших и в особенности на того, который подбегал к вим.
Шатаясь на своих длинных худых ногах, в развевающемся халате, сумасшедший этот стремительно бежал, не спуская глаз с Растопчина, крича ему что то хриплым голосом и делая знаки, чтобы он остановился. Обросшее неровными клочками бороды, сумрачное и торжественное лицо сумасшедшего было худо и желто. Черные агатовые зрачки его бегали низко и тревожно по шафранно желтым белкам.