Криптопровайдер тури
|
Калит алмашиш алгоритми
|
ЭРИ алгоритми
|
Шифрлаш алгоритми
|
Хэшлаш алгоритми
|
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_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 компаниясининг криптопровайдерларидир, Windows операцион тизимида қўлланилувчи бир қанча крптопровайдерлар мавжуд бўлиб, уларда ҳар хил турдаги криптографик алгоритмлардан фойдаланилади.
Криптопровайдер
|
Криптопровайдер номи
|
Тури
|
Изоҳ
|
Microsoft Base Cryptographic Provider
|
MS_DEF_PROV
|
PROV_RSA_FULL
|
Асосий ериптографик функциялар. Шифрлаш калити узунлиги 40 битдан кичик.
|
Microsoft Strong Cryptographic Provider
|
MS_STRONG_PROV
|
PROV_RSA_FULL
|
Калит узунлиги катта.
|
Microsoft AES Cryptographic Provider
|
MS_ENH_RSA_AES_PROV
|
PROV_RSA_AES
|
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 RSA/Schannel Cryptographic Provider
|
MS_DEF_RSA_SCHANNEL_PROV
|
PROV_RSA_SCHANNEL
|
SSL 3.0 ва TLS 1.0 протоколларида аутентификация учун қўлланилади.
|
Ушбу криптопровайдерлардан ташқари МДҲ давлатларида ҳам бир қанча криптопровайдерлар яратилган ва фойдаланиб келинмоқда:
Россия: CryptoPRO CSP, SignalCom-CSP, VipNet-CSP, Crypton-CSP[63].
Қозоғистон: Tumar CSP[63].
Украина: “Криптопровайдер ДСТУ 4145-2002” ва б.
Ҳар бир давлатда ўз криптопровайдери яратилишига сабаб, ҳар бир давлат ўз стандартларига эга, шундай экан бошқа давлатда яратилган криптопровайдерлар бошқа давлат стандартларига мос келмаслиги мумкин.
2. Криптопровайдер интерфейси
Cryptographic Apllication Programming Interface (CryptoAPI)
CryptoAPI интерфейси ўз ичига асосий криптографик функцияларни ҳамда сертификатлар билан ишлаш (Х.509), криптографик ахборотлар билан ишлаш (PKCS#7)ва калитлар билан ишлаш функцияларини олади. CryptoAPI беш қисмдан иборат бўлади[22]:
Расм 2.2. CryptAPI архитектураси
Асосий криптографик функциялар[22];
Криптопровайдерга боғланиш ва у ҳақида маълумот олиш;
Калитларни яратиш ва уларни сақлаш;
Калитларни алмашиш ёки жўнатиш
Сертификатларни кодлаш ва декодлаш (кодни очиш) функциялари;
Маълумотларни шифрлаш, дешифрлаш ҳамда хэшлаш;
Сертификатларни сақлаш функциялари;
Сертификатларни тўплаш ва сақлаш;
Хабарлар билан ишлаш функциялари;
Хабарларни шифрлаш ва дешифрлаш;
Хабарларга электрон рақамли имзо қўйиш;
Қабул қилинган хабарларнинг ҳақиқийлигини текшириш;
Қуйи сатҳли маълумотлар билан ишлаш функциялари;
Барча маълумотлар билан ишлаш функцияларини амалга оширади, фақат қуйи сатҳда амалга оширади яъни барча параметрларни фойдаланувчи беради ва криптографик функцияга тўғридан-тўғри боғланиш имконияти бўлади.
CryptoAPI функциялари
CryptoAPI функциялари криптопровайдерлардан фойдаланишда ва уларни бошқаришда асосий функциялар ҳисобланади, яьни бунда дастурчи мавжуд функциялардан фойдаланиб криптопровайдерда рухсат этилган ихтиёрий амални бажариш мумкин бўлади.
Криптопровайдернинг таркибида мажбурий бўлиш керак бўлган функциялар қуйида кедтирилган, бу функцияларга CryptoAPI орқали мурожаат қилинади[22].
Криптопровайдерни бошқариш функциялари[63]:
Функция
|
Вазифаси
|
CryptAcquireContext
|
Мавжуд криптопровайдернинг аниқ бир контейнери учун дискриптор яратади.
|
CryptContextAddRef
|
Криптопровайдер дискрипторини биттага оширади.
|
CryptEnumProviders
|
Биринчи ёки кейинги мавжуд криптопровайдерниолиш учун фойдаланилади.
|
CryptEnumProviderTypes
|
Биринчи ёки кейинги мавжуд криптопровайдер тоифасини олиш учун фойдаланилади.
|
CryptGetDefaultProvider
|
Кўрсатилган криптопровайдер тури учун асос сифатида (по умолчанию, default)қабул қилинган криптопровайдерни олиш.
|
CryptGetProvParam
|
Криптопровайдер параметрларини қайтаради.
|
CryptReleaseContext
|
CryptAcquireContextтомонидан яратилган криптопровайдер дескрипторини тозалашга фойдаланилади.
|
CryptSetProvider ва CryptSetProviderEx
|
Асос сифатида қабул қилинган криптопровайдер номини ва тоифасини кўрсатиш.
|
CryptSetProvParam
|
Криптопровайдер тоифасини ўрнатиш.
|
Криптографик калитларни бошқариш функциялари:
Функция
|
Вазифаси
|
CryptDeriveKey
|
Берилган параметрлар ёрдамида сессия калитини яратиш.
|
CryptDestroyKey
|
Калит дескрипторини ўчириш.
|
CryptDuplicateKey
|
Калитнинг нусхасини яратиш.
|
CryptExportKey
|
Криптопровайдер контейнеридан криптографик калитни экспорт қилиш.
|
CryptGenKey
|
Тасодифий сессия калитини ва калитлар жуфтлигини генерация қилиш.
|
CryptGenRandom
|
Тасодифий қаторни генерация қилиш.
|
CryptGetKeyParam
|
Калит параметрларини қайтариш.
|
CryptGetUserKey
|
Доимий калитлар жуфтлигининг дескрипторини қайтаради.
|
CryptlmportKey
|
Криптографик калитларни криптопровайдер контейнерига импорт қилишда фойдаланилади.
|
CryptSetKeyParam
|
Калит параметрларини ўрнатади.
|
Симметрик калит ёрдамида шифрлаш ва дешифрлаш функциялари:
Функция
|
Вазифаси
|
CryptDecrypt
|
Маълумотларни дешифрлаш.
|
CryptEncrypt
|
Маълумотларни шифрлаш.
|
Хэш қийматни ҳисоблаш ҳамда хабарнинг электрон имзосини ҳисоблаш ва уни текшириш функциялари:
Функция
|
Вазифаси
|
CryptCreateHash
|
Маълумотларни хэшлаш учун инициализация қилиш.
|
CryptDestroyHash
|
Хэш функция объектини ўчириш.
|
CryptDuplicateHash
|
Хэш функция объектини нусхалаш.
|
CryptGetHashParam
|
Хэш функция объекти параметрларини қайтариш.
|
CryptHashSessionKey
|
Сессия калити қийматини хэш функция объектига қўшиш.
|
CryptSetHashParam
|
Хэш функция объекти параметрларини ўрнатиш.
|
CryptSignHash
|
Хэш қийматдан ЭРИни ҳисоблаш.
|
CryptVerifySignature
|
Мос хэш қийматдан ЭРИни текшириш.
|
CryptoAPI нинг архитектураси.
Расмда келтирилган ва барча функциялари advapi32.dll файлида жойлашади, бир нечта функциялардан ташқари. Бу функциялар қўшимча вазифаларни бажаради ва криптопровайдер таркибида бўлади[33].
Криптопровайдерлар бир-биридан калит базаларини физик ташкил этиш билан фарқланади. Бу дастурий томондан аҳамиятга эга эмас, лекин эксплуатация ва тизимлар хавфсизлигини таъминлашда аҳамияти катта, яъни бунда калитлар жойлашган жойи хисобга олинади, калитлар қаттиқ дисклардаги реестр ёки файлларда жойлашиши мумкин ёки хавфсизликни ошириш мақсадида смарт-карталарда сақланади.
Калитлар омбори контейнерлардан ташкил топади. Ҳар бир калит контейнери ўз номига эга бўлади,контейнерларда узоқ вақт қўлланиладиган калитлар сақланади, бу калитлар ЭРИ имзо калитлари ва симметрик калитларни алмашиш калитларидир.
Қуйида CryptoAPIнинг ишлаш механизмини, яъни CryptoAPI advapi32.dll файлидан криптопровайдерни қандай чақириши ва криптопровайдерни чақиришдан олдин қандай жараёнлар содир бўлишини кўрамиз.
Ҳар криптопровайдер ўз номига ва тоифасига эга бўлади, номи сатр кўринишида бўлади, тизим ушбу ном орқали криптопровайдерни танийди. Криптопровайдер тоифаси эса бутун сон кўринишида бўлади (С дастурлаш тилида DWORD тоифаси). Ушбу тоифа криптопровайдерда қўлланиладиган алгоритмларни ифодалайди.Агар иккита криптопровайдерда бир хил алгоритмлар мавжуд бўлса бундай криптопровайдерларнинг тоифаси бир хил бўлиши мумкин[33].
Битта тизимда бир нечта криптопровайдерлар қўлланилиши мумкин, булар ҳақида маълумот тизим реестрида сақланади. Реестрда криптопровайдер номи унинг тоифаси ва функцияларини ташкил этувчи файл номи билан боғлиқ ҳолда сақланади. Дастурчи криптопровайдердан фойдаланиш учун унинг тоифаси ва номидан фойдаланиб чақиради.Агар фойдаланувчи криптопровайдернинг номини кўрсатмасдан, фақат тоифаси орқали чақирса, унда тизимда шу тоифага асос сифатида ўрнатилган криптопровайдер (Default CSP) чақирилади.
CryptoAPI билан ишлаш CryptoAcquireContext функциясига мурожаат этиш билан бошланади. Ушбу функцияда керакли криптопровайдер номи, тоифаси ва контейнер кўрсатилади.Бу функция криптопровайдер дескрипторини (handle of CSP)қайтаради ва кейинчалик барча жараёнлар шу дескриптор ёрдамида ишлайди.CryptoAcquireContextфункциясида фойдаланувчи ишлатадиган барча функциялар жойлашади.
CryptoAcquireContextфункциясининг асосий вазифаси берилган ном ва тоифадаги криптопровайдерни аниқлаш ва уни юклаш, агар бундай криптопровайдер тизимда мавжуд бўлмаса бу ҳақда хатолик қайтариш ҳамда берилган номдаги контейнерни юклаш, агар криптопровайдерда бундай контейнер мавжуд бўлмаса бу ҳақда хатолик қайтариш, контейнер яратиш ва уни ўчириш.
Do'stlaringiz bilan baham: |