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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline crypto7  
#1 Оставлено : 14 мая 2021 г. 9:19:57(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Доброго дня!

Уважаемые эксперты, интересует такой вопрос. Есть ли возможность с помощью КриптоПро ЭЦП SDK и, в частности, COM-интерфейса (CAdESCOM) подписывать файлы в формате CMS? Используя функцию Sign объекта oSignedData у меня получилось создать файл подписи с расширением ".p7s", который проводник Windows трактует как "Подпись в формате PKCS#7". Не знаю, насколько это верно. Существует ли возможность теми же (или другими) средствами создать подпись в формате CMS? Или я что-то не так понимаю...
Разъясните, пожалуйста.
Offline Андрей *  
#2 Оставлено : 14 мая 2021 г. 9:49:44(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Здравствуйте.
Верно, не понимаете.
Какое отношение расширение имеет к формату, кроме как подсказки для ОС, в каком приложении открывать файл?


Цитата:
Используя функцию Sign объекта oSignedData у меня получилось создать файл подписи с расширением ".p7s", который проводник Windows трактует как "Подпись в формате PKCS#7"

Смените на нужное, если оно Вам известно.

https://www.cryptopro.ru/products/cades/

CAdES = CMS Advanced Electronic Signatures

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
crypto7 оставлено 14.05.2021(UTC)
Offline crypto7  
#3 Оставлено : 14 мая 2021 г. 10:15:41(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.
Верно, не понимаете.
Какое отношение расширение имеет к формату, кроме как подсказки для ОС, в каком приложении открывать файл?


Цитата:
Используя функцию Sign объекта oSignedData у меня получилось создать файл подписи с расширением ".p7s", который проводник Windows трактует как "Подпись в формате PKCS#7"

Смените на нужное, если оно Вам известно.

https://www.cryptopro.ru/products/cades/

CAdES = CMS Advanced Electronic Signatures



Получается файл подписи, который у меня создается с помощью CAdESCOM как раз и имеет формат CAdES = CMS Advanced Electronic Signatures?

