Что делает ключи ключей OpenPGP надежными?

195
PawkyPenguin

Я начал читать книгу Linux From Scratch, и в первых нескольких главах вам необходимо загрузить исходные коды всех пакетов программного обеспечения, которые вам понадобятся во время установки. Книга предоставляет md5sums для «проверки» того, что загрузки работали, но с точки зрения безопасности этого явно недостаточно.

Так как большая часть установки LFS изучает, как все работает, я решил, что хочу проверить подписи для моих исходных архивов (или, по крайней мере, некоторых из них). Поэтому я отправился на FTP-сервер GNU ( https://ftp.gnu.org/), и они требуют, чтобы вы загрузили их связку ключей, из ftp://ftp.gnu.org/gnu/gnu-keyring.gpgкоторой содержатся открытые ключи многих разработчиков для проверки подписей tarball.

Мой вопрос сейчас заключается в том, что делает этот брелок надежным? Насколько я могу видеть (и я предполагаю, что я что-то упускаю), все еще есть единственная точка отказа, а именно сервер GNU FTP. Если злоумышленник получит контроль над этим сервером, он может просто включить свой открытый ключ в связку ключей, а затем начать подписывать свои собственные вредоносные архивы, верно?

Подписан ли сам брелок другим открытым ключом, принадлежащим проекту GNU, или я пропускаю какой-то другой уровень безопасности?

1

1 ответ на вопрос

1
Jens Erat

Как правило, ключи проверяются в OpenPGP через сеть доверия. Это сеть, состоящая из различных ключей и сертификатов, выданных между ними. Следуя таким путям (называемым доверенными путями), вы можете расширить набор ключей, которым доверяете.

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

Помимо явного доверия, существует также понятие «TOFU»: доверие при первом использовании . Злоумышленник вряд ли сможет предоставлять управляемые программные пакеты по разным каналам распространения и длительное время. Попробуйте найти источники ключа, который вы уже используете (например, в дистрибутиве Linux, который вы загрузили несколько лет назад, или на DVD-дисках старого компьютерного журнала). Есть ли копии, размещенные в каких-либо программных хранилищах, которые не находятся под непосредственным контролем исходного проекта? В архиве есть список ключей OpenPGP с годами? Спросите друзей, есть ли у них следы от ключей. Большинство дистрибутивов Linux поставляют полный набор ключей, используемых для подписи программного обеспечения.

Это нелегко сделать, и это требует некоторой работы, но если вы хотите правильно проверить подпись, другого пути нет.

Похожие вопросы