Pull to refresh

Я отказался от PGP

Reading time 5 min
Views 45K
Original author: Filippo Valsorda
Об авторе: Филиппо Валсорда занимается криптографией и TLS, называет себя «послом urandom», входит в криптогруппу компании Cloudflare, поднял известный сервис для тестирования на уязвимость Heartbleed. Вы могли встречать его на конференциях по криптографии и компьютерной безопасности или под ником @FiloSottile на Github и в твиттере

Спустя годы мучений с GnuPG с различным уровнем энтузиазма я пришёл к выводу, что оно не стоит того, и я сдаюсь. По крайней мере относительно концепции долговременных ключей PGP.

Речь не о самой программе gpg и не о криптографических инструментах в принципе. Многие писали на эту тему. Я говорю о модели долговременных ключей PGP, будь она гарантирована сетью доверия, отпечатками открытых ключей или моделью TOFU — неважно. Я говорю о том, что она не подходит для меня лично.

Если вы получили ссылку на эту статью в ответ на своё зашифрованное письмо или в ответ на просьбу открытого ключа, то можете сразу переходить к разделу «Что дальше».

Поверьте, я пытался. Я прошёл через всё. Пробовал Enigmail. У меня были офлайновые мастер-ключи на выделенном Raspberry Pi с краткосрочными подключами. Я написал специальные программы для изготовления рукописных резервных копий офлайновых ключей на бумаге (которые я опубликую рано или поздно). У меня были аппаратные ключи YubiKey. Целые дни у меня ушли на разработку правил использования открытых ключей PGP.

Я потратил два часа на поездку поездом к ближайшему пользователю Biglumber в Италии, чтобы получить первую подпись в прочном наборе. У меня есть подпись от самого связанного ключа в наборе. Я ходил на вечеринки по обмену подписями ключей на нескольких континентах. Я даже организовал пару таких.

Я даже имел наглость говорить, что понимаю PGP. В 2013 году я препарировал пакетный формат, чтобы сбрутить короткие идентификаторы. Я изобрёл по-нездоровому сложные системы, чтобы подключ устройства привязывался одновременно к моему личному мастер-ключу и к корпоративному мастер-ключу. Я составлял тикеты по проблемам юзабилити и безопасности GnuPG и его различных дистрибутивов.

По всем признакам, я должен быть идеальным пользователем PGP. Компетентный энтузиаст, окружённый сообществом таких же единомышленников.

Но это просто не работало.

Во-первых, никуда не исчезла проблема малопопулярности шифрования, о которой другие много говорили. Я получал максимум два зашифрованных письма в год.

Затем, проблема неудобства. Легко допустимые критические ошибки. Путаные листинги серверов с ключами многолетней давности. «Я не могу прочитать это письмо на своём телефоне». «Или на ноутбуке, я оставил ключи, которые никода не использую, на другой машине».

Но настоящие проблемы, которые я увидел, гораздо более тонкие. Я никогда не чувствовал, что мои долговременные ключи находятся в безопасности. Чем больше проходило времени, тем меньше была уверенность в каждом конкретном из них. Ключи YubiKey могут перехватить в номере гостиницы. Офлайновые ключи могут остаться в далёкой шуфлядке или сейфе. Могут объявить о новых уязвимостях. К USB-устройствам могут подключиться.

Безопасность долговременных ключей соответствует минимальному общему делителю ваших действий в области безопасности на протяжении всей жизни. Это слабое звено.

Что ещё хуже, существующие практики обращения с долговременными ключами, такие как сбор подписей ключей и печать отпечатков открытых ключей на визитных карточках, противоречат другим шаблонам поведения, которые в ином случае считались бы очевидной гигиенической рутиной: часто менять ключи, иметь различные ключи на разных устройствах, применять компартментализацию (разные профили мышления в разных областях, например, на работе и дома — прим.пер.). Существующие практики обращения с долговременными ключами на самом деле расширяют вектор атаки, поскольку подталкивают делать резервные копии ключей.

