| ||||
| ||||
Задача: необходимо осуществлять передачу данных в шифрованном виде. Можно ли каким-то образом выковорить из сертификата его закрытый ключ (с открытым проблем нет) и использовать эту ключевую пару для шифрования асимметричным алгоритмом (тем же RSA). Есть электронный USB ключ eToken (версия R2) с действующим сертификатом. Приходит значит человечек, вставляет ключик, прога берет из него (из сертификата) закрытый ключ и расшифровывает необходимый текст. Схема такая. Резюме: так можно (если да, то как) получить ДОСТУП к закрытому ключу сертификата. Заранее благодарен. | ||||
Ответы: | ||||
| ||||
Сертификат содержит ТОЛЬКО открытый ключ (читайте стандарты) | ||||
| ||||
Сертификат СОДЕРЖИТ закрытый ключ ("Есть закрытый ключ, соответствующий этому сертификату"). Раз есть ключ, вроде должен быть и доступ... | ||||
| ||||
Дейтвительно в сертификате нет закрытого ключа. Соответсвует это не значит содержит. Другое дело, когда вы ведете речь о ключевом носителе (том же eToken). Он как раз предназначен чтобы хранить закрытый ключ и сертификат. | ||||
| ||||
Начальство хотело воспользоваться уже существующим ключом, который по идее должен был лежать в сертификате. И если сертификат ключ все-таки не содержит, то зачем в CryptoApi существует функция CryptAcquireCertificatePrivateKey | ||||
| ||||
Еще раз. Сертификат не содержит ключа. Спавочник сертификатов может хранить как сертификаты, так и вместе с каждым из сертификатов, дополнительную информацию (атрибут). Одним из таких атрибутов является ссылка на закрытый ключ. Она содержит имя криптопровайдера, который использовался для создания закрытого ключа и имя ключа (ключевого контейнера). Когда вызывается функция, о которой вы говорите, используется эта ссылка, инициализируется криптопровайдер и читается ключ. | ||||
| ||||
Спасибо большое за разъяснения. И все-таки проблема остается. Есть сервер сертификатов, который собственно эти сертификаты выдает. Можно ли сделать, чтобы к этим сертификатам цеплялись ключевые контейнеры (key containers) с парой открытый/закрытый ключ. Сертификат вместе с контейнером кладется на USB электронный ключ (тот же eToken). Ключ вставляется, програ хавает из него закрытый ключ и расшифровывает информацию, т.е. расшифровать информацию может только владелец USB брелка. | ||||
| ||||
А чем проблема? Вы рассказали, как вам нужно сделать. Нормальная схема. | ||||
| ||||
Схема то нормальная, но КАК это сделать? Нужен конкретный механизм реализации способа подключения ключевого контейнера к сертификату. В идеале - подробная инструкция с примерами, но буду благодарен просто за ссылку по теме. Только чтобы тема соответствовала... Я просто первый раз с проблемой шифрования столкнулся, по работе понадобилось, так что очень мало во всем этой пока что понимаю... | ||||
| ||||
Вы собираетесь программировать или использовать готовые решения? | ||||
| ||||
Лично я бы сам все программировал, но начальство хотело бы использовать готовое решение (само шифрование предполагается осуществлять средствами CryptoApi и/или CAPICOM) | ||||
| ||||
Есть готовое решение - наша разработка "Приложение командной строки" http://www.cryptopro.ru/CryptoPro/products/command.asp Оно позволяет осуществлять ЭЦП и шифрование на сертификатах, которые берутся из хранилища сертификатов компьютера или из файлов сертификатов. Есть наш пример (с исходниками) реализации ЭЦП и шифрования с помощью CryptoAPI - http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip | ||||
| ||||
Спасибо, пример скачал. Осталось самое простое. Поставить C# и разобраться как все это дело работает. Кстати, а хелпа к проге из примера нет? | ||||
| ||||
Не знаю, наверное ущи у меня холодные... Скачал с вашего сайта КриптоПро 2.0, установил, никаких ярлыков нигде не появилось. Хелп не работает, запускается, но просит какой-то ключ. Исполняемые файлы из папку, в которую установил КриптоПро, запускаются, висят в списке процессов и всё. Что делать? | ||||
| ||||
После установки нашего CSP иконка "КриптоПро CSP" появляется в Панели управления. При перезагрузке криптопровайдер стартует автоматически. Я не совсем понял - что Вы понимаете под словом "хелп"? Много документации есть на http://www.cryptopro.ru/CryptoPro/products/documentation.asp | ||||