18.12.2007 9:24:06 | алгоритм работы | | Ответов: 16 |
|
Михаил Макушев | | |
|
Подскажите ссылку или последовательность работы с CSP через CryptoAPI. Работа для Delphi, с несимметричными открытыми ключами. То есть у меня есть контейнер созданный функцией CryptAcquireContext, сгенерированный ключ функцией CryptGenKey, затем при попытке получить этот ключ функцией CryptGetUserKey и применить его к некоторому блоку с помощью функции CryptEncrypt получаю ошибку, номера которой нет в вашей документации. Объясните мне примерно что я делаю не так и где можно найти как надо делать правитьно? |
|
Ответы:
|
18.12.2007 12:00:58 | Kirill Sobolev |
|
КриптоПро CSP поддерживает шифрование произвольных блоков данных только на симметричных ключах. |
|
18.12.2007 12:04:16 | Михаил Макушев |
|
Хорошо, а непроизвольные (т.е. фиксированного объема)? мне это не принципиально. Мне нужна принцип построения каркаса программы. |
|
18.12.2007 13:45:36 | Kirill Sobolev |
|
Я имел ввиду, что асимметричные ключи могут применяться только для шифрования симметричных ключей по алгоритму Диффи-Хельмана. |
|
18.12.2007 13:51:59 | Михаил Макушев |
|
"Имя, сестра, имя!"... есть что ни будь вроде ссылок на то в какой последовательности и что желательно применить? |
|
|
Вам же говорят, что CryptEncrypt не может работать с ассиметричными ключами. Единственная функция, которая может как-то с этим справится это CryptSignHash. |
|
18.12.2007 14:12:04 | Михаил Макушев |
|
Хорошо. Я правильно понимаю: сначала применяю сессионный симметричный ключ, затем его через ... что? Как применить публичный и приватные ключи? |
|
|
Сначала читают про то, что собираются использовать.
Вы прочитали что-нибудь про CryptoAPI?
|
|
18.12.2007 15:04:22 | Михаил Макушев |
|
http://www.citforum.ru/security/articles/defense
"...
Описанная схема реализована и в CryptoAPI.
..."
Поправьте меня ели я ошибаюсь. Или скажите что статья врет. Тогда следует сказать что CryptoAPI ВООБЩЕ не работает с ассиметричными ключами |
|
|
И вправду реализована :) И даже описана чуть ниже в абзаце "Обмен ключами". Правда не очень хорошо описана, но все же что-то есть. |
|
|
Дабы не разводить долгих дискурсий все-таки поясню подробнее.
В связи со сложностью работы ассиметричных алгоритмов с большими объемами данных шифрование данных выполняют с помощью симметричных алгоритмов, на некоем сессионном ключе. В дальшейшем сам сессионный ключ шифруется с помощью ассиметричных алгоритмов и отправляется вместе с сообщением получателю. |
|
|
Небольшая поправка: в алгоритме Диффе-Хелмана сессионный ключ не шифруется, а изначально получается как некая производная от закрытого/открытого ключей получателя и отправителя. Но в более простом случае алгоритм работы с ассиметричными алгоритмами в CryptoAPI можно считать аналогичным описаному мною ранее. |
|
18.12.2007 16:28:59 | Kirill Sobolev |
|
Не CryptoAPI не работает - ему по большому счету все равно, а работает или не работает конкретный CSP. КриптоПро CSP не позволяет использовать шифрование на ключевой паре, а MS провайдер - позволяет. |
|
19.12.2007 10:20:03 | Михаил Макушев |
|
То есть если я правильно понял из ваших слов, КриптоПро не поддерживает экспорт сессионного ключа шифруемого публичным получателя? |
|
19.12.2007 11:39:32 | Михаил Макушев |
|
Однако в документации по CSP написано
"СКЗИ КриптоПро CSP позволяет использовать стойкие сертифицированные средства криптографической защиты информации в составе обширного инструментария и программного обеспечения корпорации Microsoft, для реализации различных защищенных систем документооборота и электронной коммерции, на основе Инфраструктуры Открытых Ключей (Public Key Infrastructure), соответствующей международным рекомендациям X.509, RFC 2459." |
|
19.12.2007 12:04:02 | Kirill Sobolev |
|
>> То есть если я правильно понял из ваших слов, КриптоПро не >> поддерживает экспорт сессионного ключа шифруемого публичным >>>получателя
Поддерживает. Но не открытым ключем, а ключем обмена, получаемого из ОК получателя и секретного ключа отправителя (он может быть эфемеральный, т.е. временный). Получатель создает аналогичный ключ обмена из своего секретного ключа и ОК отправителя (переданного вместе с сообщением) и им уже расшифровывает сессионный ключ. |
|
19.12.2007 13:58:32 | Михаил Макушев |
|
Хорошо. Я допускаю такие принципы работы. Но какой алгоритм построения шифрованного сообщения? Какие функции надо применять в какой последовательности? |
|