Я меняю свой PGP ключ
Я создал свой ключ 0xC48251EB4F8E4E6E в 2007 году, когда начал писать проект DiskCryptor, ключ создавался с настройками по-умолчанию, без прицела на долговременную безопасность, поэтому он использует DSA-1024 и sha1. SHA1 уже взломан и вот-вот следует ожидать практических коллизий, в достаточности DSA-1024 на ближайшие 10 лет тоже есть сомнения. В связи с вышесказанным, а также из других соображений, созрела мысль заменить ключ в ближайшее время, чем раньше это сделать – тем безболезненнее будет процесс.
Новый ключ я собираюсь сгенерировать по-уму и хранить с соблюдением повышенных мер безопасности, чтобы в идеале больше не понадобилось его менять никогда. А чтобы сделать всё идеально я хочу проконсультироваться со знатоками GnuPG насчет наилучших настроек и желательного комплекса мер при создании, хранении и использовании ключа.
Специально для параноиков: этот пост я пишу в трезвом уме и твердой памяти, не находясь под принуждением.
комментариев: 9796 документов: 488 редакций: 5664
Кое что по этой теме есть. Хотя можно ещё обсудить и дополнить для совсем параноидально-гиковских вариантов.
Например, связку ключей можно разобрать на отдельные подключи и UID'ы с подписями, назначить им разные пароли и из этого собрать связку обратно. Можно имеющимся у вас пока старым ключом заверения связки не просто подписать новый ключ (связку), а вынести его из связки главного нынешнего ключа и внести в новую связку в качестве подключа и уже там объявить отозванным.
Это всё требует включения нестандартных опций GnuPG, работы под разными пользователями и правки в HEX-редакторе. Имеется шанс остаться без ключа (если не сбэкапить), но если всё протестить и проверить в узком кругу, то скорее всего такой нестандартный ключ будет успешно работать. Правда, мало кто сможет оценить такое утончённое использование GnuPG :-) Скорее ради хохмы только.
комментариев: 11558 документов: 1036 редакций: 4118
Ну, мы-то точно поставим высший балл за артистизм и за технику.
комментариев: 9796 документов: 488 редакций: 5664
Другие возможные участники публичных выступлений с ключами смогут рассчитывать на приз зрительских симпатий.
version 4, algo 1 – по спецификации асимметрик с номером 1 это RSA (Encrypt or Sign) [HAC], хотя я создавал sign-only ключ.
digest algo 2 – это SHA-1 [FIPS180], хотя у меня в gpg.conf прописан digest-algo sha512
Как полностью избавиться от sha1 и не грозит ли это серьезными проблемами с совместимостью?
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 1060 документов: 16 редакций: 32
Это для подписи данных, а для подписей сертификатов ключей надо "cert-digest-algo sha512".
комментариев: 11558 документов: 1036 редакций: 4118
Более того, использование этой опции как раз-таки повлечёт проблемы несовместимости — она принудительно задаёт алгоритм хэширование данных, игнорируя предпочтения в ключе получателя.
комментариев: 1060 документов: 16 редакций: 32
Может грозить совместимостью со старыми версиями, но в случае с gpg это не очень актуально. Другой вопрос – PGP, там сейчас вроде sha256 применяется. Так что надо бы проверить, умеет ли она sha512 хотя бы проверять, а то вдруг ее пользователи не смогут понимать эти подписи.
Я точно знаю, что с sha512 полностью несовместимы версии 8.x, при этом 8.1 умеет проверять подписи с sha256, но не генерировать их. Более поздними не пользовался.
комментариев: 9796 документов: 488 редакций: 5664
Именно это и описано в инструкции, более подробно эту мысль раскрывали здесь.
комментариев: 371 документов: 19 редакций: 20
Всё ли правильно?
В preferences ключа первым стоит SHA256, но почему-то при подписи используется sha1 если не прописать digest-algo sha256 в gpg.conf.
Похоже что GnuPG игнорирует предпочтения для хэшей при подписи.
2 ntldr:
комментариев: 9796 документов: 488 редакций: 5664
Попробуйте установить утилиту pgpdump и прикладывать дамп сразу в двух форматах.
Как сейчас:
И в таком виде:
Может что-то вылезет, сходу незаметное глазу.
комментариев: 371 документов: 19 редакций: 20
Последний вариант ключа:
gpg --export [keyname] | gpg --list-packets
gpg --export [keyname] | pgpdump