Слабый ключ

редактировать

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

Содержание
  • 1 Историческое происхождение
  • 2 Слабые ключи в DES
  • 3 Список алгоритмов со слабыми ключами
  • 4 Отсутствие слабых ключей как цель разработки
  • 5 См. Также
  • 6 Ссылки
Историческое происхождение

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

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

Британцы впервые обнаружили трафик T52 летом и осенью 1942 года. Одно соединение было между Сицилией и Ливией под кодовым названием «Sturgeon », и еще один от Эгейского до Сицилии, кодовое название «Скумбрия ». Операторы обоих каналов имели обыкновение шифровать несколько сообщений с одинаковыми настройками машины, получая большое количество глубин.

. Было несколько (в основном несовместимых) версий T52: T52a и T52b (которые отличались только подавление электрических шумов), T52c, T52d и T52e. Хотя T52a / b и T52c были криптологически слабыми, последние два были более продвинутыми устройствами; движение колес было прерывистым, решение о том, продвигать ли их вперед или нет, контролировалось логическими схемами, которые принимали в качестве входных данных от самих колес.

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

Слабые ключи в DES

Блочный шифр DES имеет несколько конкретных ключей, называемых «слабыми ключами» и «полуслабыми ключами». Это ключи, которые заставляют режим шифрования DES действовать идентично режиму дешифрования DES (хотя потенциально с другим ключом).

Во время работы секретный 56-битный ключ разбивается на 16 подключей в соответствии с расписанием ключей DES ; один подключ используется в каждом из шестнадцати раундов DES. Слабые ключи DES порождают шестнадцать идентичных подключей. Это происходит, когда ключ (выраженный в шестнадцатеричном ):

  • Чередование единиц + нули (0x0101010101010101)
  • Чередование 'F' + 'E' (0xFEFEFEFEFEFEFEFE)
  • '0xE0E0E0E0F1F1F1F1'
  • '0x1F1F1F1F0E0E0E0E'

Если реализация не учитывает биты четности, соответствующие ключи с инвертированными битами четности также могут работать как слабые ключи:

  • все нули (0x0000000000000000)
  • все единицы (0xFFFFFFFFFFFFFFFF)
  • '0xE1E1E1E1F0F0F0F0'
  • '0x1E1E1E1E0F0F0F0F'

Использование слабых ключей, результат Разрешенный выбор 1 (PC-1) в расписании ключей DES приводит к тому, что ключи раунда представляют собой либо все нули, либо все единицы, либо чередующиеся шаблоны нуля или единицы.

Поскольку все подключи идентичны, а DES является сетью Фейстеля, функция шифрования является самоинвертирующейся; то есть, несмотря на то, что шифрование один раз дает безопасный зашифрованный текст, двойное шифрование дает исходный открытый текст.

DES также имеет полуслабые ключи, которые создают только два разных подключа, каждый из которых используется в алгоритме восемь раз: это означает, что они входят парами K 1 и K 2, и у них есть свойство:

EK 1 (EK 2 (M)) = M {\ displaystyle E_ {K_ {1}} (E_ {K_ {2}} (M)) = M}E_ {K_1} (E_ {K_2} (M)) = M

, где E K (M) - алгоритм шифрования, шифрующий сообщение M с ключом K. Имеется шесть полуслабых пар ключей:

  • 0x011F011F010E010E и 0x1F011F010E010E01
  • 0x01E001E001F101F1 и 0xE001E001F101F101
  • 0x01FE01FE01FE01FE и 0xFE01FE01FE01FE01
  • 0x1FE01FE00EF10EF1 и 0xE01FE01FF10EF10E
  • 0x1FFE1FFE0EFE0EFE и 0xFE1FFE1FFE0EFE0E
  • 0xE0FEE0FEF1FEF1FE и 0xFEE0FEE0FEF1FEF1

Есть также 48, возможно, слабая ключи, которые производят только четыре отдельных подраздела (вместо 16). Их можно найти в публикации NIST.

Эти слабые и полуслабые ключи не считаются «фатальными недостатками» DES. Существует 2 (7,21 × 10, около 72 квадриллионов) возможных ключей для DES, из которых четыре являются слабыми, а двенадцать - полуслабыми. Это настолько малая часть возможного пространства ключей, что пользователям не о чем беспокоиться. При желании они могут проверить наличие слабых или полуслабых ключей при генерации ключей. Их очень мало, и их легко узнать. Однако обратите внимание, что в настоящее время DES больше не рекомендуется для общего использования, так как все ключи DES могут быть перебраны. прошло несколько десятилетий с тех пор, как машина Deep Crack взламывала их в порядке дней, и, как это обычно бывает с компьютерами, более свежие решения намного дешевле в этом масштабе времени. Примеры прогресса можно найти в статье Deep Crack.

Список алгоритмов со слабыми ключами
  • DES, как описано выше.
  • RC4. Слабые векторы инициализации RC4 позволяют злоумышленнику организовать атаку с использованием известного открытого текста и широко используются для компрометации безопасности WEP.
  • IDEA. Слабые ключи IDEA можно идентифицировать при атаке с выбранным открытым текстом. Они делают предсказуемой взаимосвязь между суммой XOR битов открытого текста и битами зашифрованного текста. Список этих ключей отсутствует, но их можно определить по их «структуре».
  • Blowfish. Слабые ключи Blowfish создают плохие S-блоки, поскольку S-блоки Blowfish зависят от ключа. Существует атака по выбранному открытому тексту против варианта Blowfish с сокращенным циклом, которая упрощается за счет использования слабых ключей. Это не касается полностью Blowfish с 16 раундами.
  • GMAC. Часто используется при построении AES-GCM. Слабые ключи можно идентифицировать по групповому порядку ключа аутентификации H (для AES-GCM, H получается из ключа шифрования путем шифрования нулевого блока).
  • RSA и DSA. Август 2012 Надя Хенингер, Закир Дурумерик, Эрик Вустроу, Дж. Алекс Халдерман обнаружили, что TLS-сертификаты, которые они оценили, имеют общие ключи из-за недостаточной энтропии во время генерации ключей, и смогли получить закрытые ключи DSA и RSA для хостов TLS и SSH, зная только общедоступные key.
Отсутствие слабых ключей как цель разработки

Цель иметь «плоское» пространство ключей (то есть все ключи одинаково сильны) всегда является целью разработки шифров. Как и в случае с DES, иногда допустимо небольшое количество слабых ключей при условии, что все они идентифицированы или поддаются идентификации. Алгоритм с неизвестными слабыми ключами не вызывает особого доверия.

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

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

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

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

См. Также
Ссылки
Последняя правка сделана 2021-06-20 10:19:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте