13

Я поиграл с openssl, чтобы создать ключ pub/prv, создать подпись файла и проверить его. Я поиграл с Cryptophane (интерфейс windows gnupg) и услышал о серверах ключей +, играемых с подписанием текста.

Однако я никогда не подписывал файловый архив. Если я хочу опубликовать архив (7z, rar или zip, это не имеет значения), и я бы хотел, чтобы мои пользователи или программное обеспечение могли проверить, подписан ли этот архив, как мне это сделать? Очевидно, что открытый ключ должен быть доступен публично. Но добавление подписи в архив - вот что меня беспокоит. Позволяет ли какое-либо программное обеспечение + архив подписывать и проверять сжатый архивный файл?

4 ответа4

10

Обычный метод - создать отдельную подпись в файле .sig (обычно подпись PGP с помощью gpg -b - X.509 очень редко) и предоставить оба файла в одном месте. Например:

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

Это можно использовать с любым типом файла, но пользователь должен будет проверить подпись вручную, используя gpg --verify .


К сожалению, из тех, которые используются в настоящее время, ни один архивный формат (о котором я знаю) не поддерживает встроенные подписи с использованием PGP или X.509. (Это исключая CAB, который используется Windows для внутреннего использования, но практически нигде больше, и его довольно сложно подписать). WinRAR 4 смог добавить запись "проверки подлинности" в собственном формате, но он использует вашу лицензию WinRAR в качестве ключа подписи, который неоднократно подвергался взлому. (Обновление: эта функция была удалена из WinRAR 5 из-за отсутствия безопасности.)


В Windows (и вскоре в Mac OS X) можно создать «самораспаковывающийся архив» - исполняемый файл с цифровой подписью, который извлекает архив изнутри себя - так работают, например, установщики программного обеспечения в Windows. Однако SFX ограничены одной операционной системой, поэтому они подходят только для распространения программ, а не документов или изображений. (Java-программы могут быть подписаны и являются кроссплатформенными, но немногие системы все еще имеют среду выполнения Java.)

2

Jar-архивы, собранные с помощью Javas-jar-tool, по сути являются zip-архивами, и для подписи есть инструмент jarsigner.

Вот несколько полезных ссылок:

Сначала это выглядит немного сложно («Что, мне нужен keeytool для? Что-то еще?") но легко выполнить шаги для простого решения. Оно работает. Тогда вы можете погрузиться глубже в вопрос.

0

Конечно, каждый раз, когда вы устанавливаете подписанное программное обеспечение, вы проверяете подписанный архив. Чтобы создать его, вы должны использовать те же инструменты для упаковки, которые используют разработчики. Есть некоторые компромиссы, простота использования и кроссплатформенная совместимость. Я не могу придумать, как создать кросс-платформенный самораспаковывающийся архив с подписью.

Для окон создайте самораспаковывающийся архив с помощью инструмента iexpress, а затем подпишите его с помощью signtool.exe, как описано здесь. Когда ваши пользователи дважды щелкнут по файлу, у них появится знакомое диалоговое окно подтверждения, идентифицирующее вас как издателя архива.

-1

Вы можете подписывать файлы с помощью jarsigner с помощью этих двух команд:

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

Вам нужно установить java jdk на свой компьютер.

Первая команда создает хранилище ключей в текущем каталоге (при условии, что он еще не существует). Он генерирует пару открытый / закрытый ключ, используя алгоритм SHA-256.

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

Чтобы проверить файл, подписанный с использованием хранилища ключей, вы можете запустить эту команду:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .