Как GnuPG может доверять keyserver.ubuntu.com?

Я понимаю, что действительность любого сертификата OpenPGP основана на том, что этот сертификат проверяется доверенной стороной в сети доверия.

Однако, для большинства людей, которые не используют GnuPG каждый день, они просто получают ключи от keyserver.ubuntu.com один раз, и поверьте, что они точны. Например, следуя руководству "Как проверить" на Ubuntu.com:

gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092" "C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451"

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

Но как, основываясь на однократном запуске этой команды, мы можем доверять серверу ключей, поскольку я не верю, что GnuPG создаст trustdb файл еще? Есть ли у GnuPG встроенный список сертификатов, которым он доверяет, включая keyserver.ubuntu.com? Если так, как я могу найти этот список, чтобы проверить, что это так?

В отсутствие этого списка доверенных лиц не было бы возможно, чтобы все мои сообщения были перехвачены одним и тем же посредником (MITM), который затем мог бы выдать мне поддельный сертификат от keyserver.ubuntu.com одновременно с подачей мне поддельного подписанного пакета (например, самой операционной системы ISO)?

1 ответ

Решение

Параметр для получения ключей является полным отпечатком двух ключей:

  • 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
  • C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451

Отпечаток пальца рассчитывается на основе открытого ключа (я обсуждал идентификаторы ключей OpenPGP в Super User, если вам нужна дополнительная ссылка). GnuPG поймет, что был возвращен неправильный ключ, если вычисленный отпечаток полученного ключа не соответствует запрошенному отпечатку. Другими словами: вы не можете доверять ключевым серверам (ими управляют случайные лица, которые вполне могут иметь злонамеренные цели), но вам не нужно, вся информация, полученная от ключевых серверов, должна быть проверена в любом случае. Диапазон возможных отпечатков пальцев очень и очень велик: невозможно обнаружить столкновение (такой же отпечаток для другого ключа), даже если вы обладаете огромными вычислительными возможностями, такими как агентства, как, например, у NSA). Не доверяйте коротким идентификаторам клавиш.

По той же причине вы не можете доверять результатам ключевого сервера при поиске почтовых адресов или идентификаторов пользователей. Операторы ключей не только могут возвращать вредоносную информацию, но и серверы ключей вообще ничего не проверяют (каждый может загрузить ключи для произвольных почтовых адресов). Вы всегда должны проверять ключи самостоятельно. В GnuPG нет ничего, кроме ключей, которым доверяют по умолчанию, даже ключей сопровождающего GnuPG. Если вы доверяете источнику, в котором перечислены отпечатки пальцев ключа Ubuntu, вы можете подписать их, чтобы GnuPG знала, что вы проверили эти ключи.

Существует также HKPS (HKP через HTTP), но это ничего не меняет, учитывая отсутствие проверки ключевой информации сервера; HKPS был введен только для того, чтобы человек посередине не мог записать, какие ключи вы получаете с ключевых серверов.

Другие вопросы по тегам