stringtranslate.com

Отпечаток открытого ключа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В таких системах, как PGP или Groove , отпечатки пальцев могут использоваться для любого из вышеперечисленных подходов: они могут использоваться для аутентификации ключей, принадлежащих другим пользователям, или ключей, принадлежащих органам, выдающим сертификаты. В 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 . Получено 23.12.2006 .
  2. ^ Evil 32: Проверьте свои отпечатки пальцев GPG
  3. ^ Аура, Тумас (март 2005 г.). «Расширение хеша». Криптографически сгенерированные адреса (CGA). IETF . раздел 7.2. doi : 10.17487/RFC3972 . RFC 3972. Получено 2 января 2018 г.