Статус: Новичок
Группы: Участники
Зарегистрирован: 07.12.2023(UTC) Сообщений: 7
|
Добрый день. Задача: Отправитель зашифровывает строку (токен Diadoc) на открытом ключе получателя, получатель должен расшифровать строку своим закрытым ключом в приложении(Delphi/Embarcadero). Ключ находится на смарт-карте (RuToken). Тестирование в панели CryptoPro CSP показывает, что свойство "Экспорт ключа" имеет значение "запрещен" (см. слайд №1). Вопрос 1: значит ли это, что нет возможности экспортировать закрытый ключ за пределы CSP (для приложения) в BLOB-объекты с закрытым ключом (тип PRIVATEKEYBLOB) с помощью функции CryptExportKey? Вопрос 2: если закрытый ключ экспортировать за пределы CSP нельзя, то как быть в этом случае для разрешения задачи по расшифровке строки? export_private_key.png (17kb) загружен 3 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,297 Сказал «Спасибо»: 549 раз Поблагодарили: 2201 раз в 1717 постах
|
Здравствуйте.
1. в программном криптопровайдере - это лишь флаг, в аппаратном - ключ неизвлекаемый. 2. проблема не ясна, пришли зашифрованные данные - расшифруйте там, где есть доступ к закрытому ключу.
Предполагаю, что нет понимания как выглядит процесс расшифровки данных.
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.12.2023(UTC) Сообщений: 7
|
С расшифровкой строки успешно справляется утилита cyrptcp: cryptcp -decr -dn "Сувовров Александр,a.v.suvorov@mail.ru" “c:\temp\tra.txt” “token.txt”
Процесс расшифровывания представляется следующим образом:
1.Получить дескриптор провайдера CryptAcquireContext( &hCryptProv, // handle to the CSP 'te-c55d7585-ad9c-4ecd-9922-821dafa4d326', // container name NULL, // use the default provider PROV_GOST_2001_DH, // provider type 0)
2.Загрузить в CSP ключ, для этого: 2.1. Прочитать BLOB объект из файла с помощью ReadFile например 2.2. Импортировать прочитанный из файла BLOB объект в CSP CryptImportKey( hCryptProv, pbKeyBlob, dwKeyBlobLen, 0, 0, &hKey) ------------------------------------------ 3. Расшифровать строку находящуюся в pbBuffer (длина буфера dwCount) с помощью ключа в hKey. CryptDecrypt( hKey, 0, fEOF, 0, pbBuffer, &dwCount)
Чтобы импортировать BLOB объект с закрытым ключом в CSP, нужно подготовить файл с этим BLOB объектом закрытого ключа. В документации к CryptoAPI описана функция CryptExportKey, позволяющая выгрузить BLOB объект сключами за пределы CSP. Если ее вызвать с параметром PUBLICKEYBLOB, то открытый ключ экспортируется. При вызове с параметром PRIVATEKEYBLOB, возвращается ошибка 2148073482, что видимо естественно, так как закрытый ключ не экспортируемый. Учитывая, что пока результаты по расшифровке отрицательные, скорее всего правильного понимания процесса расшифровки действительно нет. Как было бы реализовать расшифровку более правильно?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,297 Сказал «Спасибо»: 549 раз Поблагодарили: 2201 раз в 1717 постах
|
зашифрованные данные в asn.1 (cms enveloped) ? есть же функции, более высокоуровневые или прям требование такое? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.12.2023(UTC) Сообщений: 7
|
В документации пишут: "Двоичное DER-представление зашифрованного токена" Насколько я понимаю, это и есть ASN.1 ?
Особых требований к реализации нет. Чем проще тем лучше. Какие в таком случае высокоуровневые функции имеет ввиду? CryptDecryptMessage?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,297 Сказал «Спасибо»: 549 раз Поблагодарили: 2201 раз в 1717 постах
|
Да, если размер файла не большой (функция обрабатывает на входе целиком),
Если сотни мб и гб+ то смотреть на поточную обработку. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,297 Сказал «Спасибо»: 549 раз Поблагодарили: 2201 раз в 1717 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.12.2023(UTC) Сообщений: 7
|
Благодарю. Очень богатый источник информации.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.12.2023(UTC) Сообщений: 7
|
Где то есть готовая библиотека с типами TCryptContext, TCert ? Или каким структурам из Windows они соответствуют?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,297 Сказал «Спасибо»: 549 раз Поблагодарили: 2201 раз в 1717 постах
|
JEDI API and JEDI WSCL модуль: jwawincrypt и прочие.
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close