Безопасность телекоммуникационных систем Лекция №2 Стандарт шифрования даних DES Введение Стандарт шифрования данных (DES) — блочный шифр с симметричными ключами, разработан Национальным Институтом Стандартов и Технологии (NIST – National Institute of Standards and Technology) История В l973 году NIST издал запрос для разработки предложения национальной криптографической системы с симметричными ключами. Предложенная IBM модификация проекта, названная Lucifer, была принята как DES. DES были изданы в эскизном виде в Федеральном Регистре в марте 1975 года как Федеральный Стандарт Обработки Информации (FIPS – Federal Information Processing Standard) Недоверие к стандарту Критиковалась сомнительно маленькая длина ключа (только 56 битов) критики были обеспокоены некоторым скрытым построением внутренней структуры DES Они подозревали, что некоторая часть структуры (S-блоки) может иметь скрытую лазейку, которая позволит расшифровывать сообщения без ключа внутренняя структура стандарта доработана январь 1977 года DES был издан как FIPS 46. Однако FIPS объявил DES как стандарт для использования в неофициальных приложениях. DES был наиболее широко используемым блочным шифром с симметричными ключами, начиная с его публикации. позже NIST предложил новый стандарт (FIPS 46-3), который рекомендует использование тройного DES (трехкратно повторенный шифр DES) для будущих приложений. Общая схема Ш и ДШ DES — блочный шифр Для шифрования и дешифрования применяется один и тот же 56битовый ключ Рис. 1 Структура DES Процесс шифрования состоит из двух перестановок (P-блоки) — они называются начальные и конечные перестановки, — и шестнадцати раундов Файстеля. Каждый раунд использует различные сгенерированные 48-битовые ключи. Общая структура DES Рис. 2 Начальные и конечные шаги перестановки DES Рис. 3 Таблица 1. Таблица начальных и конечных перестановок Начальные перестановки Конечные перестановки 58 50 42 34 26 18 10 02 40 08 48 16 56 24 64 32 60 52 44 36 28 20 12 04 39 07 47 15 55 23 63 31 62 54 46 38 30 22 14 06 38 06 46 14 54 22 62 30 64 56 48 40 32 24 16 08 37 05 45 13 53 21 61 29 57 49 41 33 25 17 09 01 36 04 44 12 52 20 60 28 59 51 43 35 27 19 11 03 35 03 43 11 51 19 59 27 61 53 45 37 29 21 13 05 34 02 42 10 50 18 58 26 63 55 47 39 31 23 15 07 33 01 41 09 49 17 57 25 Правила перестановки для этого Pблока Правила перестановки для этого P-блока показаны в 1. Таблицу можно представить как 64-элементный массив. Значение каждого элемента определяет номер входного порта, а порядковый номер (индекс) элемента определяет номер выходного порта. Эти две перестановки не имеют никакого значения для криптографии в DES. Обе перестановки – без ключей и предопределенны. Причина, почему они включены в DES, не ясна и не была указана проектировщиками DES. Можно предположить, что DES был проектом, который предполагалось реализовать в аппаратных средствах (на чипах), и что эти две сложные перестановки должны были затруднить программное моделирование механизма шифрования. Значение начальных и конечных перестановок Начальные и конечные перестановки – это прямые P-блоки, которые инверсны друг другу. Они не имеют значения для криптографии DES. Раунды DES использует 16 раундов. Каждый раунд DES применяет шифр Файстеля, как это показано на рис. Рис. 4 Раунды (описание) Раунд принимает LI-1 RI-1 от предыдущего раунда (или начального блока перестановки) и создает для следующего раунда LI И RI , которые поступают на следующий раунд (или конечный блок перестановки). Каждый из этих элементов является обратимым. Устройство замены — очевидно обратимо, оно меняет местами левую половину текста с правой половиной. Смеситель является обратимым, потому что операция ИСКЛЮЧАЮЩЕЕ ИЛИ обратима. Все необратимые элементы сосредоточены в функции f (RI-1,KI) Функция DES Основной блок DES — функция DES. Функция DES с помощью 48-битового ключа зашифровывает 32 самых правых бит RI-1, чтобы получить на выходе 32-битовое слово. Эта функция содержит, как это показано на рис. 5, четыре секции: отбеливатель (whitener), P-блок расширения, группу S-блоков прямой P-блок. P-блок расширения (1/3) Так как вход RI-1 имеет длину 32 бита, а ключ KI — длину 48 битов, мы сначала должны расширить RI-1 до 48 бит. RI-1 разделяется на 8 секций по 4 бита. Каждая секция на 4 бита расширяется до 6 бит. Эта перестановка расширения следует по заранее определенным правилам. Для секции значения входных бит 1, 2, 3 и 4 присваиваются битам 2, 3, 4 и 5 соответственно на выходе. Выходной бит 1 формируется на основе входного бита 4 из предыдущей секции; бит выхода 6 формируется из бита 1 в следующей секции. Если секции 1 и 8 рассматривать как соседние секции, то те же самые правила применяются к битам 1 и 32. Рисунок 6 показывает входы и выходы в перестановке расширения. Хотя отношения между входом и выходом могут быть определены математически, но чтобы определить этот P-блок, DES использует таблицу 2. Обратите внимание, что число выходов 48, но диапазон значений — только от 1 до 32. Некоторые из входов идут к больше чем одному выходу. Например, значение входного бита 5 становится значением битов выхода 6 и 8. Функция DES Рис. 5 P-блок расширения Схема P-блока расширения Рис. 6 Отбеливатель (whitener) После расширения DES использует операцию XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) над расширенной частью правой секции и ключом раунда. Заметим, что правая секция и ключ имеют длину 48 бит. Также заметим, что ключ раунда использует только эту операцию. S-блоки S-блоки смешивают информацию (операция перемешивания). DES использует Sблоки, каждый с 6-ю входными битами и 4мя выходными Рис. 7 Правила для S- блока Рис. 8 Данные из 48 битов от второй операции DES разделены на восемь кусков по 6 битов, и каждый кусок поступает в блок. Результат каждого блока — кусок на 4 бита; когда они объединены, результат выражается в 32-битовом тексте. Подстановка в каждом блоке следует по заранее определенным правилам, основанным на таблице из 4-х строк и 16-ти столбцов. Комбинация битов 1 и 6 на входе определяет одну из четырех строк; комбинация битов от 2-го до 5-го определяет один из шестнадцати столбцов, как показано на рис. 8. Таблицы S-блока Поскольку для каждого S-блока есть собственная таблица, необходимо иметь восемь таблиц, например таких, как это показано в таблице 3. Значение входа (номер строки и номер столбца) и значения выхода даются как десятичные номера, чтобы сэкономить место на странице. В реальности они могут быть заменены двоичными числами. Таблица 3. S-блок 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07 1 00 15 07 04 14 02 13 10 03 06 12 11 09 05 03 08 2 04 01 14 07 13 06 02 11 15 12 09 07 03 10 05 00 3 15 12 08 02 04 09 01 07 05 11 03 14 10 00 06 13 Прямая перестановка Прямая перестановка — последняя операция в функции DES — прямая перестановка с 32 битами на входе и 32 битами на выходе. Отношения "вход-выход" для этой операции показаны в Таблице 4. Они следуют тем же самым общим правилам, как и предыдущие таблицы перестановки. Например, седьмой бит входа становится вторым битом выхода. Таблица 4. Таблица прямой перестановки 16 07 20 21 29 12 28 17 01 15 23 26 05 18 31 10 02 08 24 14 32 27 03 09 19 13 30 06 22 11 04 25 Шифр и обратный шифр Используя смеситель и устройство замены, мы можем создать шифр и обратный шифр для каждого из 16-ти раундов. Шифр используется на стороне шифрования; обратный шифр — на стороне дешифрования. Алгоритмы создания шифра и обратного шифра аналогичны. Первый способ Один из методов, чтобы достигнуть поставленной цели (шифрование и обратное шифрование), состоит в том, чтобы сделать последний раунд отличающимся от других; он будет содержать только смеситель и не будет содержать устройства замены DES шифр и обратный шифр для первого способа Рис. 9 Левая секция исходного текста на стороне шифрования шифруется L0 как L16, и L16 дешифруется на стороне дешифратора как L0. Аналогичная ситуация с R0 и R16. Нужно запомнить очень важное положение, которое касается шифров: ключи раундов (K1 и K16) применяются при шифровании и дешифровании в обратном порядке. На стороне шифрования первый раунд применяет ключ K1, а раунд 16 — ключ K16; при дешифровании раунд 1 использует ключ K16, а раунд 16 — ключ K1. Альтернативный способ При первом способе раунд 16 отличается от других раундов тем, что там не применяется устройство замены. Это необходимо, чтобы сделать последний и первый смесители в шифре одинаковыми. Мы можем делать все 16 раундов одинаковыми, добавляя к 16-му раунду дополнительное устройство замены (два устройства замены позволяют нейтрализовать друг друга). Упражнение. Разработать схему альтернативного способа. Генерация ключей Генератор ключей создает шестнадцать ключей по 48 битов из ключа шифра на 56 битов. Однако ключ шифра обычно дается как ключ из 64-х битов, в котором 8 дополнительных битов являются битами проверки. Они отбрасываются перед фактическим процессом генерации ключей, который показан на рис. Рис. 10 Удаление битов проверки Предварительный процесс перед расширением ключей — перестановка сжатия, которую мы называем удалением битов проверки. Он удаляет биты четности (биты 8, 16, 24, 32..., 64) из 64-битового ключа и переставляет остальную часть битов согласно таблице. Остающееся значение на 56 битов — фактический ключ шифра, который используется, чтобы генерировать ключи раунда. Биты удаляются с помощью перестановки (Pблока сжатия), как это показано в табл Таблица удаления проверочных битов 57 49 41 33 25 17 09 01 58 50 42 34 26 18 10 02 59 51 43 35 27 19 11 03 60 52 44 36 63 55 47 39 31 23 15 07 62 54 46 37 30 22 14 06 61 53 45 37 29 21 13 05 28 20 12 04 Сдвиг влево После прямой перестановки ключ разделен на две части по 28 битов. Каждая часть сдвигается влево (циклический сдвиг) на один или два бита. В раундах 1, 2, 9 и 16 смещение – на один бит, в других раундах — на два бита. Затем эти две части объединяются, чтобы создать часть в 56 бит. Таблица показывает число сдвигов манипуляций для каждого раунда Таблица сжатия ключа Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Число бит 1 1 2 22 2 2 2 2 2 2 2 2 2 2 1 Пример Мы выбираем случайный блок исходного текста и случайный ключ и определяем, каким должен быть блок зашифрованного текста (все цифры даны в шестнадцатеричном исчислении). Plaintext: 123456ABCD 132536 Key: AABB09182736CCDD Cipher Text: COB7ASD05F3AS29C Трассировка данных в примере 3 Исходный текст: 123456ABCD 132536 После первоначальной перестановки: 14A7D67818CA18D После разбиения: L0= 14A7D678 R0 = 18CA18D Раунд Левая Правая Раунд 1 18CA18AD 5A78E394 Раунд 2 5A78E394 4A1210F6 Раунд 3 4A1210F6 B8089591 Раунд 4 B8089591 236779C2 Раунд 5 236779C2 A15A4B87 Раунд 6 A15A4B87 2E8F9C65 Раунд 7 2E8F9C65 A9FC20A3 Раунд 8 A9FC20A3 308BEE97 Раунд 9 308BEE97 10AF9D37 Раунд 10 10AF9D37 6CA6CB20 Раунд 11 6CA6CB20 FF3C485F Раунд 12 FF3C485F 22A5963B Раунд 13 22A5963B 387CCDAA Раунд 14 387CCDAA BD2DD2AB Раунд 15 BD2DD2AB CF26B472 Раунд 16 19BA9212 CF26B472 После объединения: 19BA9212 CF26B472 Зашифрованный текст: (после конечной перестановки) C0B7A8D05F3A829C Ключ раунда 194CD072DE8C 4568581ABCCE 06EDA4ACF5B5 DA2D032B6EE3 69A629FEC913 C1948E87475E 708AD2DDB3C0 34F822F0C66D 84BB4473DCCC 02765708B5BF 6D5560AF7CA5 C2C1E96A4BF3 99C31397C91F 251B8BC717D0 3330C5D9A36D 181C5D75C66D Пояснение к таблице Таблица показывает результат 16 раундов, которые включают смешивание и замену (исключая последний раунд). Результаты последних раундов (L16 и R16) объединены. Наконец, текст проходит конечную перестановку, для того чтобы получить зашифрованный текст. Следует отметить некоторые положения. Правая секция каждого раунда совпадает с левой секцией следующего раунда. Причина в том, что правая секция проходит через смеситель без изменения, а устройство замены переносит ее в левую секцию. Например, R1 передается через смеситель второго раунда без изменения, но затем, пройдя устройство замены, он становится L2. Второе интересное положение: на последнем раунде мы не имеем устройства замены. Именно поэтому R15 становится R16 вместо того чтобы стать L16. Анализ DES. Два желательных свойства блочного шифра — эффект лавины и законченность Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте. Было доказано, что DES имеет все признаки этого свойства. Эффект полноты заключается в том, что каждый бит зашифрованного текста должен зависеть от многих битов исходного текста. Рассеивание и перемешивание, произведенное P-блоками и S-блоками в DES, указывает на очень сильный эффект полноты. Чтобы проверить эффект лавины в DES, попробуем зашифровать два блока исходного текста, которые отличаются только одним битом текста, с помощью одного и того же ключа и определим разницу в числе бит в каждом раунде. Исходный текст: 0000000000000000 Ключ: 22234512987ABB23 Зашифрованный текст: 4789FD476E82A5F1 Исходный текст: 0000000000000001 Ключ: 22234512987ABB23 Зашифрованный текст: OA4ED5C15A63FEA3 Хотя два блока исходного текста отличаются только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5 процентах исходного текста создают изменение приблизительно 45 процентов зашифрованного текста. Проблемы разработок DES. Свойства S-блоков (1/2) 1) Входы каждой строки есть перестановки значений между 0 и 15. 2) S-блоки — нелинейные. Другими словами, выход — не аффинное преобразование. 3) Если мы изменяем единственный бит на входе, на выходе будут изменены два или больше бита. 4) Если два входа S-блока отличаются только двумя средними битами (битами 3 и 4), выходная информация должна отличаться по крайней мере двумя битами. Проблемы разработок DES. Свойства S-блоков (1/2) 5) Если два входа в S-блок отличаются первыми двумя битами (биты 1 и 2) и последними двумя битами (5 и 6), два выхода должны быть различны. 6) Есть только 32 шестибитовые пары "вход-выход" (xi и xj ) . Эти 32 входных пары создают 32 пары слова выхода по 4 бита. Если мы создаем какие-то различия между 32 выходами, то из этих d должны быть одинаковыми не больше чем 8. 7) Такой же критерий, как в пункте 6, применяется к трем S-блокам. 8) В любом S-блоке, если единственный входной бит сохраняется как константа (0 или 1), то другие биты изменяются случайно так, чтобы разности между числом нулей и единиц были минимизированы P-блоки (1/2) Между двумя рядами S-блоков (в двух последующих раундах), есть один прямой P-блок (32 на 32) и один P-блок расширения (32 на 48). Эти два P-блока вместе обеспечивают рассеивание битов. В структуре P-блоков были реализованы следующие критерии: 1. Каждый вход S-блока подключается к выходу другого S-блока (в предыдущем раунде). 2. Ни один вход к данному S-блоку не соединяется с выходом от того же самого блока (в предыдущем раунде). 3. Четыре бита от каждого S-блока идут в шесть различных S-блоков (в следующем раунде). 4. Ни один из двух битов выхода от S-блока не идет в тот же самый S-блок (в следующем раунде). P-блоки (2/2) 5. Если число блоков S-блоков 8, то S1, S2,..., S 8. – Выход Sj-2 переходит в один из первых двух битов Sj (в следующем раунде). – Бит выхода от Si-1 переходит в один из последних двух битов Sj (в следующем раунде). – Выход Sj +1 переходит в один из двух средних битов Sj (в следующем раунде). 6. Для каждого S-блока два бита выхода идут в первые или последние два бита S-блока в следующем раунде. Другие два бита выхода идут в средние биты S-блока в следующем раунде. 7. Если выход от Sj переходит в один из средних битов в Sk (в следующем раунде), то бит выхода от Sk не может идти в средний бит Sj. Если мы допускаем j = k, то подразумеваем, что ни один средний бит S-блока не может идти в один из средних битов того же самого S-блока в следующем раунде. Число раундов DES используют шестнадцать раундов шифра Файстеля. Доказано, что после того как каждый текст зашифрован восемь раундов, каждый бит зашифрованного текста — функция каждого бита исходного текста и каждого ключевого бита. Зашифрованный текст — полностью случайная функция исходного текста и зашифрованного текста. Отсюда вроде бы следует, что восьми раундов должно быть достаточно для хорошего шифрования. Однако эксперименты показывают, что некоторые версии DES с менее чем шестнадцатью раундами более уязвимы к атакам знания исходного текста, чем к атаке грубой силы, которая требует использования шестнадцати раундов DES. Слабости DES (1/2) В течение прошлых нескольких лет критики нашли некоторые слабости в DES. S-блоки. В литературе указываются по крайней мере три проблемы S-блоков. В S-блоке 4 три бита выхода могут быть получены тем же самым способом, что и первый бит выхода: дополнением некоторых из входных битов. Два специально выбранных входа к массиву S-блока могут создать тот же самый выход. Можно получить тот же самый выход в одном единственном раунде, изменяя биты только в трех соседних S-блоках. Слабости DES (2/2) P-блоки. В структуре P-блока были найдены одна загадка и одна слабость. Не ясно, почему проектировщики DES использовали начальную и конечную перестановки. Эти перестановки не вносят никаких новых свойств с точки зрения безопасности. В перестановке расширения (в функции) первые и четвертые биты последовательностей на 4 бита повторяются. Слабость в ключе шифра (1/2) Размер ключа. Критики утверждают, что самая серьезная слабость DES — это размер ключа (56 битов). Чтобы предпринять атаку грубой силы данного блока зашифрованного текста, злоумышленники должны проверить 256 ключей. a. Используя доступную сегодня технологию, можно проверить один миллион ключей в секунду. Это означает, что потребуется более чем две тысячи лет, чтобы выполнить атаку грубой силы на DES, используя компьютер только с одним процессором. b. Если мы можем сделать компьютер с одним миллионом чипов процессоров (параллельная обработка), то сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен DES, стоимость такого компьютера была более чем несколько миллионов долларов, но она быстро снизилась. Специальный компьютер был создан в 1998 году — и нашел ключ за 112 часов. Слабость в ключе шифра (2/2) c. Компьютерные сети могут моделировать параллельную обработку. В 1977 году команда исследователей использовала 3500 компьютеров, подключенных к Internet, чтобы найти ключ RSA за 120 дней. Множество ключей было разделено среди всех этих компьютеров, и каждый компьютер был ответственен за проверку части домена DES. Если 3500 связанных в сеть компьютеров могут найти ключ через 120 дней, то секретное общество из 42 000 членов может найти ключ через 10 дней. Приведенное выше показывает, что DES с размером ключа шифра 56 битов не обеспечивает достаточной безопасности. Есть одно решение этой проблемы – это использование тройного DES(3DES) с двумя ключами (112 битов) или тройного DES с тремя ключами (биты 16) Двукратный DES Трехкратный DES Безопасность DES. Атака грубой силы Слабость ключа совместно с другими рассмотренными недостатками, делает очевидным, что DES может быть взломан с числом испытаний 255. Однако сегодня большинство приложений использует либо 3DES с двумя ключами (размер ключа 2112), либо 3DES с тремя ключами (размер ключа 2168). Эти две многократных версии DES позволяют ему показывать существенную стойкость к атакам грубой силы. Применение DES DES был национальным стандартом США в 1977—1980 гг., но в настоящее время DES используется (с ключом длины 56 бит) только для устаревших систем, чаще всего используют его более криптоустойчивый вид (3DES, 2DES). 3DES является простой эффективной заменой DES, и сейчас он рассмотрен как стандарт. В ближайшее время DES и Triple DES будут заменены алгоритмом AES (Advanced Encryption Standard — Расширенный Стандарт Шифрования). Алгоритм DES широко применяется для защиты финансовой информации: так, модуль THALES (Racal) HSM RG7000 полностью поддерживает операции TripleDES для эмиссии и обработки кредитных карт VISA, EuroPay и проч. Канальные шифраторы THALES (Racal) DataDryptor 2000 используют TripleDES для прозрачного шифрования потоков информации. Также алгогритм DES используется во многих других устройствах и решениях THALES-eSECURITY.