Отпечаток открытого ключа - Public key fingerprint - Wikipedia

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

Создание отпечатков открытого ключа

Отпечаток открытого ключа обычно создается с помощью следующих шагов:

  1. Открытый ключ (и, возможно, некоторые дополнительные данные) кодируется в последовательность байтов. Чтобы гарантировать, что тот же отпечаток пальца может быть воссоздан позже, кодирование должно быть детерминированным, а любые дополнительные данные должны передаваться и храниться вместе с открытым ключом. Дополнительные данные обычно представляют собой информацию, о которой должен знать любой, кто использует открытый ключ. Примеры дополнительных данных включают: с какими версиями протокола следует использовать ключ (в случае PGP отпечатки пальцев); и имя держателя ключей (в случае X.509 отпечатки якорей доверия, где дополнительные данные состоят из X.509 самоподписанный сертификат ).
  2. Данные, полученные на предыдущем шаге, хешируются с помощью криптографической хеш-функции, такой как SHA-1 или же SHA-2.
  3. При желании выходные данные хэш-функции можно обрезать, чтобы получить более короткий и удобный отпечаток пальца.

Этот процесс производит короткий отпечаток пальца, который можно использовать для аутентификации гораздо большего открытого ключа. Например, если типичный ЮАР открытый ключ будет иметь длину 1024 бита или больше, обычно MD5 или же SHA-1 отпечатки пальцев имеют длину всего 128 или 160 бит.

При отображении для осмотра человеком отпечатки пальцев обычно кодируются в шестнадцатеричный струны. Эти строки затем форматируются в группы символов для удобства чтения. Например, 128-битный отпечаток MD5 для SSH будет отображаться следующим образом:

 43: 51: 43: a1: b5: fc: 8b: b7: 0a: 3a: a9: b1: 0f: 66: 73: a8

Использование отпечатков открытого ключа для аутентификации ключа

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

Например, если Алиса хочет подтвердить, что открытый ключ принадлежит Бобу, она может связаться с Бобом по телефону или лично и попросить его прочитать ей свой отпечаток пальца или дать ей клочок бумаги с записанным отпечатком пальца. Затем Алиса может проверить, совпадает ли этот доверенный отпечаток пальца с отпечатком открытого ключа. Обмен и сравнение таких значений намного проще, если значения представляют собой короткие отпечатки пальцев, а не длинные открытые ключи.

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

Кроме того, отпечатки пальцев можно запрашивать в поисковых системах, чтобы гарантировать, что открытый ключ, который только что скачал пользователь, может быть замечен сторонними поисковыми системами. Если поисковая система возвращает совпадения со ссылкой на отпечаток пальца, связанный с нужным сайтом (-ами), можно быть более уверенным в том, что ключ не вводится злоумышленником, таким как Атака посредника.

PGP разработал Список слов PGP для облегчения обмена отпечатками открытых ключей по голосовым каналам.

Отпечатки открытых ключей на практике

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

В таких системах, как X.509 PKI, отпечатки пальцев в основном используются для аутентификации корневых ключей. Эти корневые ключи выдают сертификаты, которые можно использовать для аутентификации ключей пользователя. Такое использование сертификатов устраняет необходимость в ручной проверке отпечатков пальцев между пользователями.

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

В таких системах, как CGA или же SFS и большинство криптографических одноранговые сети, отпечатки пальцев встраиваются в уже существующие форматы адресов и имен (например, IPv6 адреса, имена файлов или другие идентификационные строки). Если адреса и имена уже обмениваются через доверенные каналы, этот подход позволяет отпечаткам пальцев совмещать их.[1]

В PGP большинство ключей создается таким образом, что так называемый «идентификатор ключа» равен младшим 32 или 64 битам отпечатка ключа соответственно. PGP использует идентификаторы ключей для обозначения открытых ключей для различных целей. Строго говоря, это не отпечатки пальцев, поскольку их небольшая длина не позволяет им надежно аутентифицировать открытый ключ. 32-битные идентификаторы ключей не должны использоваться, поскольку текущее оборудование может генерировать 32-битные идентификаторы ключей всего за 4 секунды.[2]

Безопасность отпечатков открытого ключа

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

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

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

На практике большинство широко используемых сегодня отпечатков пальцев основаны на необрезанных хэшах MD5 или SHA-1. По состоянию на 2017 год коллизии, но не прообразы, можно найти в MD5 и SHA-1. Поэтому в будущем, вероятно, будет все больше использоваться новые хеш-функции, такие как SHA-256. Однако отпечатки пальцев, основанные на SHA-256 и других хэш-функциях с большой длиной вывода, с большей вероятностью будут усечены, чем (относительно короткие) отпечатки MD5 или SHA-1.

В ситуациях, когда длина отпечатка пальца должна быть минимизирована любой ценой, безопасность отпечатка пальца может быть повышена за счет увеличения стоимости вычисления отпечатка пальца. Например, в контексте Адреса, созданные криптографически, это называется «хеш-расширение» и требует, чтобы любой, кто вычисляет отпечаток пальца, нашел хеш-сумма начиная с фиксированного количества нулей[3], что считается дорогостоящей операцией.

Смотрите также

Рекомендации

  1. ^ Давид Мазьер; М. Франс Каашук (Сентябрь 1998 г.). Избегая зла централизованного управления с помощью самопроверяющихся путей (PostScript ). Материалы 8-го ACM Европейский семинар SIGOPS: Поддержка создания распределенных приложений. Синтра, Португалия: MIT. Получено 2006-12-23.
  2. ^ Зло 32: Проверьте свои отпечатки GPG
  3. ^ Аура, Тумас (март 2005 г.). «Расширение хеша». Криптографически сгенерированные адреса (CGA). IETF. сек. 7.2. Дои:10.17487 / RFC3972. RFC 3972. Получено 2 января, 2018.