как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Современные симметричные алгоритмы шифрования
7.1 Алгоритм DES
Мы здесь приведем краткое описание алгоритма DES, подробное изложение можно найти в [1], [2], [3], [4].
DES представляет собой блочный шифр, он шифрует данные 64-битовыми блоками. На вход алгоритма подается 64-битовый блок открытого текста, а выходит 64-битовый блок шифртекста. DES является симметричным алгоритмом: для шифрования и расшифрования используются одинаковые алгоритм и ключ (за исключением небольших различий в использовании ключа).
Длина ключа равна 56 битам. (Ключ обычно представляется 64-битовым числом, но каждый восьмой бит используется для проверки четности и игнорируется. Биты четности являются наименьшими значащими битами байтов ключа.) Ключ, который может быть любым 56-битовым числом, можно изменить в любой момент времени. Ряд чисел считаются слабыми ключами, но их можно легко избежать. Безопасность полностью определяется ключом.
Алгоритм является комбинацией двух основных методов шифрования: смещения и диффузии. DES состоит из 16 этапов, одинаковая комбинация методов применяется к открытому тексту 16 раз.
Алгоритм использует только стандартную арифметику 64-битовых чисел и логические операции, поэтому он легко реализовывался в аппаратуре второй половины 70-x.
Схема алгоритма представлена на рисунке 7.1.
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 59 | 51 | 43 | 35 | 27 | 19 | 14 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
Биты входных данных нумеруются по порядку, начиная с 1, и переставляются подстановкой согласно таблице 7.1. Таблица трактуется следующим образом: значение 58 бита входной последовательности перемещается в битовую позицию 1, бит 50 -- в битовую позицию 2, бит 42 -- в битовую позицию 3, и так далее.
После первоначальной перестановки блок разбивается на правую и левую половины длиной по 32 бита. Затем выполняется 16 этапов одинаковых действий, называемых функцией , в которых данные объединяются с ключом. После шестнадцатого этапа правая и левая половины объединяются и алгоритм завершается заключительной перестановкой (обратной по отношению к первоначальной).
На каждом этапе (см. рис. 7.2) биты ключа сдвигаются, и затем из 56 битов ключа выбираются 48 битов. Правая половина данных увеличивается до 48 битов с помощью перестановки с расширением, объединяется посредством XOR с 48 битами смещенного и переставленного ключа, проходит через 8 S-блоков, образуя 32 новых бита, и переставляется снова. Эти четыре операции и выполняются функцией . Затем результат функции объединяется с левой половиной с помощью другого XOR. В итоге этих действий появляется новая правая половина, а старая правая половина становится новой левой. Эти действия повторяются 16 раз, образуя 16 этапов DES.
Если --- результат -ой итерации, и --- левая и правая половины , --- 48-битовый ключ для этапа , a - это функция, выполняющие все подстановки, перестановки и XOR с ключом, то этап можно представить как:
7.2 Алгоритм ГОСТ 28147-89
В алгоритме ГОСТ ключевая информация состоит из двух структур данных. Помимо собственно ключа, необходимого для всех шифров, она содержит еще и таблицу замен. Ниже приведены основные характеристики ключевых структур ГОСТа.
Ключ является массивом из восьми 32-битовых элементов кода, далее в настоящей работе он обозначается .
В ГОСТе элементы ключа используются как 32-разрядные целые числа без знака: . Таким образом, размер ключа составляет бит, или 32 байта.
Таблица замен может быть представлена в виде -матрицы, содержащей 4-битовые элементы, которые можно представить в виде целых чисел от 0 до 15. Строки таблицы замен называются узлами замен, они должны содержать различные значения, то есть каждый узел замен должен содержать 16 различных чисел от 0 до 15 в произвольном порядке.