Перестановка с расширением
Задание Используя среду Microsoft Visual Studio 2013, язык C++, разработать программу, осуществляющую шифрование исходного текстового файла по алгоритму шифра Цезаря. Значение ключа k соответствует порядковому номеру студента в списке группы. МОДУЛЬ 2. АНАЛИЗ И СИНТЕЗ СИММЕТРИЧНЫХ КРИПТОСИСТЕМ. Лабораторная работа № 2 «Разработка криптосистемы на основе симметричного алгоритма DES (Data Encryption Standard)»
Цель работы: Ознакомление с базовыми принципами алгоритма DES. Разработка программы, реализующей метод шифрования по алгоритму DES.
Введение
Стандарт шифрования данных DES (Data Encryption Standard), который ANSI называет алгоритмом шифрования данных DEA (Data Encryption Algorithm), а ISO - DEA-1, за 20 лет стал мировым стандартом.
ЗАДАНИЕ Разработать консольную программу, выполняющую шифрование и дешифрование файлов, основываясь на параметрах командной строки. Для выбора варианта задания использовать приведённую ниже таблицу.
Описание DES
DES представляет собой блочный шифр, он шифрует данные 64-битовыми блоками. С одного конца алгоритма вводится 64-битовый блок открытого текста, а с другого конца выходит 64-битовый блок шифротекста. Длина ключа равна 56 битам. (Ключ обычно представляется 64-битовым числом, но каждый восьмой бит используется для проверки чётности и игнорируется. Биты чётности являются наименьшими значащими битами байтов ключа.) Ключ, который может быть любым 56-битовым числом, можно изменить в любой момент времени. Ряд чисел считаются слабыми ключами, но их можно легко избежать. Безопасность полностью определяется ключом.
На простейшем уровне алгоритм не представляет ничего большего, чем комбинация двух основных методов шифрования: смещения и диффузии. Фундаментальным строительным блоком DES является применение к тексту единичной комбинации этих методов (подстановка, а за ней - перестановка), зависящей от ключа. Такой блок называется этапом. DES состоит из 16 этапов, одинаковая комбинация методов применяется к открытому Алгоритм использует только стандартную арифметику 64-битовых чисел и логические операции, поэтому он легко реализовывался в аппаратуре второй половины 70-х. Изобилие повторений в алгоритме делает его идеальным для реализации в специализированной микросхеме. Первоначальные программные реализации были довольно неуклюжи, но сегодняшние программы намного лучше.
Рис.2.1 - DES
2.1 Схема алгоритма DES работает с 64-битовым блоком открытого текста. После первоначальной перестановки блок разбивается на правую и левую половины длиной по 32 бита. Затем выполняется 16 этапов одинаковых действий, называемых функцией f, в которых данные объединяются с ключом. После шестнадцатого этапа правая и левая половины объединяются и алгоритм завершается заключительной перестановкой (обратной по отношению к первоначальной). На каждом этапе биты ключа сдвигаются, и затем из 56 битов ключа выбираются 48 битов. Правая половина данных увеличивается до 48 битов с помощью перестановки с расширением, объединяется посредством XOR с 48 битами смещённого и переставленного ключа, проходит через 8 S-блоков, образуя 32 новых бита, и переставляется снова. Эти четыре операции и выполняются функцией f. Затем результат функции f
Рис.2.2- Один этап DES Если Bi - это результат i-ой итерации, Lt и Ri - левая и правая половины Bt, Ki - 48-битовый ключ для этапа i,a f - это функция, выполняющие все подстановки, перестановки и XOR с ключом, то этап можно представить как: Li = Ri-i Ri = Li_i 2.2 Начальная перестановка
Начальная перестановка выполняется ещё до этапа 1, при этом входной блок переставляется, как показано в 11-й. Эту и все другие таблицы этой главы надо читать слева направо и сверху вниз. Например, начальная перестановка перемещает бит 58 в битовую позицию 1, бит 50 - в битовую позицию 2, бит 42 - в битовую позицию 3, и так далее.
Табл. 2.1 – Начальная перестановка
Начальная перестановка и соответствующая заключительная перестановка не влияют на безопасность DES.(Как можно легко заметить, эта перестановка в первую очередь служит для облегчения побайтной загрузки данных открытого текста и шифротекста в микросхему DES. Не забывайте, что DES появился раньше 16- и 32-битовых микропроцессорных шин.) Так как программная реализация этой многобитовой перестановки нелегка(в отличие от тривиальной аппаратной), во многих программных реализациях DES начальная и заключительные перестановки не используются. Хотя такой новый алгоритм не менее безопасен, чем DES, он не соответствует стандарту DES и, поэтому, не может называться DES.
2.3 Преобразования ключа
Сначала 64-битовый ключ DES уменьшается до 56-битового ключа отбрасыванием каждого восьмого бита, как показано в 10-й. Эти биты используются только для контроля чётности, позволяя проверять правильность ключа. После извлечения 56-битового ключа для каждого из 16 этапов DES генерируется новый 48-битовый подключ. Эти подключи, Ki, определяются следующим образом.
Табл. 2.2 – Перестановка ключа
Во первых, 56-битовый ключ делится на две 28-битовых половинки. Затем, половинки циклически сдвигаются налево на один или два бита в зависимости от этапа. Этот сдвиг показан в 9-й.
Табл. 2.3 – Число битов сдвига ключа в зависимости от этапа
После сдвига выбирается 48 из 56 битов. Так как при этом не только выбирается подмножество битов, но и изменяется их порядок, эта операция называется перестановка со сжатием. Ее результатом является набор из 48 битов. Перестановка со сжатием (также называемая переставленным выбором) определена в 8-й. Например, бит сдвинутого ключа в позиции 33 перемещается в позицию 35 результата, а 18-й бит сдвинутого ключа отбрасывается.
Табл. 2.4 – Перестановка со сжатием
Из-за сдвига для каждого подключа используется отличное подмножество битов ключа. Каждый бит используется приблизительно в 14 из 16 подключений, хотя не все биты используются в точности одинаковое число раз.
Перестановка с расширением Эта операция расширяет правую половину данных, Ri, от 32 до 48 битов. Так как при этом не просто повторяются определённые биты, но и изменяется их порядок, эта операция называется перестановкой с расширением. У неё две задачи: привести размер правой половины в соответствие с ключом для операции XOR и получить более длинный результат, который можно будет сжать в ходе операции подстановки. Однако главный
Перестановка с расширением показана на 9-й. Иногда она называется E-блоком (от expansion). Для каждого 4-битового входного блока первый и четвёртый бит представляют собой два бита выходного блока, а второй и третий биты - один бит выходного блока. В 7-й показано, какие позиции результата соответствуют каким позициям исходных данных. Например, бит входного блока в позиции 3 переместится в позицию 4 выходного блока, а бит входного блока в позиции 21 - в позиции 30 и 32 выходного блока.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2324
Рис. 2.3 - Перестановка с расширением
Хотя выходной блок больше входного, каждый входной блок генерирует уникальный выходной блок.
Табл. 2.5 – Перестановка с расширением
Подстановка с помощью S-блоков
После объединения сжатого блока с расширенным блоком с помощью XOR над 48-битовым результатом выполняется операция подстановки. Подстановки производятся в восьми блоках подстановки,или S-блоках (от substitution). У каждого S-блока 6-битовый вход и 4-битовый выход, всего используется восемь различных S-блоков. (Для восьми S-блоков DES потребуется 256 байтов памяти.) 48 битов делятся на восемь 6-битовых подблока. Каждый отдельный подблок обрабатывается отдельным S-блоком: первый подблок - S-блоком 1, второй - S-блоком 2, и так далее.
Рис.2.4 – Подстановка - S-блоки
Каждый S-блок представляет собой таблицу из 2 строк и 16 столбцов. Каждый элемент в блоке является 4-битовым числом. По 6 входным битам S-блока определяется, под какими номерами столбцов и строк искать выходное значение. Все восемь S-блоки отображены в приложении к методическим рекомендациям к практическим занятиям. Входные биты особым образом определяют элемент S-блока. Рассмотрим 6-битовый вход S-блока: b1, b2, b3, b4,b5 и b6. Биты b1 и b6 объединяются, образуя 2-битовое число от 0 до 3, соответствующее строке таблицы. Например, пусть на вход шестого S-блока (т.е., биты функции XOR с 31 по 36) попадает 110011. Первый и последний бит, объединяясь, образуют 11, что соответствует строке 3 шестого S-блока. Средние 4 бита образ уют 1001, что соответствует столбцу 9 того же S-блока. Элемент S-блока 6, находящийся на пересечении строки 3 и столбца 9, - это 14. (Не забывайте, что строки и столбцы нумеруются с 0, а не с 1.) Вместо 110011 подставляется 1110.
Конечно же, намного легче реализовать S-блоки программно в виде массивов с 64 элементами. Для этого потребуется переупорядочить элементы, что не является трудной задачей. (Изменить индексы, не изменяя порядок элементов, недостаточно. S-блоки спроектированы очень тщательно.) Однако такой способ описания S- Подстановка с помощью S-блоков является ключевым этапом DES. Другие действия алгоритма линейны и легко поддаются анализу. S-блоки нелинейные, и именно они в большей степени, чем все остальное, обеспечивают безопасность DES. В результате этого этапа подстановки получаются восемь 4-битовых блоков, которые вновь объединяются в единый 32-битовый блок. Этот блок поступает на вход следующего этапа - перестановки с помощью P-блоков. Перестановка с помощью P-блоков 32-битовый выход подстановки с помощью S-блоков, перетасовываются в соответствии с P-блоком. Эта перестановка перемещает каждый входной бит в другую позицию, ни один бит не используется дважды, и ни один
Табл. 2.6 – Перестановка с помощью P-блоков
Наконец, результат перестановки с помощью P-блока объединяется посредством XOR с левой половиной Заключительная перестановка Заключительная перестановка является обратной по отношению к начальной перестановки и описана в 4-й. Наконец, результат перестановки с помощью P-блока объединяется посредством XOR с левой половиной Заключительная перестановка Заключительная перестановка является обратной по отношению к начальной перестановки и описана в 4-й.
Табл. 2.7 – Заключительная перестановка
Дешифрирование DES После всех подстановок, перестановок, операций XOR и циклических сдвигов можно подумать, что алгоритм дешифрирования, резко отличаясь от алгоритма шифрования, точно также запутан. Напротив, различные DES позволяет использовать для шифрования или дешифрирования блока одну и ту же функцию. Единственное отличие состоит в том, что ключи должны использоваться в обратном порядке. То есть, если на этапах ЗАДАНИЕ Разработать консольную программу, выполняющую шифрование и дешифрование файлов, основываясь на параметрах командной строки. Для выбора варианта задания использовать приведённую ниже таблицу.
ВАРИАНТЫ
Пояснения: 1. С начальной и конечной перестановками Алгоритм DES может применятся как с этими перестановками так и без, т.к. основная их цель перестановка бит удобным для аппаратной обработки образом. Строго говоря без перестановок это уже не DES, но для лабораторной работы это не важно. 2. С поддержкой работы с файлами произвольного размера Варианты с такой поддержкой должны корректно обрабатывать файлы любого размера. В то время как варианты без неё должны уметь корректно работать только с файлами, размер которых кратен 8 байт. 3. Тип ключа: число или кодовая фраза В случае числового ключа, в командной строке должно задаваться именно число (система счисления роли не играет). Для кодовой фразы перед использованием её в качестве ключа следует применить над ней некоторую функцию, которая преобразует её в 64-битовое число. МОДУЛЬ 2. АНАЛИЗ И СИНТЕЗ СИММЕТРИЧНЫХ КРИПТОСИСТЕМ Лабораторна я работа № 3 «Разработка криптосистемы на основе симметричного алгоритма ГОСТ 28147-89»
Цель работы: Ознакомление с базовыми принципами алгоритма ГОСТа 28147–89. Разработка программы, реализующей метод шифрования по алгоритму ГОСТа 28147–89.
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|