Что происходит с git-коммитами, подписанными OpenPGP, после истечения срока действия ключа?

Если я подпишу коммит git с помощью ключа OpenPGP с датой истечения срока действия, что это будет означать для людей, просматривающих этот коммит после истечения срока действия? Должны ли все ключи, используемые для подписи фиксации, быть постоянными?

Что, если у проверяющей стороны есть новый ключ от меня? Или только мой старый? Или оба?

Я новичок в OpenPGP в целом, особенно в отношении подписания коммитов git.


person Captain Man    schedule 20.07.2016    source источник


Ответы (3)


Дата истечения срока действия OpenPGP указывает только на то, что «этот ключ нельзя использовать после указанной даты», но не делает ключ бесполезным: математика по-прежнему работает нормально.

Если я подпишу коммит Git ключом PGP с датой истечения срока действия, что это значит для людей, которые просматривают этот коммит после истечения срока действия?

При проверке подписей реализации OpenPGP сравнивают дату истечения срока действия с датой выдачи подписи. Если подпись была выдана в течение срока действия, все в порядке. Если нет, то выдаст предупреждение (что-то вроде "подпись была в порядке, но выдана после истечения срока действия").

Что, если у проверяющей стороны есть новый ключ от меня? Или только мой старый? Или оба?

Если у них есть ваш старый ключ, они могут проверить подписи, выданные вашим старым ключом. Для вашего нового ключа они могут проверить те, которые выданы вашим новым ключом. Если у них есть оба, они могут проверить оба.

Должны ли все ключи, используемые для подписи фиксации, быть постоянными?

Имейте в виду, что дата истечения срока действия на самом деле не добавляет никакой безопасности, поскольку ее можно изменить произвольно, если вы контролируете секретный первичный ключ. Также дата подписи может быть установлена ​​произвольно, она записывается реализацией OpenPGP, используемой для создания подписи; злоумышленник может просто установить фальшивое системное время. Я подробно обсуждал безопасность даты истечения срока действия на дочернем сайте информационной безопасности в вопросе "Увеличивает ли срок действия ключа OpenPGP безопасность? ".

Использование даты истечения срока действия допустимо, если вы хотите указать, что ключ не будет использоваться по истечении заданного времени, но не рассматривайте это как функцию безопасности. Многие люди с продвинутым использованием ключей OpenPGP имеют первичный ключ без даты истечения срока действия и регулярно депонируют подразделы, которые они выпускают с ограниченным сроком действия.

Создание новых первичных ключей означает, что другие должны снова подтвердить ваш новый ключ. Первичный ключ — это общий якорь доверия в OpenPGP, и создание нового означает потерю всех доверенностей/сертификатов.

person Jens Erat    schedule 23.07.2016
comment
Я полагаю, что есть опечатка (слишком маленькая для редактирования): которая [t] они выдают с ограниченным сроком действия. - person ; 23.07.2016
comment
Действительно, был. Вы также сможете вносить такие незначительные правки, как только наберете 2000 очков репутации (таким образом, ваши правки больше не нужно будет проверять). - person Jens Erat; 23.07.2016

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

Идея этой системы заключается в том, что срок действия ключей истекает, и вы создаете новые. Но в мире PGP вы загружаете свои ключи на серверы ключей. По сути, они работают как телефонная книга (*), поэтому каждый, кто хочет получить ваш открытый ключ, чтобы отправить вам зашифрованное сообщение, сможет получить к нему доступ. И это тоже решение вашей проблемы. Сервер ключей по-прежнему будет помнить ключи с истекшим сроком действия, поэтому ваша подпись остается действительной, хотя срок ее действия истек (проверка зависит только от правильно примененной подписи с когда-то действительным ключом). Ваши пользователи увидят это при проверке вашей подписи, для которой они получили ключ, который вы использовали для этой конкретной подписи. Но по мере того, как вы разрабатываете и выпускаете подписанные версии, вы всегда будете подписывать действительными ключами, а люди просто будут получать ваши новые.

