id: Гость   вход   регистрация
текущее время 16:52 15/12/2017
Автор темы: Гость, тема открыта 22/03/2015 01:22 Печать
Категории: криптография, эцп
https://www.pgpru.com/Форум/Криптография/ПроверкаЭлектроннойПодписи
создать
просмотр
ссылки

Проверка электронной подписи


Как проверить ЭЦП даного сообщения?
<dict>
       
        <key> Message </ key>


        <data>
        (в кодировке base64 сообщение и сертификат Request)

</ data>

        


        <key> СертификатCertChain </ key>
        

<data>

        (в кодировке base64 цепочка сертификатов RSA в том числе корневого центра сертификации в формате DER)

</ data>

        <key> Подпись </ key>


        <data>
        (в кодировке base64 подпись (SHA1 + RSA) из Message, проверка подписи с использованием СертификатCertChain)
        </ data>


  </ dict>


 
Комментарии
— SATtva (22/03/2015 12:08, исправлен 22/03/2015 12:11)   профиль/связь   <#>
комментариев: 11516   документов: 1035   редакций: 4048

Взять данные из этого XML и скормить их тому софту, которым они генерировались (возможно, это OpenSSL, тогда см. man dgst и man rsautl).

— artvel (22/03/2015 12:18)   <#>
Вот ссылка на само сообщение https://mega.co.nz/#!bcwn3K4Q!.....ggLEuGgE5_slMr3oic5U
Все что мне нужно это проверить валидность подписи используя OpenSSL.
— SATtva (22/03/2015 12:30)   профиль/связь   <#>
комментариев: 11516   документов: 1035   редакций: 4048
Для начала, надо хотя бы знать порядок генерации подписи: что подавалось в контекст хэш-функции — исходные данные или base64-кодированные, как каноникализировать переносы строк и пр.?
— artvel (22/03/2015 12:45)   <#>
В контекст хэш-функции подавались данные в base64-кодировке без переносов.
— Гость (22/03/2015 13:54)   <#>
А противник может подписать фейковое сообщение открытым ключом получателя от имени знакомого получателя?
— SATtva (22/03/2015 14:34, исправлен 22/03/2015 14:36)   профиль/связь   <#>
комментариев: 11516   документов: 1035   редакций: 4048

По идее, порядок действий должен быть таков:


  1. Декодируйте блок ключа из Base64 и сохраните в файл chain.

  1. Выполните
    openssl x509 -inform der -in chain | openssl x509 -pubkey -noout > key
  2. Декодируйте блок подписи и сохраните в файле sig.

  1. Сохраните блок сообщения в требуемом виде в файле msg.

  1. Выполните
    openssl dgst -sha1 -verify key -signature sig msg

У меня, однако, подпись не сверяется. Возможно, где-то допущена ошибка или требуется какая-то предобработка данных, о которой Вы не упомянули. В любом случае, направление Вам дали, дальше можете разобраться сами.



Во-первых, оффтопик, а, во-вторых, нет, не может: подпись генерируется закрытым ключом.

Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3