Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Пакетная расшифровка когда контейнер закрытого ключа находится на рутокене
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Здравствуйте!
Стоит задача написать консольную утилиту, которая принимала бы параметры закрытого ключа и некий текст, зашифрованный открытым ключом, а на выходе в консоль выводила оригинальный текст. Причём возможны варианты когда используют утилиту в пакетном (*.bat) режиме в цикле, например, 20 раз. При этом важна скорость обработки.
Я сделал первый вариант. В нём при каждом вызове утилиты перечисляются доступные контейнеры, выбирается нужный, вводится пароль контейнера (который передаётся в утилиту через параметры запуска), создаётся контекст закрытого ключа, вызывается функция CryptDecryptMessage. На всё уходит около 8-10 секунд, что недостаточно быстро, необходимо на порядок быстрее.
Поэтому, я разделил задачу на 3 этапа: 1. Инициализация ключа. Выполняется 1 раз. Всё до создания контекста закрытого ключа включительно; 2. Расшифровка. Выполняется много раз. Функция CryptDecryptMessage (дважды, разумеется); 3. Очистка памяти. Выполняется 1 раз.
Поскольку CryptDecryptMessage не использует токен, желаемый результат достигается. Работает моментально. А токен вообще можно отключить от рабочей станции...
Вопросы к знатокам: насколько безопасно и надёжно хранить закрытый ключ в оперативной памяти? Есть ли другой способ (не связанный с выбором "более быстрого" носителя, чем рутокен).
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Насколько я понял, для повышения безопасности такого решения стоит в контрольной панели Крипто-ПРО на вкладке Security указать хранение ключей не в памяти приложения, а в сервисе хранения ключей ("Keys Storage Service").
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Пробую сделать кэширование средствами CryptoAPI, используя пример http://cryptopro.ru/cryptopro/forum/view.asp?q=478Почему-то при попытке CertGetCertificateContextProperty(pCertContext, CERT_KEY_PROV_INFO_PROP_ID, nil, @datalen) с флагом CERT_KEY_PROV_INFO_PROP_ID возникает исключительная ситуация "The certificate does not have the specified property. Важно! Я получаю контекст закрытого ключа с помощью CryptGetUserKey, а не с помощью CryptAcquireCertificatePrivateKey. Связано это с тем, что сам контекст сертификата получают из контейнера закрытого ключа (куда он записывается при создании нового ключа).
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Вопрос-то в чем? В msdn все написано. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Ругается 2148081675 'Cannot find the certificate and private key for decryption'. Может, надо после получения сертификата из контейнера закрытого ключа принудительно связывать ключ и сертификат? Отредактировано пользователем 29 мая 2010 г. 3:12:55(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
В контейнере нет контекста сертификата - там голый сертификат в DER. Для расшифровки придется установить сертификат в личные и связать с ключом. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Ух... Вызывал CertAddCertificateContextToStore, CertSetCertificateContextProperty. Всё отрабатывало без ошибок, но связи не было. Благодаря http://www.cryptopro.ru/...oPro/forum/view.asp?q=81 понял в чём подвох. Надо сначала связать контекст сертификата с ключом, а потом устанавливать сертификат в хранилище. Тогда будет ссылка. Отредактировано пользователем 31 мая 2010 г. 21:14:54(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2008(UTC) Сообщений: 66 Откуда: Москва
|
Отлично! Теперь кэшируется.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Пакетная расшифровка когда контейнер закрытого ключа находится на рутокене
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close