(*) Сравнение сервера ключей с телефонной книгой упрощает ситуацию, но упускает одну важную часть информации: если вы используете сервер ключей для получения ключа неизвестного вам человека, имейте в виду, что этот ключ может быть скомпрометирован. Например. Алиса хочет общаться с Бобом, используя шифрование (или просто проверить git-коммит Боба), но она его не знает. Она берет открытый ключ Боба с удаленного сервера, но не знает, что Мэллори подделала его и поместила туда. Так процесс проверки скомпрометирован и она этого не заметит. Выход: Боб может опубликовать отпечатки своего открытого ключа (или ключа тоже) вместе с программным обеспечением, которое он подписал на своем сайте. Теперь Алиса может взять ключ и сравнить его отпечаток с тем, который предоставил Боб, чтобы убедиться, что у нее есть подлинный открытый ключ Боба. Теперь она может проверить его подписанный коммит на git. Это также работает, если срок действия ключа истек.

Читайте здесь, здесь и особенно здесь для получения дополнительной информации.

person harmonica141    schedule 20.07.2016
comment
Я вижу A revoked public key can still be used to verify signatures made by you in the past в разделе Создание сертификата отзыва. Верно ли то же самое для открытых ключей с истекшим сроком действия? Я думаю, это то, что меня беспокоило. - person Captain Man; 21.07.2016
comment
Нет. Технически это не должно быть возможно, но наверняка это концептуально не то, что вы хотите. Рабочий процесс выглядит следующим образом: вы создаете пару ключей, помещаете открытый ключ на сервер ключей и начинаете подписывать данные своим закрытым ключом. Это создает действительные подписи в ваших тегах git, поскольку вы правильно применяете действительный ключ к коммиту. - person harmonica141; 21.07.2016
comment
Однажды срок действия пары ключей истечет, и вы начнете сначала. Люди, получающие ваши старые коммиты, которым необходимо подтвердить вашу подпись, должны будут получить ваш старый ключ с сервера ключей, чтобы сделать это. Но нет смысла подписывать старый ключ, так как вы хотите доказать, что текущая подпись создана вами. Вот для чего нужны эти ключи. Подписание ключами с истекшим сроком действия будет означать доказательство того, что фиксация в присутствии была создана вашей версией в прошлом. Никогда не надо этого делать... - person harmonica141; 21.07.2016
comment
Хорошо, теперь я правильно прочитал ваш вопрос. ДА. Проверка подписи ключами с истекшим сроком действия очень возможна и абсолютно необходима, см. выше. На мгновение я понял, что вы хотели подписать ключами с истекшим сроком действия, извините. Конечно, если вы получите просроченный или отозванный ключ, старая подпись останется в силе. Однако, если он будет отозван, вам придется спросить себя, не может ли он быть скомпрометирован. Извините за путаницу здесь. - person harmonica141; 21.07.2016
comment
Я не совсем согласен с вашим ответом. Не сравнивайте серверы ключей OpenPGP с телефонными книгами (выпущенными какой-либо компанией, контролирующей их, и содержащей информацию о своих клиентах)! Серверы ключей OpenPGP распространяют непроверенную, возможно, вредоносную информацию о ключе. Их никогда не следует использовать для запроса ключей без дополнительной проверки. Кроме того, прежде чем рекомендовать ключи с истекающим сроком действия, обратите внимание на ограничения срока действия OpenPGP. Наконец, помните об (административных) затратах на создание и распространение совершенно нового набора ключей. - person Jens Erat; 23.07.2016
comment
Да, спасибо, что указали на это. Я отредактирую свой ответ соответственно. - person harmonica141; 25.07.2016

git show-signature/verify считает отозванные ключи недействительными, даже если они были подписаны до того, как ключ был отозван, см. этот пример с отозванной подписью yubikey: https://www.flickr.com/photos/steve_l/37493124630/in/datetaken/

Учитывая этот результат, я думаю, что может быть менее травматично не отзывать ключ в таких ситуациях, а изменить дату истечения срока действия и отправить обновление на серверы ключей с сообщением «Срок действия ключа истек». Таким образом, существующие коммиты по-прежнему проверяются.

person stevel    schedule 17.10.2017
comment
Тот ключ был отозван, я говорю о ключах, срок действия которых истек. Отзыв — это то, что вы выбираете, ключ с истекшим сроком действия — это просто тот, который используется после истечения срока его действия. - person Captain Man; 17.10.2017