Cryptographic Service Provider
Cryptographic Service Provider (CSP) — це незалежний модуль, що дозволяє здійснювати криптографічні операції в операційних системах Microsoft Windows, управління яким відбувається за допомогою функцій Microsoft CryptoAPI[1]. Модуль реалізує функції розшифрування і зашифрування які потім прикладна програма може використати для створення системи аутентифікації, захищеної електронної пошти чи чогось подібного. Простими словами криптопровайдер виступає посередником між операційною системою та виконавцем криптографічних опрецій(програма чи апаратний комплекс).
Одним з основних об'єктів є ключовий контейнер. Контейнер має своє ім'я, створюється (або запитується, якщо вже був створений) функцією CryptAcquireContext(...). У контейнері може існувати не більше однієї пари ключів підпису, однієї пари ключів обміну і одного симетричного ключа. Якщо підтримується декілька алгоритмів симетричного шифрування, то симетричних ключів може бути кілька, по одному ключу кожного алгоритму.
Пари ключів і симетричні ключі можуть знаходитися тільки в контейнері. Тільки відкритий ключ пари може перебувати поза контейнером.
Закриті (private) ключі пар ключів експортуються тільки в зашифрованому вигляді. Деякі криптопровайдери принципово не дозволяють експортувати закриті ключі, навіть у зашифрованому вигляді. Симетричні ключі при експорті також обов'язково шифруються на відкритому ключі одержувача або ключі узгодження. Для обчислення хеш-функцій створюються об'єкти хешування. Для створення об'єктів хешування створювати контейнер не потрібно.
У всі операційні системи 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 | Мінімальна функціональність, необхідна для електронного підпису та перевірки ЕЦП. |
- ↑ Cryptographic Service Providers (Windows). MSDN. Архів оригіналу за 20 червня 2018. Процитовано 20 червня 2018.
- Інтерфейс CryptoAPI [Архівовано 12 вересня 2015 у Wayback Machine.] (рос.)
- Типи криптопровайдерів [Архівовано 25 червня 2018 у Wayback Machine.] (англ.)