| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| gpg:file_signature_signature_verification [2023/06/02 09:36] – [Как в GPG проверить подпись файла ] so_v_a | gpg:file_signature_signature_verification [2026/09/01 11:30] (текущий) – so_v_a |
|---|
| # Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами. | <!DOCTYPE markdown> |
| | |
| | # Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами. |
| | |
| | ## Часть 6. Подпись файлов и проверка подписи |
| |
| ## Часть 5. Подпись файлов и проверка подписи | |
| ### Как в GPG подписать файл | ### Как в GPG подписать файл |
| |
| - - - | - - - |
| |
| Для подписи файла используется опция **-s** или её более длинный вариант **--sign**. Если у вас на компьютере только один приватный ключ, то он будет выбран автоматически. | Для подписи файла используется опция `-s` или её более длинный вариант `--sign`. Если у вас на компьютере только один приватный ключ, то он будет выбран автоматически. |
| |
| Если у вас на компьютере несколько приватных ключей, то нужно использовать также опцию **-u ИМЯ** или её более длинный вариант **--local-user ИМЯ**. Эта опция перезаписывает значение **--default-key**. | Если у вас на компьютере несколько приватных ключей, то нужно использовать также опцию `-u ИМЯ` или её более длинный вариант `--local-user ИМЯ`. Эта опция перезаписывает значение `--default-key`. |
| |
| > Опция **--default-key** устанавливает ключ, который будет использоваться по умолчанию, чтобы его не нужно было вводить каждый раз. | > Опция `--default-key` устанавливает ключ, который будет использоваться по умолчанию, чтобы его не нужно было вводить каждый раз. |
| |
| Итак, чтобы подписать файл test.php, приватным ключом пользователя Ivan Ivanov, следует выполнить следующую команду: | Итак, чтобы подписать файл test.php, приватным ключом пользователя Ivan Ivanov, следует выполнить следующую команду: |
| > Новый файл будет в бинарном формате — то есть даже если ранее это было сообщение или текстовый файл, то он становится нечитаемым. | > Новый файл будет в бинарном формате — то есть даже если ранее это было сообщение или текстовый файл, то он становится нечитаемым. |
| |
| С помощью опции **--clear-sign** (другое её написание **--clearsign**) можно создать файл в виде обычного текста. | С помощью опции `--clear-sign` (другое её написание `--clearsign`) можно создать файл в виде обычного текста. |
| ``` | ``` |
| gpg -u 'Ivan Ivanov' --clear-sign test.php | gpg -u 'Ivan Ivanov' --clear-sign test.php |
| В принципе, их позиция понятна: какой смысл проверять подпись, если мы всё равно лично не знаем тех, кто именно подписал файл, да и тех, кто удостоверяет подлинность публичного ключа мы тоже не знаем. Разве что можно быть уверенным, что файл действительно подписан автором программы, а не хакером, который взломал сервер, где хранятся файлы для скачивания, и что хакер не подменил файл в процессе его «путешествия» к нам на компьютер. | В принципе, их позиция понятна: какой смысл проверять подпись, если мы всё равно лично не знаем тех, кто именно подписал файл, да и тех, кто удостоверяет подлинность публичного ключа мы тоже не знаем. Разве что можно быть уверенным, что файл действительно подписан автором программы, а не хакером, который взломал сервер, где хранятся файлы для скачивания, и что хакер не подменил файл в процессе его «путешествия» к нам на компьютер. |
| |
| Чтобы сделать такую пару (точнее говоря, нужно сделать только отдельный файл подписи — с исходным файлом вообще ничего не происходит) в PGP есть опция **-b** (или более длинное написание **--detach-sign**), которая применяется следующим образом: | Чтобы сделать такую пару (точнее говоря, нужно сделать только отдельный файл подписи — с исходным файлом вообще ничего не происходит) в PGP есть опция `-b` (или более длинное написание `--detach-sign`), которая применяется следующим образом: |
| |
| ``` | ``` |
| В результате будет создан дополнительный файл **.sig** (здесь это test.php.sig). В этом файле нет ничего, кроме цифровой подписи. Поэтому вам нужно предоставлять и оригинальный файл, и файл .sig | В результате будет создан дополнительный файл **.sig** (здесь это test.php.sig). В этом файле нет ничего, кроме цифровой подписи. Поэтому вам нужно предоставлять и оригинальный файл, и файл .sig |
| |
| . | |
| ### Как в GPG проверить подпись файла | ### Как в GPG проверить подпись файла |
| |
| Для проверки подписи используется опция **--verify**. | Для проверки подписи используется опция `--verify`. |
| |
| Как было сказано, цифровая подпись может быть интегрирована в файл, а может содержаться в отдельном файле. От этого зависит вид запуска команды **gpg**: | Как было сказано, цифровая подпись может быть интегрирована в файл, а может содержаться в отдельном файле. От этого зависит вид запуска команды **gpg**: |
| |
| **1** Если цифровая подпись интегрирована в файл, то достаточно указать опцию **--verify**, а затем проверяемый файл: | **1** Если цифровая подпись интегрирована в файл, то достаточно указать опцию `--verify`, а затем проверяемый файл: |
| ``` | ``` |
| gpg --verify test.php.gpg | gpg --verify test.php.gpg |
| ``` | ``` |
| |
| **2** Если цифровая подпись отделена от файла, то после опции **--verify** нужно указать два аргумента: **вначале идёт файл с подписью, а затем подписанные данные**: | **2** Если цифровая подпись отделена от файла, то после опции `--verify` нужно указать два аргумента: **вначале идёт файл с подписью, а затем подписанные данные**: |
| ``` | ``` |
| gpg --verify test.php.sig test.php | gpg --verify test.php.sig test.php |
| |
| |
| Для проверки подписи есть специальная программа **gpgv**, которая заменяет собой конструкцию **gpg --verify**, то есть предыдущие команды можно записать так: | Для проверки подписи есть специальная программа **gpgv**, которая заменяет собой конструкцию `gpg --verify`, то есть предыдущие команды можно записать так: |
| ``` | ``` |
| gpgv test.php.gpg | gpgv test.php.gpg |
| Primary key fingerprint: D743 875D 1BB6 095A 366B B81F 3BFD 8738 3926 AC69 | Primary key fingerprint: D743 875D 1BB6 095A 366B B81F 3BFD 8738 3926 AC69 |
| ``` | ``` |
| |
| |
| ### Как извлечь файл из подписанного файла GPG | ### Как извлечь файл из подписанного файла GPG |
| > При этом обычный редирект вывода, как это было рассмотрено выше, может не подойти, поскольку для подписанного файла опцией **-d** не только извлекаются исходные данные, но и происходит проверка подписи и результаты проверки тоже выводятся на экран, то есть если вы будете использовать редирект вывода, то в создаваемый файл попадут и подписанные данные, и информация о проверке подписи. | > При этом обычный редирект вывода, как это было рассмотрено выше, может не подойти, поскольку для подписанного файла опцией **-d** не только извлекаются исходные данные, но и происходит проверка подписи и результаты проверки тоже выводятся на экран, то есть если вы будете использовать редирект вывода, то в создаваемый файл попадут и подписанные данные, и информация о проверке подписи. |
| |
| ## Как в GPG одновременно подписать и зашифровать файл | |
| | ### Как в GPG одновременно подписать и зашифровать файл |
| |
| Для этого достаточно совмещать уже известные нам опции. | Для этого достаточно совмещать уже известные нам опции. |
| ``` | ``` |
| |
| | [[editing_keys|Продолжение]] |
| | |
| | [[0_content|Оглавление]] |
| |