LINUX.ORG.RU

Приклеить цифровую подпись к файлу

 , ,


0

1

Привет, ЛОР!

Подписываю файл стандартным способом: Создаю ключи:

openssl genrsa -F4 -out priv_key.key 2048
openssl req -batch -new -x509 -key priv_key.key -out cert.crt
openssl x509 -in cert.crt -pubkey -noout > pub_key.pub

Создаю подпись файла:

openssl dgst -sha256 -sign priv_key.key -out file1.sha256 file1

Проверяю файл:

openssl dgst -sha256 -verify pub_key.pub -signature file1.sha256 file1

Но вот что раздражает: файла всегда два(файл и его подпись), следовательно, при замене файлов теряется «атомарность» операции. Хочется, чтобы подпись была приклеена к файлу.

Можно приклеить через cat, но тогда при проверке приходится все равно расклеивать один файл в два. Есть ли встроенные механизмы для подобного в openssl или какие-то другие пути создания/проверки подписи?

Ответ на: комментарий от DonkeyHot

там упаковка в сообщение идет - все равно лишние файлы получаются

vgovseychuk
() автор топика

Нет, универсальных способов такое сделать нет.

Тут проблема не в openssl, а в той программе которой ты этот файл открывать собираешься: она должна понять что подпись это подпись, а не кусок полезной нагрузки. Форматы PDF и OOXML например предусматривают специальные поля для подписи и просмотрщик знает что с ней делать. А вот если ты например хочешь прилепить подпись к архиву или картинке, то тут скорее всего ничего не получится.

anonymous
()
Ответ на: комментарий от anonymous

Верно. Но тут именно в openssl загвоздка: как ей дать понять, что надо не весь файл(склеенный с подписью) верифицировать, а только ту его часть, которая собственно файл?

vgovseychuk
() автор топика
Ответ на: комментарий от vgovseychuk

openssl - в первую очередь библиотека, во вторую - тонкая CLI-обертка вокруг библиотеки. Используй программу, предназначенную для подписи/верификации файлов, например, gpg или signify из OpenBSD.

deadNightTiger ★★★★★
()
Ответ на: комментарий от deadNightTiger

Спасибо, посмотрю эти утилиты. На крайний случай, можно свой верификатор написать

vgovseychuk
() автор топика

а что значит «атомарность» ?
мне так наоборот неудобно кажется иметь один склеенный файл, еще ругань на него будет, например, если это pdf, от просматровщика

x905 ★★★★★
()
Ответ на: комментарий от x905

Атомарность в плане замены файла. Например, конфига, программы или целого образа файловой системы. Копируешь файл для замены и просто делаешь атомарное действие mv newfile file. А если у тебя подпись рядом валяется, то одним действием не обойтись, и в случае какого-сбоя мы можем получить новый файл со старой подписью. Атомарное обновление файла - тут обсуждали замену, например.

vgovseychuk
() автор топика
Ответ на: комментарий от vgovseychuk

в случаи сбоя файловой операция вернется код ошибки
я бы не делал вместе эти файлы
но если очень хочется, то конечно можно )

x905 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.