3DES – это шифровальный шифр, созданный на основе оригинального стандарта шифрования данных (DES). Он стал заметным в конце девяностых, но с тех пор потерял самообладание из-за появления более безопасных алгоритмов..
Хотя в [year] году он будет устаревшим, в некоторых ситуациях он все же будет реализован. Поскольку он основан на одном из первых широко опубликованных и изученных алгоритмов, DES, все еще важно узнать, что такое 3DES и как он работает..
Это руководство подробно расскажет вам о каждом шаге процесса DES, а затем расскажет, как DES изменяется в 3DES, чтобы сделать его более безопасным. В нем также затрагиваются различные проблемы безопасности и следует ли использовать алгоритм.
Что такое 3DES?
Хотя он официально известен как алгоритм тройного шифрования данных (3DEA), его чаще всего называют 3DES. Это связано с тем, что алгоритм 3DES трижды использует шифр Data Encryption Standard (DES) для шифрования своих данных..
DES – это алгоритм симметричного ключа, основанный на сети Фейстеля. В качестве шифра с симметричным ключом он использует один и тот же ключ как для процессов шифрования, так и для дешифрования. Сеть Фейстеля делает оба этих процесса практически одинаковыми, в результате чего алгоритм более эффективен для реализации..
DES имеет как 64-битный блок, так и размер ключа, но на практике ключ обеспечивает только 56-битную защиту. 3DES был разработан как более безопасная альтернатива из-за небольшой длины ключа DES. В 3DES алгоритм DES выполняется три раза с тремя ключами, однако он считается безопасным только при использовании трех отдельных ключей..
Использование 3DES
Как только слабые стороны нормального DES стали более очевидными, 3DES был применен в широком спектре приложений. Это была одна из наиболее часто используемых схем шифрования до появления AES.
Некоторые примеры его реализации включали в себя платежные системы Microsoft Office, Firefox и EMV. Многие из этих платформ больше не используют 3DES, потому что есть лучшие альтернативы.
Национальный институт стандартов и технологий (NIST) опубликовал проект предложения, в котором говорится, что все формы 3DES будут объявлены устаревшими до [year] года и будут запрещены с 2024 года. Хотя это всего лишь черновик, это предложение означает конец эры, и уже давно пора перейти к другим, более безопасным алгоритмам..
История шифрования 3DES
Поскольку 3DES является производным от DES, лучше сначала представить более ранний стандарт. В семидесятые годы Национальное бюро стандартов (NBS – с тех пор оно было переименовано в NIST) искало алгоритм, который оно могло бы использовать в качестве стандарта для шифрования конфиденциальной, но не классифицированной правительственной информации..
НБС принял предложения по стандарту, который соответствовал бы его требованиям, но ни один из кандидатов из первоначального раунда не подходил. Он пригласил больше заявок, и на этот раз IBM отправила алгоритм, разработанный его командой. Представление было взято из шифра Люцифера, разработанного Хорстом Фейстелем.
В 1975 году NBS опубликовал алгоритм IBM в качестве предлагаемого стандарта шифрования данных. Публике было предложено прокомментировать дизайн, что вызвало некоторую критику.
Выдающиеся криптографы, такие как Уитфилд Диффи и Мартин Хеллман, разработчики обмена ключами Диффи-Хеллмана, утверждали, что длина ключа была слишком короткой и что S-блоки были изменены по сравнению с их первоначальным дизайном.
В то время многие в криптографическом сообществе считали, что АНБ саботировало проект и ослабило алгоритм, так что это будет единственное агентство, которое может сломать DES.
Когда это было расследовано отборочным комитетом Сената США по разведке, выяснилось, что «АНБ убедило IBM, что уменьшенного размера ключа достаточно; косвенно помогал в разработке структур S-box; и подтвердил, что окончательный алгоритм DES, насколько им известно, свободен от каких-либо статистических или математических недостатков ».
В том же отчете говорилось, что «АНБ никак не влияло на дизайн». Это было подтверждено некоторыми бывшими сотрудниками IBM, которые утверждали, что алгоритм DES был полностью разработан командой IBM..
В собственной рассекреченной документации АНБ утверждается, что агентство «тесно сотрудничало с IBM, чтобы усилить алгоритм против всех, кроме атак методом перебора, и укрепить таблицы замещения…»
Подозрения в подделке АНБ были сняты в девяностых, когда был открыт публичный дифференциальный криптоанализ. Когда злобные S-блоки были протестированы с использованием новой техники, оказалось, что они более устойчивы к атакам, чем если бы они были выбраны случайным образом.
Это указывает на то, что команда IBM уже знала о дифференциальном криптоанализе в семидесятых годах, а Стивен Леви заявил, что АНБ попросило их сохранить эту методику в секрете, чтобы защитить национальную безопасность..
Знаменитый криптограф Брюс Шнайер однажды сказал: «Академическому сообществу потребовалось два десятилетия, чтобы понять, что« настройки »АНБ фактически улучшили безопасность DES».
Несмотря на первоначальные вопросы о безопасности алгоритма и участии АНБ, алгоритм IBM был утвержден в качестве стандарта шифрования данных в 1976 году. Он был опубликован в 1977 году и подтвержден в качестве стандарта в 1983, 1988 и 1993 годах..
Когда линейный криптоанализ был впервые опубликован в 1994 году, он стал поднимать вопросы о безопасности алгоритма. В 1997 году NIST объявил, что ищет алгоритм для замены DES. Потребность в новом алгоритме усилилась по мере дальнейшего развития технологий и усиления потенциальных атак.
Различные попытки взлома показали, что сломать алгоритм было менее сложно, чем предполагалось ранее. В 1998 году на распределенном сайте взломали DES уже 39 дней.
К началу 1999 года Deep Crack фонда Electronic Frontier сократил время до чуть более 22 часов. Это означало конец DES, так как атака такого рода была теперь в пределах досягаемости хорошо обеспеченного противника.
Основная проблема заключалась в небольшом пространстве ключей, и крайне необходим новый алгоритм. Это было проблемой, потому что NIST потребовалось бы еще несколько лет, чтобы установить алгоритм, который стал стандартом замены, Advanced Encryption Standard (AES).
Пока решался вопрос о шифре для AES, 3DES был предложен в качестве временной меры. Он включает в себя запуск алгоритма DES три раза с тремя отдельными ключами. В 1999 году DES был подтвержден, но с 3DES в качестве идеального алгоритма. Обычный DES был разрешен только в устаревших приложениях.
3DES стал широко распространенным алгоритмом шифрования, хотя его интенсивное использование ресурсов и ограничения безопасности привели к его замене на AES в большинстве случаев использования..
Понимание алгоритма DES
Прежде чем мы сможем поговорить о деталях 3DES, важно понять алгоритм DES, из которого он получен. Итак, давайте начнем с самого начала.
Мы используем шифрование, чтобы превратить наши незашифрованные данные в зашифрованный текст, который является информацией, к которой злоумышленники не могут получить доступ (если мы используем соответствующие алгоритмы)..
Алгоритмы шифрования представляют собой по существу сложные математические формулы. Когда дело доходит до шифрования чего-то вроде «Пойдем на пляж», многие люди запутываются. В конце концов, как вы можете применить математику к таким вещам, как буквы и символы?
Кодировка текста
Реальность такова, что компьютеры не имеют дело с буквами и символами. Вместо этого они работают в системе единиц и нулей, известных как двоичные. Каждый 1 или 0 известен как бит, а набор из восьми из них известен как байт.
Вы можете найти его вручную или воспользоваться онлайн-конвертером, чтобы увидеть, что в двоичном коде «Пойдем на пляж» становится:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111 00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 01100101 01100001 01100011 01101000
Блоки
Когда данные зашифрованы, они делятся на отдельные блоки для обработки. DES имеет 64-битный размер блока, что означает, что каждый блок соответствует сочетанию 64 единиц и нулей. Наш первый блок (первые 64 цифры двоичного файла, показанного выше) будет:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Нашим вторым будет:
00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000
И наш последний блок будет:
01100010 01100101 01100001 01100011 01101000
набивка
Возможно, вы заметили, что наш третий блок имеет длину всего 40 бит. Прежде чем он может быть зашифрован, его необходимо построить до размера 64-битного блока. Это сделано с набивка, который включает в себя добавление дополнительной информации в блок, чтобы завершить его. Это может быть сделано с помощью нескольких различных схем, и это также может сделать зашифрованную информацию более трудной для взлома, но мы не будем вдаваться в это в этой статье.
Ключевое расписание DES
Алгоритмы шифрования используют ключи для добавления данных, которые изменят конечный результат процесса. Если DES включает только такие шаги, как перестановка и S-блоки (перестановка поясняется ниже, тогда как S-блоки рассматриваются в подмена раздел), все, что нужно сделать злоумышленнику, это раскрыть детали алгоритма, а затем выполнить каждый из шагов в обратном порядке, чтобы показать исходное сообщение.
Поскольку большинство наших алгоритмов широко известны, это не сильно повысит безопасность. Вместо этого, секретные ключи добавляются для изменения выходных данных способом, который невозможно предсказать, просто зная алгоритм (при условии, что используется достаточно сложный алгоритм).
DES начинается с одного ключа, который используется для создания дополнительных ключей, которые применяются в каждом раунде. Это 64-битный ключ, который имеет тот же размер, что и наши блоки. Допустим, наш ключ:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Теперь этот ключ вводится в двоичном формате, то есть способом выражения данных, когда их обрабатывают компьютеры. Когда люди имеют дело с ключами, они обычно выглядят как смесь символов, что-то вроде этого:
kj329nf982bc9wn1
В DES первый шаг получения наших круглых ключей – переставить ключ (переместить его) в соответствии со следующей таблицей:
В перестановке каждый бит нашего исходного ключа перемещается в новую позицию, как указано в таблице. Поскольку ячейка в верхнем левом углу (С) говорит 57, первым номером нашего переставленного ключа будет номер в 57-й позиции нашего старого блока:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Вторая клетка говорит 49, Это означает, что второй цифрой нашего нового ключа будет номер, который находится на 49-й позиции нашего старого блока:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010
Третья клетка говорит 41, поэтому мы ищем цифру на 41-й позиции:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010
Пока что наш ключ состоит из:110».
Остальная часть ключа расположена таким же образом, согласно значениям таблицы. Мы двигаемся слева направо, и как только мы добираемся до конца ряда, мы прыгаем вниз к следующему, как обычно. однажды таблица C закончено, мы прыгаем на таблица D завершить вторую половину ключа.
Нет простого способа перенести весь наш блок в соответствии с исходной таблицей перестановок. Вы можете сделать все это вручную, или написать скрипт для него (или даже повезет, и найдете его в недрах интернета), но мы собираемся обмануть и сделать это:
1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111
Вы можете быть обеспокоены тем, что мы приводим некоторые цифры в этом руководстве, но реальность такова, что это не имеет значения. Никто больше не шифрует данные вручную, все это делается с помощью программ. Самым важным аспектом этого руководства является то, что вы получите четкое представление о концепциях, с которыми мы имеем дело. Сами цифры просто помогают вам визуализировать происходящее.
Некоторые читатели, возможно, заметили, что таблица (и теперь наш ключ) имеет только 56 бит, а не 64. Это потому, что пропускается каждый восьмой бит. Это артефакт из более ранних дней технологии, когда было важно иметь биты контроля четности, которые проверяли, был ли ключ получен правильно. Эти биты проверки четности означают, что на практике DES имеет защиту только 56-битного ключа.
Таблицы C и D дают нам ключ с двумя 28-битными половинками. Иногда половинки называют C и D, но в этой статье мы будем называть их L и R для левой и правой сторон. Наша левая сторона это:
1100010 1010010 1010101 0101010
Хотя наше право это:
1010000 1111001 0001011 1000111
Следующим шагом является сдвиг ключа на один или два пробела влево, в зависимости от раунда. Точное количество пробелов определяется в соответствии со следующей заранее определенной таблицей:
1 | 1 |
2 | 1 |
3 | 2 |
4 | 2 |
5 | 2 |
6 | 2 |
7 | 2 |
8 | 2 |
9 | 1 |
10 | 2 |
11 | 2 |
12 | 2 |
13 | 2 |
14 | 2 |
15 | 2 |
16 | 1 |
Итак, давайте возьмем нашу левую и правую половинки:
L 1010010 1010010 1010101 0101010
R 1010000 1111001 0001011 1000111
И сдвиньте их обоих на одну позицию влево, так как первый раунд имеет сдвиг 1 согласно таблице (число на левом конце перемещается на правый конец).
Первый раунд подключ:
L 0100101 0100101 0101010 1010101
R 0100001 1110010 0010111 0001111
Во втором раунде стол также говорит 1, так что этот результат снова будет изменен путем перемещения каждой позиции номер один влево.
Второй раунд подраздел:
L 1001010 1001010 1010101 0101010
R 1000011 1100100 0101110 0011110
В третьем раунде числа будут перемещены на два места влево, потому что в таблице теперь написано 2.
Третий тур подключ:
L 0101010 0101010 1010101 0101010
R 0001111 0010001 0111000 1111010
В последующих раундах числа перемещаются влево в соответствии с расстояниями, указанными в таблице, причем каждое смещение применяется к результату предыдущего раунда. В конце концов, это дает нам шестнадцать различных подключей, по одному на каждый раунд процесса DES.
Следующий шаг – другая перестановка согласно таблице PC2, показанной ниже:
К настоящему времени вы должны быть знакомы с перестановками, поэтому мы не будем углубляться в процесс. Если вы хотите увидеть, как это работает более подробно, обратитесь к объяснению в начале этого раздела. Хотя позиции переселения разные, процесс такой же.
Каждый из 16 ключей, полученных в процессе переключения, теперь перетасовывается в соответствии с таблицей, при этом число из 14-й позиции перемещается на первое место, с 17-го на второе, с 11-го на третье и т. Д…
Если вы внимательно посмотрите на таблицу, вы заметите, что есть только 48 бит, а не 56 бит, которые у нас были ранее. Этот процесс известен как перестановка сжатия.
Вы также можете видеть, что верхняя половина таблицы содержит числа от одного до 28, а нижняя половина содержит числа от 29 до 56. Это разделяет левую и правую половинки наших подразделов, и это обозначено ниже большим пространством в середине клавиш.
Опять же, мы собираемся обмануть и составить цифры. Допустим, весь этот процесс дал нам следующие подразделы:
Первый раунд: 010101 010101 101010 110100 101001 100101 101010 101010
Второй раунд: 011010 110101 101110 110010 010100 110010 111101 101101
Раунд третий: 010100 100110 110110 101010 100110 011000 101011 011001
Раунд четвертый: 011001 110101 011001 110101 000011 001011 010101 010101
Раунд пятый: 110101 001101 010101 010101 010011 001011 010111 100101
Раунд шестой: 010111 110101 011001 111001 101001 100101 101010 101010
Раунд седьмой: 110101 111010 101110 101010 100110 010110 111011 001110
Восьмой тур: 011001 110101 010101 001001 010011 001011 010100 101010
Раунд девятый: 111011 011010 011110 100010 100010 010110 110011 110010
Раунд 10: 011010 010101 101110 101001 010010 010110 111000 101010
Раунд 11: 110101 001101 101110 101010 100101 100101 101010 001010
Раунд 12: 101001 100100 101001 101010 100110 011000 101011 011001
Раунд 13: 010010 010010 010101 010101 010110 110001 100101 101010
Раунд 14: 101001 100110 010101 011101 010001 001010 110010 111110
Раунд 15: 011001 011010 011001 110101 001001 011001 100101 101101
Раунд 16: 010010 100110 010101 010101 010001 101000 110010 111010
Этот процесс сдвига приводит к тому, что каждый бит из начального ключа используется примерно в 14 из 16 подразделов, хотя некоторые биты используются немного больше, чем другие.
Начальная перестановка
После того, как данные были разделены на блоки и дополнены, если необходимо, пришло время начать процесс шифрования DES. Мы вернемся к подразделам, которые мы только что создали, на более позднем этапе. Первый шаг известен как начальная перестановка, где данные переставляются в соответствии со следующей таблицей:
Этот начальный процесс перестановки не делает алгоритм более безопасным. Это связано с тем, что он не требует ввода какой-либо клавиши и может быть легко изменен. Алгоритм изначально разрабатывался таким образом, поскольку он облегчал реализацию в определенных контекстах..
Поскольку мы несколько раз рассмотрели перестановки, здесь мы пропустим любое существенное объяснение. Возвращайтесь к Ключевое расписание DES раздел, если вам нужно больше информации о том, как они работают.
Давайте возьмем первый блок из сообщения «Пойдем на пляж», который мы получили в блок раздел под Понимание алгоритма DES:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Так как первая клетка говорит 58, мы бы выбрали номер из 58-й позиции:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Тогда мы бы взяли номер с 50-й позиции:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
И номер с 42-й позиции:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Это дает нам «110” слишком далеко. Мы составим оставшуюся часть номера:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
Когда начальная перестановка завершена, данные переходят к следующему шагу.
Расщепление блоков
Как только данные подверглись своей первоначальной перестановке, они разбиваются на две половины. Мы берем наш блок, который только что прошел первоначальную перестановку:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
И мы разделим его на два блока, левый блок (состоит из первых 32 цифр), известный как L0:
L0 11010111 01001010 10101000 10011101
И правый блок (состоит из вторых 32 цифр), известный как р0:
р0 01001011 10110101 10000111 10101001
Функция F
Теперь, когда блок разделен, пришло время для функции F. В первом раунде он будет применен только к правой половине блока, в то время как левая половина остается в стороне до позднего времени. Правая сторона проходит следующие четыре шага как часть функции F:
- Перестановка расширений (E на диаграмме)
- Смешение клавиш (⊕ на диаграмме)
- Замена (каждый S1, S2 и т. Д. На диаграмме)
- Перестановка (P на диаграмме)
Перестановка расширений
Перестановка расширений выполняет три вещи. Наиболее важным является то, что он позволяет отдельным битам входных данных влиять на вывод двух других битов, вызывая лавинный эффект. Он также делает правую половину 48-битной, так что он имеет тот же размер, что и подраздел для следующего шага. Другой эффект перестановки расширения состоит в том, что она делает вывод длиннее, чем ввод. Это позволяет сжать его в операции замещения.
Биты переставляются в соответствии со следующей таблицей. Некоторые из отдельных битов представлены в таблице дважды, то есть блок расширился с 32 до 48 бит:
Поскольку в первой ячейке написано 32, мы берем наш правый блок и выбираем число из 32-й позиции, как мы делали в других примерах перестановок, перечисленных выше:
р0 01001011 10110101 10000111 10101001
Затем мы берем числа из первой позиции, второй позиции и так далее, вплоть до того момента, пока не доберемся до нижнего правого угла блока. Так как есть 1 в этой ячейке последняя цифра также будет номером, который появляется в первой позиции нашего блока.
Допустим, перестановка расширений дает нам новый 48-битный блок:
101110 100110 100100 000000 001100 001110 101101 011110
Ключ смешивания
Как только блок был расширен до 48 бит, пришло время применить подраздел первого раунда, который мы получили в Расписание ключей DES раздел выше. Блок модифицируется подключом с использованием шифра XOR.
Шифр XOR является дополнительным шифром, который следует простому процессу, особенно по сравнению с другими элементами, которые мы уже обсуждали.
В шифре XOR:
0 + 0 = 0
1 + 0 = 1
1 + 1 = 0
Допустим, вам нужно XOR следующих двух чисел в двоичном виде:
1101
0101
Каждая цифра будет добавлена к той под ней. В соответствии с тремя правилами, показанными выше, это дает результат:
1000
Чтобы завершить этап смешивания ключей, мы берем правую сторону нашего блока, который мы только что расширили до 48 бит, и первый раунд ключа. Затем мы выполняем добавление XOR:
Блок: 101110 100110 100100 000000 001100 001110 101101 011110
Раунд один ключ: 010101 010101 101010 110100 101001 100101 101010 101010
XOR результат: 111011 110011 001110 110100 100101 101011 000111 110100
Результат операции XOR затем передается следующему раунду.
подмена
Замена добавляет путаницу к данным. Обычно это делается с помощью таблиц поиска, которые также называются блоками замены или S-блоками. DES использует восемь отдельных таблиц или S-блоков, разные для каждых 6 бит данных. В следующей таблице показаны восемь S-блоков DES:
Восемь отдельных S-блоков используются для преобразования каждого 6-битного входа в 4-битный выход. Первым шагом в этом процессе является получение цифр в начале и конце 6-битного сегмента, а затем преобразование этого двоичного значения в десятичное.
Давайте возьмем данные, которые мы только что закончили XORing на предыдущем шаге:
111011 110011 001110 110100 100101 101011 000111 110100
Мы рассмотрим первый 6-битный сегмент, чтобы показать вам, как работает процесс замены:
111011
Поскольку первое и последнее число оба 1, это дает нам значение 11. Затем мы конвертируем 11 от двоичного до десятичного, что дает нам 3. Это просто эквивалентные значения, написанные по-разному. Думайте об этом как о преобразовании компьютерного языка в человеческий язык. Вы можете проверить конверсию для себя с онлайн-калькулятором, если хотите.
Затем мы берем четыре средние цифры первого 6-битного сегмента:
111011
И преобразовать их из двоичного в десятичное. 1101 переводит на номер 13.
Теперь мы берем эти два числа и ищем их в S1 стол:
Наш первый номер, 3, говорит нам смотреть в третьем ряду, а наш второй номер, 13 говорит нам, чтобы посмотреть в 13-й колонке. Значение в третьей строке 13-го столбца 0.
Теперь, когда мы посмотрели наш номер в таблице, мы конвертируем его обратно в четырехзначный двоичный код. Ноль обычно записывается как 0 в двоичном, но 0000 то же самое, и это формат, который наиболее подходит для наших целей.
Следуя этому процессу, S-box преобразует наш первый 6-битный раздел данных (111011) в другое 4-битное значение (0000). Это кажется запутанным, но этот метод помогает еще больше затенить связь между зашифрованным текстом и открытым текстом, с которым он связан.
Следующий 6-битный раздел данных затем проходит тот же процесс, но вместо этого он использует блок S2, показанный выше. В третьем разделе используется таблица S3 и т. Д. До тех пор, пока последний раздел не будет заменен таблицей S8..
Опять же, мы собираемся обмануть остальные ценности. Давайте скажем, что блоки замены дают нам результат:
0000 1010 1100 1001 0100 1001 0111 0001
Как только каждый раздел данных прошел через S-блок, он переходит к следующему шагу.
перестановка
Последним этапом функции F является еще одна перестановка с использованием следующей таблицы:
К настоящему времени у вас должно быть приличное понимание того, как перестановки перемещают цифры из старого блока в другую позицию в новом блоке, поэтому мы не будем вдаваться в подробности.
Допустим, эта перестановка принимает наш предыдущий результат:
0000 1010 1100 1001 0100 1001 0111 0001
И дает нам вывод:
0101 0110 1001 0101 0010 0100 0101 0010
Теперь, когда перестановка завершена, мы закончили с четырьмя шагами функции F в этом раунде. В математической записи это значение известно как F (R0, К1). Это означает, что результатом является функция (е) начальной правой части блока (R0) и подключа первого раунда (К1).
XOR с левым блоком
Помните, как мы разделили блок пополам как раз перед тем, как начали выполнять шаги функции F? Мы отложили левую сторону блока (L0), в то время как правая сторона прошла через каждый из этих процессов. Что ж, теперь пришло время L0 вернуться в действие.
Мы берем правильную сторону, которую мы только что обработали F (R0, К1) и добавить его к старой левой стороне (L0) используя шифр XOR. Это дает нам р1, Результат нашего первого тура:
F (R0, К1): 0101 0110 1001 0101 0010 0100 0101 0010
L0: 1101 0111 0100 1010 1010 1000 1001 1101
Результат XOR (R1): 1000 0001 1101 1111 1000 1100 1100 1111
Обратитесь к Ключ смешивания раздел выше, если вам нужно напоминание о том, как работает шифр XOR.
Еще 15 раундов …
Если вы зашли так далеко, то DES, вероятно, кажется трудным процессом. Но это даже не близко к завершению. Данные идут через четыре шага функции F, затем XOR, еще 15 раз, всего 16 раундов..
Во втором раунде мы берем оригинальную, нетронутую версию правой стороны блока (R0) и делаем ее новой левой стороной (L1). Тем временем мы берем результат нашего первого раунда и отправляем его через функцию F. Все происходит так же, как и в прошлый раз, однако на этот раз вместо этого используется подключ для второго раунда. Допустим, этот процесс дает нам результат:
F (R1, К2): 1011 0111 1000 1011 1001 1101 1001 1110
Затем мы XOR результат с L1, который на самом деле R0 (мы получили это в Расщепление блоков раздел). Это дает нам результат второго раунда, R2:
F (R1, К2): 1011 0111 1000 1011 1001 1101 1001 1110
L1: 0100 1011 1011 0101 1000 0111 1010 1001
р2: 1111 1100 0011 1110 0001 1010 0011 0111
Этот шаг может показаться немного запутанным, но по схеме Фейстеля старая правая сторона становится новой левой, а результат операции становится новой правой стороной.
Следующая диаграмма дает вам визуальное представление о том, что происходит. IP представляет начальную перестановку, F является заменой для всей функции F, ⊕ символизирует функцию XOR, а стрелки указывают на каждую сторону блока, перемещающуюся между левым и правым:
Точная формула для каждого шага:
LN знак равно рн-1
рN знак равно Lн-1 + е(рн-1,КN)
Где:
L = левая половина блока (начиная с L0, когда блок был первоначально разделен)
R = правая половина блока (начиная с R0, когда блок был первоначально разделен)
n = округленное число (начиная с 0, когда блок был первоначально разделен)
f = функция F
Kn = Ключ для раунда n
Согласно формуле и диаграмме, в третьем раунде R1 становится новой левой половиной (L2), а R2 обрабатывается через F-функцию. Допустим, это дает нам результат:
F (R2, К3) 1001 0111 0000 1011 1101 0111 1011 1011
Затем мы вычисляем результат нашего третьего раунда (R3), используя шифр XOR, как и прежде:
F (R2, К3): 1011 0111 1000 1011 1001 1101 1001 1110
L2: 0100 1011 1011 0101 1000 0111 1010 1001
р3: 1111 1100 0011 1110 0001 1010 0011 0111
Тот же процесс продолжается до пятнадцатого раунда, при этом блоки переключаются, и в каждом раунде используется следующий подключ. В 16-м и последнем туре блоки не переключаются. Вместо этого они объединяются в 64-битный блок. Воздержание от замены блоков на этом последнем этапе позволяет использовать алгоритм как для шифрования, так и для дешифрования..
Допустим, что последний раунд дает нам результат:
1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101
Конечная перестановка
Эта перестановка является обратной к начальной перестановке, и, опять же, она не добавляет никакого дополнительного значения безопасности. Это переставляет данные в соответствии со следующей таблицей:
Эта таблица перестановок работает так же, как и предыдущие. Поскольку это последний этап процесса шифрования, результатом будет зашифрованный текст для первого блока «Пошли на пляж”. Допустим, зашифрованный блок:
0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101
Теперь, если бы вы хотели настоящий зашифрованный текст для «Давайте пойдем на пляж», вы могли бы просто пропустить весь процесс обучения и перейти прямо к онлайн-инструменту шифрования DES. Если мы введем наше предложение рядом с ключом (скажем, kj329nf982bc9wn1), инструмент выдаст нам зашифрованный текст:
U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA
Если вы хотите, вы можете затем преобразовать ключ и зашифрованный текст в двоичный файл, а затем сравнить, как зашифрованный текст первого блока совпадает со всем процессом, который был изложен.
Дешифрование DES
В DES процесс расшифровки невероятно прост. Алгоритм Фейстеля позволяет легко перевернуть его. Процесс выполняется почти точно так же, чтобы расшифровать информацию. Разница лишь в том, что подключи применяются в обратном порядке. Это эффективная настройка, поскольку она означает, что одно и то же программное и аппаратное обеспечение может использоваться как в процессах шифрования, так и в дешифровании..
Для расшифровки данных сначала выполняется первоначальная перестановка, затем блок разделяется, а правая половина проходит через F-функцию. Разница в том, что в первом раунде расшифровки применяется 16-й подраздел. Все остальное идет как обычно. Как только функция F завершена, она XORed с левой стороны блока.
Блоки переключаются, и результат проходит тот же процесс для второго раунда, за исключением того, что применяется 15-й подраздел. Этот процесс продолжается до 16-го раунда, когда используется 1-й подраздел.
Как и в процессе шифрования, блоки не меняются местами на последнем этапе, а затем данные подвергаются окончательной перестановке. Это завершает процесс дешифрования, в результате чего исходный текст сообщения.
3DES
По мере того, как недостатки безопасности DES становились все более очевидными, 3DES был предложен как способ увеличения размера ключа без необходимости создания совершенно нового алгоритма. Вместо использования одного ключа, как в DES, 3DES запускает алгоритм DES три раза с тремя 56-битными ключами:
- Ключ один используется для шифровать открытый текст.
- Ключ два используется для расшифровывать текст, который был зашифрован одним ключом.
- Ключ три используется для шифровать текст, который был расшифрован ключом три.
На каждом этапе выполняется полный процесс DES, как описано выше.
Теперь вы можете задаться вопросом: «Как применение расшифровки на втором этапе может повысить безопасность?»
Ответ в том, что он использует отдельный ключ. Если первый ключ также использовался для расшифровки данных на втором шаге, тогда данные вернулись бы туда, где и начались..
Однако, поскольку он использует другой ключ, процесс дешифрования фактически не служит для дешифрования данных. Это может показаться извращенным с точки зрения логики, но расшифровка с помощью отдельного ключа служит только для того, чтобы еще больше перемешать данные.
Как только второй ключ «расшифровал» данные, третий ключ применяется для его повторного шифрования. Результатом является зашифрованный текст 3DES.
3DES структурирован таким образом, потому что он позволяет реализациям быть совместимыми с одним ключом DES, двумя ключами DES и тремя ключами DES (они рассматриваются в следующем разделе). Это не будет работать, если шифрование было использовано во всех трех шагах.
Опции 3DES
Технически, 3DES может быть реализован с тремя различными ключевыми конфигурациями. Несмотря на это, второй и третий вариант небезопасны и никогда не должны быть реализованы.
- Ключ вариант 1 – Эта опция использует три независимых ключа и является наиболее безопасной.
- Второй вариант – В этой конфигурации первый и третий ключи одинаковы.
- Ключевой вариант три – Для этого используются три одинаковых ключа. Когда используются идентичные ключи, процесс дешифрования на втором этапе отменяет первое шифрование, оставляя только окончательное шифрование для изменения данных. Это делает результат такой же как обычный DES.
Процесс 3DES: первый вариант ключа
Давайте будем честными, весь процесс 3DES может заставить вашу голову кружиться, особенно если вы новичок в криптографии. Чтобы помочь ему, вот краткое описание всей схемы шифрования алгоритма 3DES:
Открытый текст входит в алгоритм 3DES и является первым зашифрован ключом один в следующих шагах:
-
-
Расписание ключей – 16 подразделов являются производными от одного ключа
-
Начальная перестановка
-
Блок разбит на левую и правую половинки
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для тура
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
-
Сделайте старую правую сторону новой левой стороной, а результат – новой правой стороной
Повторите вышеуказанные шаги 14 раз
-
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для 16-го тура
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
-
Объедините левую и правую стороны блока вместе
-
-
-
-
Конечная перестановка
-
Возьмите текст, который был зашифрован с ключом один, а затем отправьте его через Процесс «расшифровки» с ключ два:
-
-
Расписание ключей – 16 подразделов получены из двух ключей
-
Начальная перестановка
-
Блок разбит на левую и правую половинки
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для раунда (начиная с 16-го подключа для расшифровки)
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
-
Сделайте старую правую сторону новой левой стороной, а результат – новой правой стороной
Повторите вышеуказанные шаги 14 раз
-
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для первого раунда
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
- Объедините левую и правую стороны блока вместе
-
- Конечная перестановка
-
Возьмите данные, которые были «расшифрованы» ключом два, затем отправьте их через анпроцесс шифрования с ключ три:
-
-
График ключей – 16 подразделов получены из ключа 3
-
Начальная перестановка
-
Блок разбит на левую и правую половинки
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для тура
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
-
Сделайте старую правую сторону новой левой стороной, а результат – новой правой стороной
Повторите вышеуказанные шаги 14 раз
-
-
-
-
-
Правая половина отправляется через функцию F
-
Перестановка расширений
-
XOR с подключом для 16-го тура
-
подмена
-
перестановка
-
-
XOR результат функции F с левой стороны
-
Объедините левую и правую стороны блока вместе
-
-
-
-
Конечная перестановка
-
Результатом является зашифрованный текст 3DES.
Безопасность 3DES
Безопасность 3DES зависит от того, какая опция ключа используется. Первый вариант ключей включает три разных 56-битных ключа, что дает ему общую длину ключа 168 бит. Эффективная длина значительно сокращается за счет атак типа «посередине», которые снижают его реальную безопасность до 112 бит.
Атаки «встречайся посередине» полезны против схем шифрования, которые повторяют один и тот же алгоритм несколько раз. Метод сохраняет непосредственные значения от каждой стадии шифрования, а затем использует эту информацию, чтобы радикально улучшить время, необходимое для перебора алгоритма..
Варианты два и три имеют значительно меньшие ключи и уязвимы как для атак с использованием открытого текста, так и с использованием выбранного открытого текста, а также других.
Атаки с использованием открытого текста возможны, когда злоумышленник имеет доступ как к открытому, так и к зашифрованному тексту сообщения. Если алгоритм подвержен этим атакам, злоумышленник может использовать эту информацию для определения ключа, который позволяет им взломать все другие данные, которые были зашифрованы тем же ключом..
Атака с использованием выбранного открытого текста аналогична, но включает в себя то, что злоумышленник открывает ключ, сравнивая шифротексты с произвольными открытыми текстами..
Из-за этих уязвимостей и общего небольшого размера ключей варианты ключей 2 и 3 небезопасны и не должны быть реализованы.
3DES безопасно?
Поскольку 3DES устареет в ближайшие несколько лет, лучше всего использовать другие алгоритмы. Хотя первый вариант ключа все еще считается безопасным для многих приложений, у него не так много веских причин, по которым его следует использовать вместо альтернативы, такой как AES..
Хотя 3DES занимает важное место в криптографии как продолжение DES, годы ее славы прошли, и пришло время двигаться дальше. Если вы хотите обеспечить безопасность своих систем в будущем, вам следует использовать более современный алгоритм вместо этого.
Связанный: Общие типы шифрования объяснены
План X по DoD под лицензией СС0
итали, что DES был уязвим к атакам перебора ключа, но он все еще использовался во многих приложениях, включая банковские транзакции и государственные коммуникации. В 1997 году была опубликована статья, в которой было показано, что DES может быть взломан за несколько дней на обычном персональном компьютере. Это привело к созданию 3DES, который использовал три ключа DES для увеличения безопасности. Сегодня 3DES все еще используется в некоторых приложениях, но он будет устаревшим в ближайшем будущем. Важно понимать, как работает 3DES и какие есть альтернативы для обеспечения безопасности данных.
итали, что DES был уязвим к атакам перебора ключа, но он все еще использовался во многих приложениях, включая банковские транзакции и государственные коммуникации. В 1997 году была опубликована статья, в которой было показано, что DES может быть взломан за несколько дней на обычном персональном компьютере. Это привело к созданию 3DES, который использовал три ключа DES для увеличения безопасности. Сегодня 3DES все еще используется в некоторых приложениях, но он будет устаревшим в ближайшем будущем. Важно понимать, как работает 3DES и какие есть альтернативы для обеспечения безопасности данных.
итали, что DES был уязвим к атакам перебора ключа, но он все еще использовался во многих приложениях, включая банковские транзакции и государственные коммуникации. В 1997 году была опубликована статья, в которой было показано, что DES может быть взломан за несколько дней на обычном персональном компьютере. Это привело к созданию 3DES, который использовал три ключа DES для увеличения безопасности. Сегодня 3DES все еще используется в некоторых приложениях, но он устарел и должен быть заменен более современными алгоритмами, такими как AES.