У меня есть два файла с одинаковым содержимым: msg.txt и msg2.txt. Msg.txt был подписан, msg2.txt - не был подписан. Но я вижу, что оба файла проходят проверку подписи.
Почему это так? Я думал, что если я подпишу файл, подпись должна быть прикреплена где-то к файлу. Но hexdump
показывает, что между файлами нет никакой разницы.
msg.txt
$ hexdump -C msg.txt
00000000 48 69 0a |Hi.|
00000003
msg2.txt
$ hexdump -C msg2.txt
00000000 48 69 0a |Hi.|
00000003
Теперь каждый новый файл, который содержит " Привет "только слово может быть успешно проверено. Что если другой пользователь создаст файл со словом «Привет»?
openssl req -x509 -sha512 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Создание файлов
$ echo "Hi" > msg.txt
$ echo "Hi" > msg2.txt
Знак msg.txt
$ openssl dgst -sha512 -sign key.pem -out /tmp/signature msg.txt
$ openssl base64 -in /tmp/signature -out signature
Проверка подписи msg.txt
$ openssl base64 -d -in signature -out /tmp/signature
$ openssl x509 -pubkey -noout -in cert.pem > pubkey.pem
$ openssl dgst -sha512 -verify pubkey.pem -signature /tmp/signature msg.txt
Verified OK
Проверка подписи msg2.txt
$ openssl dgst -sha512 -verify pubkey.pem -signature /tmp/signature msg2.txt
Verified OK