Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Michael Makushev  
#1 Оставлено : 13 января 2008 г. 16:50:40(UTC)
Michael Makushev

Статус: Участник

Группы: Участники
Зарегистрирован: 11.01.2008(UTC)
Сообщений: 22
Откуда: Санкт-Петербург

В продолжении темы про Access Violation Есть достаточно странная ситуация:
На машине установи эмулятор дисковода (отсутсвавал как вид вообще) после чего создал на нем контейнер посредством CryptAcquireContext и параметра CRYPT_NEWKEYSET. Контейнер был благополучно создан (физически это выглядело как каталог Makushev.000 и файл def.key ), далее в вашем центре сертификации попытался получить сертификат (ссылка http://www.cryptopro.ru/certsrv/certcarc.asp) и установил его без всяческих доп запросов. Куда он установился и как это мне честно говоря не понятно. Дальше при попытке получить сертификат...что-то получаю... но при попытке использовать его дальше возникает ошибка NTE_BAD_ALGID. Используя панель CSP КриптоПро выясняю что в данном контейнере сертификатов нет.
Где грабли и правильная ли последовательность моих действий для получения полноценного контейнера с сертификатом который я смогу использовать для криптования сообщения открытым ключем?
И второй вопрос: как вернуться к исходному состоянию и попытаться заново создать контейнер? Простое уделние контейнера с дискеты не проходит... вторично контейнер не будет создан...
И потом как поместить в контейнер сертификат, если ваша система ругается что контейнер не соответсвует сертификату? У меня если честно началась уже каша...
Offline Максим Коллегин  
#2 Оставлено : 13 января 2008 г. 16:58:14(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Очень сумбурно.
Какая стоит задача?
Для шифрования CryptEncryptMessage закрытый ключ не нужен.
Знания в базе знаний, поддержка в техподдержке
Offline Michael Makushev  
#3 Оставлено : 14 января 2008 г. 3:13:47(UTC)
Michael Makushev

Статус: Участник

Группы: Участники
Зарегистрирован: 11.01.2008(UTC)
Сообщений: 22
Откуда: Санкт-Петербург

maxdm написал:
Очень сумбурно.
Какая стоит задача?
Для шифрования CryptEncryptMessage закрытый ключ не нужен.

Задача проста: используя контейнер который соотв. находится на дискете и сертификат в нем, произвести кодирование, а затем раскодирование некоторого бинарного блоба.
Используя функцию CryptEncryptMessage полагаю это можно сделать.
Дальше чтобы проверить работоспособность программы в лабораторных условиях я устанавливаю пакет КриптоПро, затем включаю эмулятор дисковода и "вставляю" дискету, регистрирую её как считывающее устройство, функцией CryptAcquireContext и параметра CRYPT_NEWKEYSET создаю контейнер (как уже сказал выглядит физически как каталог инекий набор файлов), после чего .... что дальше? Я предполагал что надо в него поместить сертификат который я могу поличить (и получил) в вашем тестовом сертификационном центре. Но при попытке поместить в контейнер сертификат (дабы показывал он свое наличие в этом контейнере с помощью функций вашей сервисной оболочки и был доступен с помощью функций получения сертификатов из моей программы) оболочка ругается что контейнер не совместим с сертификатом или что-то в этом духе. Вот я почему и спрашиваю какая корректная последовательность работы с ключевым носителем, сертификатом и контейнером, дабы все таки проверить мне корректную работу моей программы?
И ещё грабли на которые я наступил: решив начать процесс проверки с начала, я вашими средствами удалил контейнер и решил создать его заново... в чем крупно обломался... так как на словах сервисной оболочки контейнер создавался, чего физически не наблюдалось, и не подтверждалось той же самой оболочкой...
Offline Максим Коллегин  
#4 Оставлено : 14 января 2008 г. 6:32:18(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
1. Кодирование и шифрование - разные вещи.
2. CryptEncryptMessage шифрует, затем кодирует в ASN1.
3. Для шифрования нужен лишь открытый ключ (сертификат) получателя. Для расшифрования, соответственно закрытый.
4. Как вы устанавливали в контейнер сертификат я не знаю - для работы Decrypt нужно, чтобы у сертификата в хранилище была ссылка на закрытый ключ. Сертификат в контейнере нужен лишь для удобства пользователя (и для Propagate - но это выходит за рамки темы).
5. Код по шифрованию-расшифрованию я привел в предыдущем топике - если что не понятно - спрашивайте - попробую помочь. Корректная последовательность - там же - переводить в Pascal не буду - лет 10 уже не пользовался.
6. Все проблемы с Pascal обычно из-за кривых заголовочных файлов или маршаллинга.
7. Начать можно с этого http://www.citforum.ru/p...mming/delphi/use_crypto/

Знания в базе знаний, поддержка в техподдержке
Offline Michael Makushev  
#5 Оставлено : 14 января 2008 г. 20:40:06(UTC)
Michael Makushev

Статус: Участник

Группы: Участники
Зарегистрирован: 11.01.2008(UTC)
Сообщений: 22
Откуда: Санкт-Петербург

maxdm написал:
1. Кодирование и шифрование - разные вещи.
2. CryptEncryptMessage шифрует, затем кодирует в ASN1.
3. Для шифрования нужен лишь открытый ключ (сертификат) получателя. Для расшифрования, соответственно закрытый.
4. Как вы устанавливали в контейнер сертификат я не знаю - для работы Decrypt нужно, чтобы у сертификата в хранилище была ссылка на закрытый ключ. Сертификат в контейнере нужен лишь для удобства пользователя (и для Propagate - но это выходит за рамки темы).
5. Код по шифрованию-расшифрованию я привел в предыдущем топике - если что не понятно - спрашивайте - попробую помочь. Корректная последовательность - там же - переводить в Pascal не буду - лет 10 уже не пользовался.
6. Все проблемы с Pascal обычно из-за кривых заголовочных файлов или маршаллинга.
7. Начать можно с этого http://www.citforum.ru/p...mming/delphi/use_crypto/


1. Согласен, погорячился.
2. Так же согласен, но я это опускал, так как меня интересовал конечный результат
3. Это я в курсе ещё из института. И про методы выработки больших чисел.
4. А для работы CryptEncrypt что нужно?
5. -
6. Я согласен. Но от моего согласия или несогласия код сам не перепишется...
7. Спасибо.
Так что существенным для меня остался 4-й вопрос. Каким образом мне получить контейнер на дискете и привязать к ключу в нем совместимый сертификат.
Offline Максим Коллегин  
#6 Оставлено : 14 января 2008 г. 21:55:54(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Для CryptEncrypt нужен сессионный ключ (или открытый ключ RSA - но такая схема используется исключительно редко)
Контейнер с сертификатом и сам сертификат проще всего сгенерить и получить на нашем тестовом центре.
Можно использовать makecert из MS SDK, но только для буржуйских алгоритмов.
PS. CryptEncrypt и CryptEncryptMessage - абсолютно разные функции.

Отредактировано пользователем 14 января 2008 г. 22:00:12(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Michael Makushev  
#7 Оставлено : 14 января 2008 г. 22:01:14(UTC)
Michael Makushev

Статус: Участник

Группы: Участники
Зарегистрирован: 11.01.2008(UTC)
Сообщений: 22
Откуда: Санкт-Петербург

maxdm написал:
Для CryptEncrypt нужен сессионый ключ (или открытый ключ RSA - но такая схема используется исключительно редко)
Контейнер с сертификатом и сам сертификат проще всего сгенерить и получить на нашем тестовом центре.
Можно использовать makecert из MS SDK, но только для буржуйских алгоритмов.
PS. CryptEncrypt и CryptEncryptMessage - абсолютно разные функции.

Я в курсе что разные... просто я полагал что мы ведем разговор CryptEncryptMessage.
Ну вот получил я в вашем центре контейнер... и что дальше? как его пометить на носитель типа "дискета"?
Offline Максим Коллегин  
#8 Оставлено : 14 января 2008 г. 22:44:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Хм, а на каком алгоритме и носителе вы его сгенерили?
Знания в базе знаний, поддержка в техподдержке
Offline Michael Makushev  
#9 Оставлено : 15 января 2008 г. 16:39:09(UTC)
Michael Makushev

Статус: Участник

Группы: Участники
Зарегистрирован: 11.01.2008(UTC)
Сообщений: 22
Откуда: Санкт-Петербург

maxdm написал:
Хм, а на каком алгоритме и носителе вы его сгенерили?

На машине установил эмулятор дисковода (отсутсвавал как вид вообще) после чего создал на нем контейнер посредством CryptAcquireContext и параметра CRYPT_NEWKEYSET. На сколько я помню после него пявился контейнер. И применял так же
Цитата:
CryptGenKey(hProv, CALG_RC4, AT_KEYEXCHANGE, nil);
Offline Максим Коллегин  
#10 Оставлено : 15 января 2008 г. 23:58:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
хм, а не проще сгенерить ключ на страничке запроса на сертификат?
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.