и Функції, что реалізують Перетворення ВИЩОГО уровня - Роботу з сертіфікатамі Х.509, обробка кріптографічніх Повідомлень PKCS # 7 та Другие Функції, что підтрімують інфраструктуру відкритих ключів. Однак набор базових кріптографічніх функцій цього інтерфейсу утворює CryptoAPI 1.0. Таким чином, Функції CryptoAPI 1.0 утворюють кріптографічне ядро ​​прикладного уровня для СУЧАСНИХ операційніх систем лінійкі Windows. Програміст, Який працює з ЦІМ інтерфейсом, может отріматі усю необхідну інформацію про Певного криптопровайдера засобой Функції CryptGetProvParam . Перше, что звітність, знаті при цьом - це набор кріптографічніх стандартів, Які реалізують встановлені у Системі криптопровайдерів. Окрім різніці у стандартах, криптопровайдерів відрізняються способом ФІЗИЧНОЇ організації Збереження ключової ІНФОРМАЦІЇ. З точки зору програмування способ зберігання ключів значення не має, однак ВІН Дуже ВАЖЛИВО з точки зору ЕКСПЛУАТАЦІЇ та безпеки комп'ютерної системи. Існуючі криптопровайдерів Microsoft зберігають ключовими інформацію на жорсткий диск (у реєстрі або у файлах), а провайдери других фірм (GemPlus, Schlumberger та Infineon) - на смарт-картки. Если Способи ФІЗИЧНОЇ організації Збереження ключової ІНФОРМАЦІЇ у кріптопровайдерів відрізняється, то логічна структура, яка візначається інтерфейсамі та з Якою мают Справу програмісті, однакова для будь-якого типу провайдера. Ключовий база візначається набором ключовими контейнеров, КОЖЕН з якіх має ім'я, что прівласнюється Йому при створенні, а потім вікорістовується для роботи з ним. У ключовими контейнері зберігається довготривала ключовими інформація, Наприклад, ключові парі для цифрового підпісу або несіметрічної системи шифрування.
Тепер розглянемо детально, як Функції інтерфейсу CryptoAPI віклікають бібліотеки конкретного криптопровайдера. Коженая криптопровайдер має свое власне имя та тип. Его имя - просто рядок, за помощью Якого система его ідентіфікує. Так, базовий криптопровайдер Microsoft має Назву Microsoft Base Cryptographic Provider v1.0. Тип криптопровайдера - ціле число (у нотації С - DWORD), значення Якого ідентіфікує набор кріптографічніх алгорітмів, что підтрімуються. Криптопровайдер Microsoft має тип 1, цею тип провайдера реалізує в якості алгорітмів цифрового підпісу та обміну ключів алгоритм RSA. Інший базовий криптопровайдер Microsoft, "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider ", має тип 13. Цею тип криптопровайдера реалізує алгоритм цифрового підпісу DSS, а в якості алгоритму обміну ключами - протокол Діффі-Хелмана.
Отже, для роботи з набором криптопровайдерами у системному реєстрі містіться список імен усіх кріптопровайдерів. З шкірно ім'ям пов'язаний тип криптопровайдера та имя бібліотеки, яка реалізує его алгоритми.
Окрім цього в Системі містіться інформація про ті, Який криптопровайдер треба застосовуваті, ЯКЩО користувач явно не вказано конкретнішими его ім'я, позбав Визначи тип провайдера. Такий криптопровайдер назівають провайдером за замовчуванням для заданого типу. Наприклад, для типу 1 провайдером за замовчуванням є Microsoft Base Cryptographic Provider v1.0, а для типом 13 - Microsoft Base DSS and Diffie-Hellman Cryptographic Provider. Для визначення кріптопровайдерів за замовчуванням Використовують функцію CryptGetDefaultProvider, а для Зміни цього параметру - Функції CryptSetProvider або CryptSetProviderEx . Функції дозволяють Встановити провайдера за замовчуванням як для потокового користувача, так и для системи в цілому (усіх Користувачів). Ці параметри зберігаються у Вулик Реєстру HKEY_LOCAL_MACHINE. Параметри, встановлені для потокового користувача, мают Пріоритет над параметрами, встановленного для усієї системи, та зберігаються у Вулик Реєстру HKEY_CURRENT_USER. Если параметри для потокового користувача відсутні, застосовуються загальносістемні.
Тепер розглянемо, Яким чином користувач почінає працювати з конкретним криптопровайдером, І як система віклікає Конкретних бібліотеку, что відповідає вибраному | криптопровайдерів.
Робота з ПЄВНЄВ провайдером ПОЧИНАЄТЬСЯ з виклику Функції CryptAcquireContext , де користувач візначає тип потрібного криптопровайдера, его Назву та Назву РОБОЧЕГО ключового контейнера. У результаті роботи функція повертає Користувач дескриптор криптопровайдера (Handle), за помощью Якого користувач в подалі буде Звертатися до нього та передаваті его у процедури для Виконання усіх необхідніх кріптографічніх операцій. Детальний опис контексту роботи з криптопровайдерами та прикладом (мовою програмування З ) Дивіться у кніжці Щербакова Л.Ю., Домашева А.В. В«Прикладна криптографіяВ». p> Власне бібліотеки CryptoAPI разом з файлами заголовків та ДОПОМОГИ постачаються у складі бібліотек MSDN.
В
Література
1. Галицький А.В., Рябко С.Д., Шаньгина В.Ф. Захист інформації в мережі. - М.: ДМК Пресс, 2004. p> 2....