Верификация открепленной цифровой подписи
Есть два файла.
- Оригинальный текстовый файл (filename.txt)
- Файл цифровой подписи (filename.txt.sig)
Необходимо проверить: к этому ли файлу принадлежит эта подпись (этой ли подписью подписан этот файл), в общем убедиться, что файл оригинальный (не измененный) и подпись это подтверждает.
Формат подписи такой:
-----BEGIN CMS-----
закодировано base64
-----END CMS-----
C помощью openssl посмотрел дамп этой подписи, скачал crt и crl файлы (url на которые нашёл в дампе), попробовал верифицировать файл с помощью командной строки openssl.
$ openssl cms -verify -content filename.txt -in filename.txt.sig -certfile cert.crt
unable to load certificates
Что я делаю не так? Как нужно делать правильно? Я в этом совершенно не понимаю пока ничего, но надеюсь с вашей помощью разобраться. Онлайн верификаторы сразу нет.
Ответы (2 шт):
Нужно использовать движек для подписей по GOST.
Опенсорсный от Криптоком
Лицензионый от Криптопро
https://cryptopro.ru/blog/2016/04/07/modul-gost-capi для старых openssl
gostengy для новых openssl
На WSL Debian я собрал openssl с gost-engine
$ openssl version -v
OpenSSL 1.1.1p 21 Jun 2022
$ openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gost) Reference implementation of GOST engine
$ openssl ciphers | tr ':' '\n' | grep GOST
GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89
Пытаюсь проверить:
$ openssl smime -verify -noverify -in file.csv.sig -content file.csv -inform der
Error reading S/MIME message
140193840948480:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:crypto/asn1/tasn_dec.c:1149:
140193840948480:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:309:Type=PKCS7
$ openssl cms -verify -noverify -in file.csv.sig -content file.csv -inform der
Error reading S/MIME message
140553009644800:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:crypto/asn1/tasn_dec.c:1149:
140553009644800:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:309:Type=CMS_ContentInfo
Что-то делаю не так. А что не знаю. Как нужно правильно не знаю.