Слабый ключ - Weak key

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

Историческое происхождение

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

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

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

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

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

Слабые клавиши в DES

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

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

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

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

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

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

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

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

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

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

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

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

Список алгоритмов со слабыми ключами

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

Отсутствие слабых ключей как цель дизайна

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

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

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

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

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

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

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

  1. ^ FIPS, Рекомендации по внедрению и использованию стандарта шифрования данных NBS, FIPS-PUB 74, http://www.itl.nist.gov/fipspubs/fip74.htm
  2. ^ NIST, Рекомендация по блочному шифру алгоритма тройного шифрования данных (TDEA), Специальная публикация 800-67, стр. 14
  3. ^ Флурер, С., Мантин, И., Шамир, А. Слабые стороны алгоритма планирования ключей RC4. Восьмой ежегодный семинар по избранным областям криптографии (август 2001 г.), http://citeseer.ist.psu.edu/fluhrer01weakness.html
  4. ^ «Исследовательская статья - factorable.net». factorable.net. Получено 2020-06-26.