Слабый ключ
В криптографии слабый ключ — это ключ , который, используемый с определенным шифром , заставляет шифр вести себя каким-то нежелательным образом. Слабые ключи обычно представляют собой очень небольшую часть общего пространства ключей, что обычно означает, что ключ шифрования, созданный путем генерации случайных чисел , вряд ли приведет к возникновению проблем безопасности. Тем не менее считается желательным, чтобы шифр не имел слабых ключей. Говорят, что шифр без слабых ключей имеет плоское или линейное ключей пространство .
происхождение Историческое
Практически все роторные шифровальные машины (начиная с 1925 года) имеют недостатки реализации, которые приводят к созданию значительного количества слабых ключей. Некоторые роторные машины имеют больше проблем со слабыми ключами, чем другие, как это делают современные блочные и потоковые шифры.
Первые машины потокового шифрования также были роторными машинами и имели те же проблемы со слабыми ключами, что и более традиционные роторные машины. T52 был одной из таких машин потокового шифрования , у которой были проблемы со слабым ключом.
Британцы впервые обнаружили трафик Т52 летом и осенью 1942 года. Одно соединение было между Сицилией и Ливией под кодовым названием « Осетр », а другое — от Эгейского моря до Сицилии под кодовым названием « Скумбрия ». Операторы обоих каналов имели обыкновение шифровать несколько сообщений с одинаковыми настройками машины, получая при этом большую глубину .
Существовало несколько (в основном несовместимых) версий Т52: Т52а и Т52b (отличавшиеся только электрическим шумоподавлением), Т52с, Т52d и Т52е. Хотя T52a/b и T52c были криптографически слабыми, последние два были более совершенными устройствами; Движение колес было прерывистым, решение о том, продвигать их вперед или нет, принималось логическими схемами, которые принимали в качестве входных данных данные от самих колес.
Кроме того, был устранен ряд концептуальных недостатков (в том числе очень тонких). Одним из таких недостатков была возможность сбрасывать поток ключей в фиксированную точку, что приводило к повторному использованию ключей недисциплинированными операторами станков.
Слабые ключи в DES [ править ]
Блочный шифр DES имеет несколько конкретных ключей, называемых «слабыми ключами» и «полуслабыми ключами». Это ключи, которые заставляют режим шифрования DES действовать идентично режиму дешифрования DES (хотя потенциально и с другим ключом).
В процессе работы секретный 56-битный ключ разбивается на 16 подключей в соответствии с расписанием ключей DES ; один подраздел используется в каждом из шестнадцати раундов DES. DES Слабые ключи создают шестнадцать идентичных подразделов. Это происходит, когда ключ (выраженный в шестнадцатеричном формате ): [1]
- Чередование единиц + нули (0x0101010101010101)
- Чередование «F» + «E» (0xFEFEFEFEFEFEFEFE)
- '0xE0E0E0E0F1F1F1F1'
- '0x1F1F1F1F0E0E0E0E'
Если реализация не учитывает биты четности, соответствующие ключи с инвертированными битами четности также могут работать как слабые ключи:
- все нули (0x0000000000000000)
- все 'F' (0xFFFFFFFFFFFFFFFFFF)
- '0xE1E1E1E1F0F0F0F0'
- '0x1E1E1E1E0F0F0F0F'
При использовании слабых ключей результат перестановочного выбора 1 (PC-1) DES в расписании ключей приводит к тому, что раундовые ключи представляют собой либо все нули, все единицы, либо чередующиеся шаблоны ноль-единица.
Поскольку все подразделы идентичны, а DES представляет собой сеть Фейстеля , функция шифрования является самоинвертирующей; то есть, несмотря на то, что однократное шифрование дает безопасный зашифрованный текст, двойное шифрование дает исходный открытый текст.
В DES также есть полуслабые ключи , которые создают только два разных подключа, каждый из которых используется в алгоритме восемь раз: это означает, что они входят в пары K 1 и K 2 и обладают следующим свойством:
где E K (M) — алгоритм шифрования, шифрующий M с помощью ключа K. сообщение Существует шесть полуслабых пар ключей:
- 0x011F011F010E010E и 0x1F011F010E010E01
- 0x01E001E001F101F1 и 0xE001E001F101F101
- 0x01FE01FE01FE01FE и 0xFE01FE01FE01FE01
- 0x1FE01FE00EF10EF1 и 0xE01FE01FF10EF10E
- 0x1FFE1FFE0EFE0EFE и 0xFE1FFE1FFE0EFE0E
- 0xE0FEE0FEF1FEF1FE и 0xFEE0FEE0FEF1FEF1
Есть также 48 потенциально слабых ключей, которые создают только четыре отдельных подраздела (вместо 16). Их можно найти в публикации NIST. [2]
Эти слабые и полуслабые ключи не считаются «фатальными недостатками» DES. Есть 2 56 (7.21 × 10 16 , около 72 квадриллионов) возможных ключей для DES, из которых четыре слабых и двенадцать полуслабых. Это настолько малая часть возможного пространства ключей, что пользователям не о чем беспокоиться. При желании они могут проверить наличие слабых или полуслабых ключей при их генерации. Их очень мало, и их легко узнать. Однако обратите внимание, что в настоящее время DES больше не рекомендуется для общего использования, поскольку все ключи DES могут быть взломаны методом перебора. Прошли десятилетия с тех пор, как машина Deep Crack взламывала их в порядке дней, и, как это обычно делают компьютеры, более поздние решения значительно дешевле в этом временном масштабе. Примеры прогресса — в статье Deep Crack.
Список алгоритмов со слабыми ключами [ править ]
![]() |
- DES, как подробно описано выше.
- RC4 . Слабые векторы инициализации RC4 позволяют злоумышленнику организовать атаку с использованием известного открытого текста и широко используются для компрометации безопасности WEP. [3] и ARC4 DMRA DMR .
- ИДЕЯ . Слабые ключи IDEA можно идентифицировать при атаке с использованием выбранного открытого текста . Они делают взаимосвязь между суммой XOR битов открытого текста и битов зашифрованного текста предсказуемой. Перечня этих ключей нет, но их можно идентифицировать по их «структуре».
- Иглобрюхая рыба . Слабые ключи Blowfish создают плохие S-блоки , поскольку S-блоки Blowfish зависят от ключей. Существует атака по выбранному открытому тексту против варианта Blowfish с сокращенным числом раундов, которая упрощается за счет использования слабых ключей. Это не проблема для полного 16-раундового Blowfish.
- ГМАК . Часто используется в конструкции AES-GCM. Слабые ключи можно определить по групповому порядку ключа аутентификации H (для AES-GCM H получается из ключа шифрования путем шифрования нулевого блока).
- РСА и ДСА . Август 2012 г. Надя Хенингер, Закир Дурумерик, Эрик Вустроу, Дж. Алекс Халдерман обнаружили, что сертификаты TLS, которые они оценивали, разделяют ключи из-за недостаточной энтропии во время генерации ключей, и смогли получить частные ключи DSA и RSA хостов TLS и SSH, зная только общедоступные ключи. ключ. [4]
Никаких слабых клавиш как цель дизайна [ править ]
Целью создания «плоского» пространства ключей (т. е. обеспечения одинаковой стойкости всех ключей) всегда является цель разработки шифра. Как и в случае с DES, иногда допустимо небольшое количество слабых ключей при условии, что все они идентифицированы или идентифицируемы. Алгоритм, имеющий неизвестные слабые ключи, не вызывает особого доверия. [ нужна ссылка ]
Две основные меры противодействия непреднамеренному использованию слабого ключа:
- Проверка сгенерированных ключей по списку известных слабых ключей или включение отклонения слабых ключей в планирование ключей.
- Когда известно, что количество слабых ключей очень мало (по сравнению с размером пространства ключей), равномерное случайное генерирование ключа гарантирует, что вероятность того, что он окажется слабым, будет (известным) очень небольшим числом.
Большое количество слабых ключей является серьезным недостатком в любой конструкции шифра, поскольку тогда будет (возможно, слишком) большая вероятность того, что случайно сгенерированный ключ окажется слабым, что поставит под угрозу безопасность сообщений, зашифрованных с его помощью. В таких случаях также потребуется больше времени для проверки случайно сгенерированных ключей на наличие уязвимостей, что приведет к искушению использовать ярлыки в интересах «эффективности».
Однако слабые ключи гораздо чаще представляют собой проблему, когда злоумышленник имеет некоторый контроль над тем, какие ключи используются, например, когда блочный шифр используется в режиме работы, предназначенном для создания безопасной криптографической хэш-функции (например, Дэвиса-Мейера ).
См. также [ править ]
Ссылки [ править ]
- ^ FIPS, Рекомендации по внедрению и использованию стандарта шифрования данных NBS , FIPS-PUB 74, http://www.itl.nist.gov/fipspubs/fip74.htm
- ^ NIST, Рекомендации по блочному шифру тройного алгоритма шифрования данных (TDEA), специальная публикация 800-67 , стр. 14
- ^ Флюрер С., Мантин И., Шамир А. Слабые стороны алгоритма планирования ключей восьмого ежегодного семинара RC4 по избранным областям криптографии (август 2001 г.), http://citeseer.ist.psu.edu/fluhrer01weaknesses. HTML
- ^ «Исследовательская работа — Factorable.net» . Factorable.net . Проверено 26 июня 2020 г.