Опубликован: 19.09.2011 | Уровень: специалист | Доступ: платный | ВУЗ: Тульский государственный университет
Лекция 5:

Алгоритмы шифрования DES и AES

< Лекция 4 || Лекция 5: 123 || Лекция 6 >

Режимы работы блочных алгоритмов

Блочные шифры могут использоваться для выполнения различных задач. Поэтому для любого симметричного блочного алгоритма шифрования определено несколько режимов его применения. Каждый из режимов имеет свои особенности и сферы применения.

Пусть имеется некоторый блочный шифр, который выполняет преобразование f исходного блока данных Х с помощью ключа К в зашифрованный блок Y:

Y=f(X,K)

Рассмотрим некоторые возможные режимы выполнения преобразования f.

Простейшим режимом является режим простой поблочной замены. Специалистами этот режим называется ECB - Electronic CodeВook, что переводится как "электронная кодовая книга". В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки Х1, Х2,..., Xn соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. Каждый блок шифруется блочным шифром:

Y=f(Xi,K) для всех i от 1 до n

В результате шифрования всех блоков исходных данных Xi получается зашифрованное сообщение Y=Y1, Y2,..., Yn. Расшифрование выполняется по правилу

X=f-1(Yi,K) для всех i от 1 до n

Из определения режима ECB следует, что расшифрование сообщения можно производить, выбирая блоки шифротекста в произвольном порядке. Такой режим удобен во многих реальных ситуациях, в частности для обработки файлов с произвольным доступом. Например, в режиме ECB можно работать с зашифрованной базой данных при условии, что каждая запись представляет собой отдельный блок данных и зашифрована отдельно от остальных.

Недостатком данного режима является то, что одинаковые блоки исходного текста преобразуются в одинаковый шифротекст. В большинстве реальных шифруемых наборах данных есть повторяющиеся элементы. Сообщения могут иметь высокую избыточность, повторяющиеся заголовки и окончания или содержать длинные серии нулей или пробелов. Таким образом, противник может получить в свое распоряжение данные для частотного криптоанализа. Более серьезной проблемой рассматриваемого режима является то, что противник может изменить или подменить шифрованные сообщения с целью обмана получателя.

В целом, режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа).

Для устранения недостатков ECB при передаче нескольких блоков данных может использоваться режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра.

Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Математически операция шифрования в режиме CBC описывается следующей формулой:

Y=f((X_i \oplus Y_{i-1}),K)    для\ всех\ i\ от\ 1\ до\ n

То есть перед шифрованием очередного блока над открытым текстом и результатом шифрования предыдущего блока выполняется операция "сумма по модулю 2". Когда блок открытого текста зашифрован, он сохраняется в памяти шифрующего устройства, например, в регистре обратной связи. Перед шифрованием следующего блока данных, он подвергается операции "сумма по модулю 2" вместе с регистром обратной связи и только после этого шифруется. Полученный зашифрованный блок снова сохраняется в регистре обратной связи и используется при шифровании следующего блока входных данных и так далее до конца сообщения. Блок Y0 должен быть сформирован перед шифрованием первого блока исходных данных. Он называется вектором инициализации и используется для сложения по модулю 2 с первым блоком входных данных.

В результате использования обратной связи шифрование каждого блока зависит от всех предыдущих блоков.

Зашифрованное сообщение можно расшифровать следующим образом:

X_i=Y_{i-1} \oplus f^{-1} (Y_i,K)    для\ всех\ i\ от\ 1\ до\ n

Блок шифротекста сначала сохраняется в регистре обратной связи, а затем расшифровывается как обычно. Далее расшифровывается следующий блок и подвергается операции "сумма по модулю 2" с регистром обратной связи. И так выполняется до конца сообщения.

Даже если все блоки исходных данных Xi идентичны, шифротекст будет состоять из различных блоков Y. Этот режим предпочтителен при шифровании сообщений, размер которых превышает размер блока. Однако два одинаковых сообщения будут шифроваться одинаково. Для того чтобы этого избежать, необходимо использовать разные векторы инициализации при каждом шифровании. Векторы инициализации необходимы также для расшифрования данных, поэтому их нужно или пересылать адресату вместе с зашифрованным сообщением, или договориться о каком-либо совместном формировании псевдослучайных векторов инициализации.

Расшифровать сообщение, зашифрованное в режиме CBC, можно только последовательно, начиная с первого блока.

Ключевые термины

