Отпечаток открытого ключа
Эта статья в значительной степени или полностью опирается на один источник . ( июнь 2014 г. ) |
В криптографии с открытым ключом представляет отпечаток открытого ключа собой короткую последовательность байтов, используемую для идентификации более длинного открытого ключа . Отпечатки пальцев создаются путем применения криптографической хэш-функции к открытому ключу. Поскольку отпечатки пальцев короче ключей, к которым они относятся, их можно использовать для упрощения определенных задач управления ключами. В программном обеспечении Microsoft вместо «отпечатка пальца» используется «отпечаток большого пальца».
Создание отпечатков открытого ключа
[ редактировать ]Отпечаток открытого ключа обычно создается с помощью следующих шагов:
- Открытый ключ (и, возможно, некоторые дополнительные данные) кодируется в последовательность байтов. Чтобы гарантировать, что тот же отпечаток пальца можно будет воссоздать позже, кодирование должно быть детерминированным, а любые дополнительные данные должны обмениваться и храниться вместе с открытым ключом. Дополнительные данные обычно представляют собой информацию, о которой должен знать каждый, кто использует открытый ключ. Примеры дополнительных данных включают в себя: с какими версиями протокола следует использовать ключ (в случае отпечатков пальцев PGP ); и имя держателя ключа (в случае отпечатков пальцев доверенной привязки X.509 , где дополнительные данные состоят из самоподписанного сертификата X.509 ).
- Данные, полученные на предыдущем шаге, хешируются с помощью криптографической хэш-функции, такой как SHA-1 или SHA-2 .
- При желании выходные данные хэш-функции можно усечь, чтобы получить более короткий и удобный отпечаток.
В результате этого процесса создается короткий отпечаток пальца, который можно использовать для аутентификации гораздо большего открытого ключа. Например, в то время как типичный открытый ключ 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
Использование отпечатков пальцев открытого ключа для аутентификации ключа
[ редактировать ]Когда открытый ключ получен по ненадежному каналу, например через Интернет , получатель часто желает подтвердить подлинность открытого ключа. Отпечатки пальцев могут помочь в этом, поскольку их небольшой размер позволяет передавать их по доверенным каналам, куда трудно поместить открытые ключи.
Например, если Алиса желает подтвердить подлинность открытого ключа как принадлежащего Бобу, она может связаться с Бобом по телефону или лично и попросить его прочитать ей его отпечаток пальца или дать ей клочок бумаги с записанным отпечатком пальца. Затем Алиса может проверить, что этот доверенный отпечаток соответствует отпечатку открытого ключа. Обмен и сравнение значений, подобный этому, будет намного проще, если значения представляют собой короткие отпечатки пальцев, а не длинные открытые ключи.
Отпечатки пальцев также могут быть полезны при автоматизации обмена или хранения данных аутентификации ключей. Например, если данные аутентификации ключа необходимо передавать через протокол или хранить в базе данных , где размер полного открытого ключа является проблемой, то обмен или хранение отпечатков пальцев может быть более жизнеспособным решением.
Кроме того, отпечатки пальцев могут быть запрошены поисковыми системами, чтобы гарантировать, что только что загруженный пользователем открытый ключ может быть виден сторонним поисковым системам. Если поисковая система возвращает результаты, ссылающиеся на отпечаток пальца, связанный с нужным сайтом (сайтами), можно быть более уверенным в том, что ключ не был введен злоумышленником, например, в результате атаки «Человек посередине» .
PGP разработала список слов PGP , чтобы облегчить обмен отпечатками открытых ключей по голосовым каналам.
Отпечатки открытых ключей на практике
[ редактировать ]В таких системах, как SSH, пользователи могут обмениваться отпечатками пальцев и проверять их вручную для выполнения аутентификации по ключу. Как только пользователь примет отпечаток пальца другого пользователя, этот отпечаток пальца (или ключ, к которому он относится) будет храниться локально вместе с записью имени или адреса другого пользователя, так что будущая связь с этим пользователем может быть автоматически аутентифицирована.
на базе X.509 В таких системах, как PKI , отпечатки пальцев в основном используются для аутентификации корневых ключей. Эти корневые ключи выдают сертификаты, которые можно использовать для аутентификации пользовательских ключей. Такое использование сертификатов устраняет необходимость ручной проверки отпечатков пальцев между пользователями.
В таких системах, как 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 ] предполагается, что это дорогостоящая операция.
См. также
[ редактировать ]- Отпечаток пальца (вычисления)
- Список слов PGP
- Криптография с открытым ключом
- Аутентификация по ключу
- Управление ключами
- Сторона, подписывающая ключ
- Х.509
- Цифровая подпись
- Отпечаток пальца Рабина
Ссылки
[ редактировать ]- ^ Давид Мазьер ; М. Франс Каашук (сентябрь 1998 г.). Спасайтесь от зла централизованного управления с помощью самосертифицированных имен путей ( PostScript ) . Материалы 8-го европейского семинара ACM SIGOPS: Поддержка создания распределенных приложений. Синтра, Португалия: Массачусетский технологический институт . Проверено 23 декабря 2006 г.
- ^ Зло 32: Проверьте свои отпечатки пальцев GPG
- ^ Аура, Тумас (март 2005 г.). «Хеш-расширение» . Криптографически генерируемые адреса (CGA) . IETF . сек. 7.2. дои : 10.17487/RFC3972 . РФК 3972 . Проверено 2 января 2018 г.