Цифровая подпись - отдельная PKCS#7 до XML -DSIG
-
22-09-2019 - |
Вопрос
Я борюсь со следующим сценарием:
XML-Message создается клиентская сторона и цифровой подписан с использованием Window Mozilla's Window.crypto.Signtext. После подписи сообщение и подпись передаются через веб -сервис (.net) на сервер. Все в порядке до этого момента.
На сервере XML должен быть включен в другой XML-документ, который общедоступен. Подпись должна быть опубликована также для предоставления невозврата.
В: Существует ли плавный вариант для преобразования отдельных PKCS#7 в XML-DSIG (например, функциональность в рамках .NET)?
Q2: Или возможно создать XML-DSIG уже клиентскую сторону без использования внешних плагинов?
TNX за вашу помощь!
Алоис Полин
Решение
Из -за характера обоих форматов цифровых подписей XML и PKCS#7 невозможно преобразовать из одного в другой.
В очень упрощенном объяснении подпись в PKCS#7 Формат содержит, помимо прочего, некоторую конкретную структуру данных, называемую DigestinFo, которая содержит DATA Digest и OID (идентификатор объекта), и был забит закрытым ключом пользователя. А XML-DSIG Формат применяет окончательный этап криптографического алгоритма (опять же с закрытым ключом пользователя) к другому значению данных, рассчитанному по перевариванию исходных данных XML и некоторых конкретных структур данных XML-DSIG. Следовательно, поскольку оба зашифрованных значения не будут одинаковыми, можно только генерировать подпись XML-DSIG, подписав данные с закрытым ключом пользователя, к которому вы не будете иметь доступ (таким образом, имя частного).
Из этого объяснения ответ на ваш первый вопрос: «Нет, плавный вариант нет, он вообще невозможно».
Поэтому единственный вариант-генерировать XML-DSIG непосредственно на стороне клиента. Это невозможно с использованием стандартного JavaScript, определенно не в Windure's Window.crypto (который генерирует только отдельные подписи PKCS7). В моей компании (www.isigma.es), мы решаем, что, используя апплет, это общее решение в индустрии цифровых подписей (есть много коммерческих, а также некоторых решений с открытым исходным кодом). Это может быть не вариант в вашем случае, если вам не нужны плагины браузера.
CAPICOM (на основе Windows Active/X-компонент, который вы можете использовать в настройке Microsoft) также не генерирует XML-DSIG, только CMS/PKCS7.