AES ( Advanced Encryption Standard ) – Алгоритм шифрования, действующий в качестве государственного стандарта в области шифрования данных в США с 2001 года. В основу стандарта положен шифр Rijndael. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. Основу Rijndael составляют так называемые линейно-подстановочные преобразования. В алгоритме широко используются табличные вычисления, причем все необходимые таблицы задаются константно, т.е. не зависят ни от ключа, ни от данных.

DES ( Data Encryption Standard ) – Алгоритм шифрования, действовавший в качестве государственного стандарта в области шифрования данных в США с 1977 по 2001 годы. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования.

Комбинированный (композиционный) шифр – криптографические преобразование данных, получаемое в результате комбинации нескольких подряд примененных простых шифров.

Режим ECB (Electronic CodeВook) – Один из режимов использования блочного алгоритма шифрования. Режим ECB (переводится как "электронная кодовая книга") – это режим простой поблочной замены. В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. Режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа).

Режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Один из режимов использования блочного алгоритма шифрования. Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков.

Краткие итоги

Алгоритм DES (Data Encryption Standard) вступил в действие в США в 1977 году. DES является блочным алгоритмом симметричного шифрования. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. Шифруемые данные должны быть представлены в двоичном виде.

Одним из вариантов использования алгоритма DES является так называемый тройной DES: отправитель сначала шифрует сообщение первым ключом, затем расшифрует вторым и, наконец, окончательно шифрует первым. Получатель сначала расшифровывает первым ключом, затем шифрует вторым и снова расшифровывает первым. При этом длина ключа увеличивается вдвое и составляет 112 бит. В качестве альтернативы предлагается метод трехкратного шифрования, использующий три разных ключа – на каждом из этапов свой. Общая длина ключа в таком методе возрастает до 56x3=168 бит.

С 2001 года в США действует новый стандарт на блочный шифр ( AES ). В основу стандарта положен шифр Rijndael. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа.

Блочные шифры могут работать в различных режимах. Каждый из режимов имеет свои особенности и сферы применения.

Режим ECB (Electronic CodeВook) – Один из режимов использования блочного алгоритма шифрования. Режим ECB (переводится как "электронная кодовая книга") – это режим простой поблочной замены. В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Недостатком данного режима является то, что одинаковые блоки исходного текста преобразуются в одинаковый шифротекст. Режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа).

Режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Один из режимов использования блочного алгоритма шифрования. Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Даже если все блоки исходных данных идентичны, шифротекст будет состоять из различных блоков. Этот режим предпочтителен при шифровании сообщений, размер которых превышает размер блока. Расшифровать сообщение, зашифрованное в режиме CBC, можно только последовательно, начиная с первого блока.

Набор для практики

Вопросы для самопроверки

  1. Какой шифр называют комбинированным или композиционным шифром?
  2. Какие факторы влияют на стойкость блочного алгоритма шифрования?
  3. Что представляет собой сеть Фейштеля?
  4. Перечислите основные параметры алгоритмов симметричного шифрования DES, AES.
  5. Какие операции используются в блочных алгоритмах шифрования DES, AES?
  6. В чем заключается атака "встреча посередине"?
  7. Каков принцип использования тройного DES?
  8. Каким образом используется блочный алгоритм шифрования в режиме простой замены ( ECB )?
  9. Каковы недостатки режима ECB?
  10. Каковы особенности использования алгоритма шифрования в режиме сцепления блоков шифра ( CBC )?
  11. Каковы недостатки режима CBС?

Упражнения для самопроверки

  1. Сложите по модулю 2:
    • двоичные числа 10101100 и 11001010 ;
    • десятичные числа 15 и 10 ;
    • шестнадцатеричные числа 0В5 и 37.
    Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид.
  2. Сложите по модулю 28:
    • двоичные числа 10101100 и 11001010 ;
    • десятичные числа 155 и 100 ;
    • шестнадцатеричные числа 0В5 и 37.
    Примечание: десятичные числа необходимо сначала перевести в двоичный вид.
  3. Выполните операцию циклического сдвига:
    • влево на 5 разрядов для двоичного числа 10101100 ;
    • вправо на 4 разряда для шестнадцатеричного числа 9E ;
    • вправо на 2 разряда для шестнадцатеричного числа 55.
    Примечание: шестнадцатеричные числа необходимо сначала перевести в двоичный вид.
< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Антон Свистельников
Антон Свистельников

С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 30х +12y = НОД(30,12).

х=1, у=-2, НОД = 6. Где ошибка?

Шамиль Байрамов
Шамиль Байрамов

z = x + k (mod N)