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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Программист  
#1 Оставлено : 14 июля 2020 г. 21:42:55(UTC)
Программист

Статус: Новичок

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

Здравствуйте!

У нас имеется набор подписанных документов. К каждому документу прилагается набор подписей в формате PKCS7. Этими документами нам нужно обмениваться со сторонней системой, но для каждого документа можно передать только один контейнер с информацией о подписях. Подскажите, как программно (.Net) можно корректно слить все имеющиеся подписи в один контейнер?
Вроде как, это можно сделать с помощью SignedCms, но что-то пока ничего не понятно, я новичок в криптографии.

Спасибо!

Offline two_oceans  
#2 Оставлено : 23 июля 2020 г. 1:48:16(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
В вопросе недостаточно данных для ответа. Поясню, хотя формат называется PKCS7, у него есть вариации и без знания из какой вариации в какую нужен перевод, точно ответить сложно. Кроме того, формат самой подписи в контейнере также может быть разным. Опишу два крайних сценария - простейший и сложнейший.

1) исходные несколько PKCS7 в кодировка Base64 c заголовками и надо получить такой же Base64 c заголовками, но один со всеми подписями (без объединения DER структур). Тогда сработает просто склейка файлов, без всякого SignedCms. Этот сценарий подразумевает что целевая информационная система сможет правильно их разделить, очистить от заголовков, преобразовать кодировку и проверить каждую подпись отдельно (а не только первую по порядку). Другими словами, мы сваливаем все в кучу, а проверяющая сторона разбирает.

Промежуточные сценарии - то же + преобразование кодировки, ну в принципе перекодировка в Base64 это несложно, заголовки есть в документации по формату, для этого нет острой необходимости в SignedCms, но конечно удобнее использовать преобразование из библиотек чем реализовать самому.

2) требуется получить PKCS7 содержащий все подписи в одной DER структуре (с преобразованием кодировки или без преобразования) - тогда задача объединения решается через SignedCms и мягко говоря "нетривиальна", даже может быть невозможна без изменения таких важных атрибутов как время подписи на текущее время. Детали зависят от формата самой подписи. Этот сценарий подразумевает, что целевая информационная система проверяет только первую DER структуру из PKCS7 файла и игнорирует остальное содержимое, то есть склейка не сработает и нам придется изначально "разложить все по полочкам".

Посоветую сначала испробовать первый вариант (при необходимости с перекодировкой в Base64 - если целевая система поддерживает PKCS7 в Base64, то скорее всего умеет выполнять и все остальные операции по разбору и проверке), а если первый вариант не поможет - переходить ко второму. Уже с уточнением вопроса - какой именно формат у подписей в контейнере.

Отредактировано пользователем 23 июля 2020 г. 1:50:49(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.