Мы говорим об игре кошки с мышкой в инфраструктуре, но эта концепция также относится и к ключам! Если я подозреваю взлом, то хочу быть в состоянии бросить ноутбук и начать с нуля с минимальными потерями. Худший возможный исход — это привязать пользователя к ключу, который он считает потенциально скомпрометированным, потому что цена замены ключа слишком высока.

И всё это ради чего?

«Конечно, ради долговременного доверия».

Да, и об этом. Я ещё никогда, ни разу, не использовал сеть доверия для валидации публичного ключа. И помните, у меня хорошо связанный ключ. Я не проводил формального исследования, но почти уверен, что каждый, кто использовал PGP для связи со мной, сделал или мог бы сделать (если попросят) одну из следующих вещей:

  • вытянул наиболее приглянувшийся ключ с сервера ключей, скорее всего даже не по TLS;
  • использует другой ключ, если ответить ему со словами «это мой новый ключ»;
  • перешлёт письмо в открытом виде, если попросить его с отговоркой вроде «я в поездке».

Поездки и путешествия особенно враждебны к долговременным ключам, делая невозможным такой тип старта с чистого листа.

Более того, я даже не уверен, что существует злоумышленник, против которого долговременные ключи имеют смысл. Ваш обычный средний враг вероятно не сможет провести MitM-атаку на личные сообщения в твиттере (это означает, что вы можете оппортунистически использовать личные сообщения для обмена отпечатками открытых ключей, всё ещё сохраняя приватность). Моссад сделает моссадовские вещи с вашей машиной, какой бы ключ вы ни использовали.

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

Что дальше


Я не опущусь до текстовых писем. Совсем наоборот. Но больше я не буду охранять свой долговременный ключ.

В основном, я буду использовать Signal или WhatsApp, которые предлагают значительно лучшую защиту конечных точек под iOS, эфемерность и безболезненную ротацию ключей.

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

Если мы встречаемся лично и потребуется установить защищённый канал, мы просто обменяемся секретной парольной фразой для использования в наиболее подходящей программе: OTR, Pond, Ricochet.

Если окажется, что нам действительно нужен PGP, мы установим какие-нибудь подходящие ключи, скорее в стиле Operational PGP. То же самое для любых подписанных релизов или canaries, которые я могу поддерживать в будущем.

Для обмена файлами используем Magic Wormhole, OnionShare или подходящие ключи PGP через защищённый канал, который у нас уже есть. Здесь цель избежать использования не gpg, а модели управления ключами PGP.

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

Я также не отказываюсь от аппаратных ключей YubiKey. Мне очень нравится мой новый YubiKey 4 с датчиком прикосновения пальца, который я использую для хранения ключей SSH, паролей и начальной загрузки машины. Но эти вещи на 100% под моим контролем.

О моих старых ключах и переходе


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

Ниже приложены подписи для Markdown-версии этого документа (статья "Giving up on PGP") со всех ключей, которые я пока ещё могу найти.

В ближайшие недели я импортирую все полученные подписи, сделаю все подписи, которые обещал, а затем сделаю отзывы на серверах ключей. Я поменяю мой ключ Keybase. В концов концов, я уничтожу секретные ключи.

Увидимся в Signal. (Или в твиттере).

Giving up on PGP.md
Giving up on PGP.md.B8CC58C51CAEA963.asc
Giving up on PGP.md.C5C92C16AB6572C2.asc
Giving up on PGP.md.54D93CBC8AA84B5A.asc
Giving up on PGP.md.EBF01804BCF05F6B.asc [будет, когда я восстановлю парольную фразу из другой страны]

Примечание. Я планирую со временем расширить раздел «Что дальше», ведь инструменты появляются и исчезают. Подписанный файл .md не изменится, неподписанный .diff появится ниже для удобства верификации.
Tags:
Hubs:
+30
Comments 83
Comments Comments 83

Articles