В криптографии слабый ключ является ключом, который, используемый с конкретным шифром, заставляет шифр вести себя нежелательным образом. Слабые ключи обычно представляют собой очень небольшую часть общего пространства ключей, что обычно означает, что при генерации случайного ключа для шифрования сообщения очень маловероятно, что слабые ключи вызовут проблемы с безопасностью. Тем не менее считается желательным, чтобы шифр не имел слабых ключей. Считается, что шифр без слабых ключей имеет плоское или линейное пространство ключей.
Практически все шифровальные машины на основе ротора (начиная с 1925 г.) имеют недостатки реализации, которые приводят к создается значительное количество слабых ключей. Некоторые машины имеют больше проблем со слабыми ключами, чем другие, как это делают современные блочные и потоковые шифры.
Первые машины с потоковым шифрованием, которые также были роторными машинами, имели те же проблемы слабых ключей, что и более традиционные роторные машины. T52 был одной из таких машин потокового шифрования, у которой были проблемы со слабым ключом.
Британцы впервые обнаружили трафик T52 летом и осенью 1942 года. Одно соединение было между Сицилией и Ливией под кодовым названием «Sturgeon », и еще один от Эгейского до Сицилии, кодовое название «Скумбрия ». Операторы обоих каналов имели обыкновение шифровать несколько сообщений с одинаковыми настройками машины, получая большое количество глубин.
. Было несколько (в основном несовместимых) версий T52: T52a и T52b (которые отличались только подавление электрических шумов), T52c, T52d и T52e. Хотя T52a / b и T52c были криптологически слабыми, последние два были более продвинутыми устройствами; движение колес было прерывистым, решение о том, продвигать ли их вперед или нет, контролировалось логическими схемами, которые принимали в качестве входных данных от самих колес.
Кроме того, был устранен ряд концептуальных недостатков (в том числе очень тонких). Одним из таких недостатков была возможность сбросить ключевой поток на фиксированную точку, что привело к повторному использованию ключей недисциплинированными операторами.
Блочный шифр DES имеет несколько конкретных ключей, называемых «слабыми ключами» и «полуслабыми ключами». Это ключи, которые заставляют режим шифрования DES действовать идентично режиму дешифрования DES (хотя потенциально с другим ключом).
Во время работы секретный 56-битный ключ разбивается на 16 подключей в соответствии с расписанием ключей DES ; один подключ используется в каждом из шестнадцати раундов DES. Слабые ключи DES порождают шестнадцать идентичных подключей. Это происходит, когда ключ (выраженный в шестнадцатеричном ):
Если реализация не учитывает биты четности, соответствующие ключи с инвертированными битами четности также могут работать как слабые ключи:
Использование слабых ключей, результат Разрешенный выбор 1 (PC-1) в расписании ключей DES приводит к тому, что ключи раунда представляют собой либо все нули, либо все единицы, либо чередующиеся шаблоны нуля или единицы.
Поскольку все подключи идентичны, а DES является сетью Фейстеля, функция шифрования является самоинвертирующейся; то есть, несмотря на то, что шифрование один раз дает безопасный зашифрованный текст, двойное шифрование дает исходный открытый текст.
DES также имеет полуслабые ключи, которые создают только два разных подключа, каждый из которых используется в алгоритме восемь раз: это означает, что они входят парами K 1 и K 2, и у них есть свойство:
, где E K (M) - алгоритм шифрования, шифрующий сообщение M с ключом K. Имеется шесть полуслабых пар ключей:
Есть также 48, возможно, слабая ключи, которые производят только четыре отдельных подраздела (вместо 16). Их можно найти в публикации NIST.
Эти слабые и полуслабые ключи не считаются «фатальными недостатками» DES. Существует 2 (7,21 × 10, около 72 квадриллионов) возможных ключей для DES, из которых четыре являются слабыми, а двенадцать - полуслабыми. Это настолько малая часть возможного пространства ключей, что пользователям не о чем беспокоиться. При желании они могут проверить наличие слабых или полуслабых ключей при генерации ключей. Их очень мало, и их легко узнать. Однако обратите внимание, что в настоящее время DES больше не рекомендуется для общего использования, так как все ключи DES могут быть перебраны. прошло несколько десятилетий с тех пор, как машина Deep Crack взламывала их в порядке дней, и, как это обычно бывает с компьютерами, более свежие решения намного дешевле в этом масштабе времени. Примеры прогресса можно найти в статье Deep Crack.
Цель иметь «плоское» пространство ключей (то есть все ключи одинаково сильны) всегда является целью разработки шифров. Как и в случае с DES, иногда допустимо небольшое количество слабых ключей при условии, что все они идентифицированы или поддаются идентификации. Алгоритм с неизвестными слабыми ключами не вызывает особого доверия.
Две основных меры противодействия непреднамеренному использованию слабого ключа:
Большое количество слабых ключей является серьезным недостатком в любом дизайне шифров, поскольку тогда будет (возможно, слишком) большая вероятность того, что случайно сгенерированный ключ окажется слабым, что поставит под угрозу безопасность сообщений, зашифрованных под ним. В таких случаях также потребуется больше времени для проверки сгенерированных случайным образом ключей на слабые места, что приведет к появлению сокращений в интересах «эффективности».
Однако слабые ключи гораздо чаще являются проблемой, когда противник имеет некоторый контроль над тем, какие ключи используются, например, когда блочный шифр используется в режиме операции, предназначенном для построения защищенная криптографическая хеш-функция (например, Дэвис – Мейер ).