Отредактировано пользователем 14 мая 2021 г. 10:16:15(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 14 мая 2021 г. 10:35:25(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Автор: crypto7 Перейти к цитате


Получается файл подписи, который у меня создается с помощью CAdESCOM как раз и имеет формат CAdES = CMS Advanced Electronic Signatures?


Да
Техническую поддержку оказываем тут
Наша база знаний
Offline crypto7  
#5 Оставлено : 14 мая 2021 г. 12:56:13(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Спасибо!

Можете еще подсказать - что мне необходимо сделать для того, чтобы получить подпись в кодировке BASE64, а не в DER?

При вызове функции

oSignedData.Sign(oSigner, True, CADESCOM_BASE64_TO_BINARY)

на выходе получается файл в кодировке DER, если я правильно понял. Потому что, подписывая тот же файл с помощью КриптоАРМ, и указывая кодировку BASE64, структура файла подписи образуется совершенно отличная от той, что получается в моем случае.

В то же время, если я меняю параметр кодировки в этой функции на

oSignedData.Sign(oSigner, True, CADESCOM_STRING_TO_UCS2LE)

то при проверке подписи КриптоАРМ, появляются два сообщения об ошибке



Как мне все-таки реализовать подпись файла в кодировке BASE64?

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

Offline Андрей *  
#6 Оставлено : 14 мая 2021 г. 14:01:13(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Цитата:
Потому что, подписывая тот же файл с помощью КриптоАРМ, и указывая кодировку BASE64, структура файла подписи образуется совершенно отличная от той, что получается в моем случае.


Что\как сравниваете, зачем?

Кодирование в base64 по-умолчанию.
Откройте в том же блокноте, чтобы убедиться (или на демо-страницах это видно).

Ранее давал ссылку: https://docs.cryptopro.r.../icpsigneddata2signcades
Цитата:
EncodingType:
По умолчанию CAPICOM_ENCODE_BASE64. В КриптоПро ЭЦП Browser plug-in кодировка DER (параметр CAPICOM_ENCODE_BINARY) не поддерживается
Техническую поддержку оказываем тут
Наша база знаний
Offline crypto7  
#7 Оставлено : 14 мая 2021 г. 16:09:52(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: Андрей * Перейти к цитате
Цитата:
Потому что, подписывая тот же файл с помощью КриптоАРМ, и указывая кодировку BASE64, структура файла подписи образуется совершенно отличная от той, что получается в моем случае.


Что\как сравниваете, зачем?

Кодирование в base64 по-умолчанию.
Откройте в том же блокноте, чтобы убедиться (или на демо-страницах это видно).

Ранее давал ссылку: https://docs.cryptopro.r.../icpsigneddata2signcades
Цитата:
EncodingType:
По умолчанию CAPICOM_ENCODE_BASE64. В КриптоПро ЭЦП Browser plug-in кодировка DER (параметр CAPICOM_ENCODE_BINARY) не поддерживается


Я использую COM-интерфейс и среду программирования Delphi 7. Поменял кодировку в функции на CAPICOM_ENCODE_BASE64.

При открытии подписи блокнотом, формат вроде бы похож на тот, который и должен быть у файла в кодировке BASE64. Но при попытке "Проверить подпись..." в КриптоАРМ, программа мне сообщает, что "Расшифрованный файл не является подписью (0x80070057)". При нажатии в КриптоАРМ кнопки "Снять и проверить ЭП" показывается сообщение об "ошибке декодирования ASN1-данных (0x80004005).
Offline Андрей *  
#8 Оставлено : 14 мая 2021 г. 16:38:01(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Использовал и этот вариант, проблем не было.
Приложи файл.
Техническую поддержку оказываем тут
Наша база знаний
Offline crypto7  
#9 Оставлено : 17 мая 2021 г. 9:15:18(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: Андрей * Перейти к цитате
Использовал и этот вариант, проблем не было.
Приложи файл.


Вот исходный файл, который подписываю. s1.txt (1kb) загружен 7 раз(а).
Offline crypto7  
#10 Оставлено : 17 мая 2021 г. 12:42:53(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Пробовал и другие файлы - в формате .pdf. Результат одинаковый - ошибка ASN1-данных...
Offline Андрей *  
#11 Оставлено : 17 мая 2021 г. 12:45:13(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Автор: crypto7 Перейти к цитате
Пробовал и другие файлы - в формате .pdf. Результат одинаковый - ошибка ASN1-данных...


Не нужно так делать...
Я предложил показать файл, который записывается (ответ от CAdESCOM) из программы на Delphi7 и который не принимает КриптоАРМ.
Потому что у меня таких проблем нет. Мне не нужен исходный файл.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#12 Оставлено : 17 мая 2021 г. 12:52:12(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,295
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 85 раз
Поблагодарили: 302 раз в 284 постах
Предположу, что до сохранения результат как-либо портится или сохраняется не в полном объеме (длина base64 без переводов строк должна быть кратна 4). Также для BASE64 подписи может быть важно наличие правильных заголовков - так проверяющей программе легче будет опознать чего же ей выдали в файл. Впрочем, КриптоАРМ создает/проверяет подписи без заголовков.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
crypto7 оставлено 17.05.2021(UTC)
Offline crypto7  
#13 Оставлено : 17 мая 2021 г. 15:26:28(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: Андрей * Перейти к цитате
Автор: crypto7 Перейти к цитате
Пробовал и другие файлы - в формате .pdf. Результат одинаковый - ошибка ASN1-данных...


Не нужно так делать...
Я предложил показать файл, который записывается (ответ от CAdESCOM) из программы на Delphi7 и который не принимает КриптоАРМ.
Потому что у меня таких проблем нет. Мне не нужен исходный файл.


Вот то, что получается после подписи.
s2.txt (17kb) загружен 1 раз(а).
Offline crypto7  
#14 Оставлено : 17 мая 2021 г. 15:27:42(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: two_oceans Перейти к цитате
Предположу, что до сохранения результат как-либо портится или сохраняется не в полном объеме (длина base64 без переводов строк должна быть кратна 4). Также для BASE64 подписи может быть важно наличие правильных заголовков - так проверяющей программе легче будет опознать чего же ей выдали в файл. Впрочем, КриптоАРМ создает/проверяет подписи без заголовков.


Спасибо за совет! Я подумал добавить тэги begin/end cms в начало и конец файла, но это, к сожалению, не помогло.
Offline Андрей *  
#15 Оставлено : 17 мая 2021 г. 16:10:04(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Автор: crypto7 Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: crypto7 Перейти к цитате
Пробовал и другие файлы - в формате .pdf. Результат одинаковый - ошибка ASN1-данных...


Не нужно так делать...
Я предложил показать файл, который записывается (ответ от CAdESCOM) из программы на Delphi7 и который не принимает КриптоАРМ.
Потому что у меня таких проблем нет. Мне не нужен исходный файл.


Вот то, что получается после подписи.
s2.txt (17kb) загружен 1 раз(а).


s2_.txt.p7s (7kb) загружен 1 раз(а).

этот файл успешно проверяется?

Проблема в кодировании base64
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#16 Оставлено : 17 мая 2021 г. 16:11:27(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Snimok ehkrana ot 2021-05-17 17-10-56.png (24kb) загружен 3 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#17 Оставлено : 17 мая 2021 г. 16:14:43(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,481
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1568 раз в 1207 постах
Сохранение ответа от COM как реализовано?

Вот, если правильно сохранить приведенный выше файл:
s2.ANSI.txt.p7s (9kb) загружен 1 раз(а).

Snimok ehkrana ot 2021-05-17 17-13-25.png (11kb) загружен 3 раз(а).
Snimok ehkrana ot 2021-05-17 17-13-00.png (15kb) загружен 3 раз(а).



Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
crypto7 оставлено 17.05.2021(UTC)
Offline crypto7  
#18 Оставлено : 17 мая 2021 г. 16:36:56(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Автор: Андрей * Перейти к цитате
Сохранение ответа от COM как реализовано?

Вот, если правильно сохранить приведенный выше файл:
s2.ANSI.txt.p7s (9kb) загружен 1 раз(а).

Snimok ehkrana ot 2021-05-17 17-13-25.png (11kb) загружен 3 раз(а).
Snimok ehkrana ot 2021-05-17 17-13-00.png (15kb) загружен 3 раз(а).





Андрей, спасибо вам большое за помощь и советы. Дело было действительно в банальном сохранении ответа от COM. Я сохранял его через FileStream.WriteBuffer, с помощью еще какой-то дополнительной функции (этот код был не мой). Попробовал сохранить результат из TMemo и все заработало! Спасибо!
Offline crypto7  
#19 Оставлено : 17 мая 2021 г. 17:18:13(UTC)
crypto7

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.05.2021(UTC)
Сообщений: 48
Российская Федерация
Откуда: NN

Сказал(а) «Спасибо»: 15 раз
Можно задать еще один попутный вопрос?)

Пытаюсь понять, как правильно (какой функцией COM-интерфейса) можно проверить созданный файл ЭП при отсутствии подключения к интернету? И какой формат при этом должна иметь подпись... Как я понял, для автономной ("оффлайн") проверки ЭП, она обязательно должна быть представлена в формате CAdES-X Long Type 1. Например, если я сделаю подпись формата CADES-BES, то для ее проверки потребуется доступ к внешним ресурсам для подтверждения статуса сертификата. Так ли это?

Отредактировано пользователем 17 мая 2021 г. 17:19:59(UTC)  | Причина: Не указана

Offline two_oceans  
#20 Оставлено : 18 мая 2021 г. 8:09:53(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,295
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 85 раз
Поблагодарили: 302 раз в 284 постах
В основном, так. Действительно, для оффлайн проверки нужны "доказательства подлинности" в ЭП, которые можно добавить как минимум в формате CAdES-X Long Type 1 (есть и более продвинутые форматы, но про их поддержку пока ничего не известно). Соответственно для подписания потребуются лицензии на TSP и OCSP клиенты, может потребоваться подписка на услуги сервера доверенного времени. Такая подпись будет действовать и после истечения срока сертификата подписавшего, пока действителен сертификат сервера доверенного времени. Максимум - пока алгоритм подписи не признают ненадежным.

Тем не менее, если сертификат подписавшего еще не истек, возможна проверка cades-bes, cades-t по локальной копии списка отзыва сертификатов (СОС или CRL) в хранилище сертификатов. Если срок действия локальной копии СОС не истек, то подключение к интернету не обязательно (ниже примечание), а вот OCSP без интернета не будет работать. Срок определяется каждым УЦ для каждого вида СОС индивидуально (есть плановые СОС, экстренные, разделенные по причинам отзыва и т.д.). Установить новый СОС в хранилище предполагается с какого-то носителя, записанного на компьютере, где интернет есть.
В зависимости от интерфейса могут быть предусмотрены флаги разрешающие или запрещающие СОС или OCSP-проверку или обязывающие проверять только онлайн. Подробности надо посмотреть в справке, COM интерфейс в некоторых местах не предоставляет выбора.

Примечание. Есть небольшой момент в самом стандарте СОС - после примерно 2/3 срока действия срабатывает проверка не вышла ли новая версия СОС, в таком случае без интернета будет некая задержка перед собственно проверкой, но если срок действия СОС не закончился дальше проверка подписи должна пройти штатно независимо от успешности получения новой версии СОС.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
crypto7 оставлено 18.05.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.