Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Алгоритмы симметричного шифрования. Часть 2
Алгоритм IDEA
IDEA (International Data Encryption Algorithm) является блочным симметричным алгоритмом шифрования, разработанным Сюдзя Лай (Xuejia Lai) и Джеймсом Массей (James Massey) из швейцарского федерального института технологий. Первоначальная версия была опубликована в 1990 году. Пересмотренная версия алгоритма, усиленная средствами защиты от дифференциальных криптографических атак, была представлена в 1991 году и подробно описана в 1992 году.
IDEA является одним из нескольких симметричных криптографических алгоритмов, которыми первоначально предполагалось заменить DES.
Принципы разработки
IDEA является блочным алгоритмом, который использует 128-битовый ключ для шифрования данных блоками по 64 бита.
Целью разработки IDEA было создание относительно стойкого криптографического алгоритма с достаточно простой реализацией.
Криптографическая стойкость
Следующие характеристики IDEA характеризуют его криптографическую стойкость:
- Длина блока: длина блока должна быть достаточной, чтобы скрыть все статистические характеристики исходного сообщения. С другой стороны, сложность реализации криптографической функции возрастает экспоненциально в соответствии с размером блока. Использование блока размером в 64 бита в 90-е годы означало достаточную силу. Более того, использование режима шифрования СВС говорит о дальнейшем усилении этого аспекта алгоритма.
- Длина ключа: длина ключа должна быть достаточно большой для того, чтобы предотвратить возможность простого перебора ключа. При длине ключа 128 бит IDEA считается достаточно безопасным.
- Конфузия: зашифрованный текст должен зависеть от ключа сложным и запутанным способом.
- Диффузия: каждый бит незашифрованного текста должен влиять на каждый бит зашифрованного текста. Распространение одного незашифрованного бита на большое количество зашифрованных бит скрывает статистическую структуру незашифрованного текста. Определить, как статистические характеристики зашифрованного текста зависят от статистических характеристик незашифрованного текста, должно быть непросто. IDEA с этой точки зрения является очень эффективным алгоритмом.
В IDEA два последних пункта выполняются с помощью трех операций. Это отличает его от DES, где все построено на использовании операции XOR и маленьких нелинейных S-boxes.
Каждая операция выполняется над двумя 16-битными входами и создает один 16-битный выход. Этими операциями являются:
- Побитовое исключающее XOR, обозначаемое как
- Сумма целых по модулю 216 (по модулю 65536 ), при этом входы и выходы трактуются как беззнаковые 16-битные целые. Эту операцию обозначим как +.
- Умножение целых по модулю 216 + 1 (по модулю 65537 ), при этом входы и выходы трактуются как беззнаковые 16-битные целые, за исключением того, что блок из одних нулей трактуется как 216. Эту операцию обозначим как
Эти три операции являются несовместимыми в том смысле, что:
- Не существует пары из трех операций, удовлетворяющих дистрибутивному закону. Например
- Не существует пары из трех операций, удовлетворяющих ассоциативному закону. Например
Использование комбинации из этих трех операций обеспечивает комплексную трансформацию входа, делая криптоанализ более трудным, чем в таком алгоритме как DES, основанном исключительно на функции XOR.
Шифрование
Рассмотрим общую схему шифрования IDEA. Как и в любом алгоритме шифрования, здесь существует два входа: незашифрованный блок и ключ. В данном случае незашифрованный блок имеет длину 64 бита, ключ имеет длину 128 бит.
Алгоритм IDEA состоит из восьми раундов, за которыми следует заключительное преобразование. Алгоритм разделяет блок на четыре 16-битных подблока. Каждый раунд получает на входе четыре 16-битных подблока и создает четыре 16-битных выходных подблока. Заключительное преобразование также получает на входе четыре 16-битных подблока и создает четыре 16-битных подблока. Каждый раунд использует шесть 16-битных ключей, заключительное преобразование использует четыре подключа, т.е. всего в алгоритме используется 52 подключа.
Последовательность преобразований отдельного раунда
Рассмотрим последовательность преобразований отдельного раунда.
Одним из основных элементов алгоритма, обеспечивающих диффузию, является структура, называемая МА (умножение/сложение):
На вход этой структуре подаются два 16-битных значения и два 16-битных подключа, на выходе создаются два 16-битных значения. Исчерпывающая компьютерная проверка показывает, что каждый бит выхода этой структуры зависит от каждого бита входов незашифрованного блока и от каждого бита подключей. Данная структура повторяется в алгоритме восемь раз, обеспечивая высокоэффективную диффузию.
Раунд начинается с преобразования, которое комбинирует четыре входных подблока с четырьмя подключами, используя операции сложения и умножения. Четыре выходных блока этого преобразования комбинируются, используя операцию XOR для формирования двух 16-битных блоков, которые являются входами МА структуры. Кроме того, МА структура имеет на входе еще два подключа и создает два 16-битных выхода.
В заключении четыре выходных подблока первого преобразования комбинируются с двумя выходными подблоками МА структуры, используя XOR для создания четырех выходных подблоков данной итерации. Заметим, что два выхода, которые частично создаются вторым и третьим входами ( Х2 и Х3 ), меняются местами для создания второго и третьего выходов ( W12 и W13 ). Это увеличивает перемешивание бит и делает алгоритм более стойким для дифференциального криптоанализа.
Рассмотрим девятый раунд алгоритма, обозначенный как заключительное преобразование. Это та же структура, что была описана выше. Единственная разница состоит в том, что второй и третий входы меняются местами. Это сделано для того, чтобы дешифрование имело ту же структуру, что и шифрование. Заметим, что девятая стадия требует только четыре входных подключа, в то время как для первых восьми стадий для каждой из них необходимо шесть входных подключей.
Создание подключей
Пятьдесят два 16-битных подключа создаются из 128-битного ключа шифрования следующим образом. Первые восемь подключей, которые обозначим как Z1, Z2, ..., Z8, получаются непосредственно из ключа, при этом Z1 равен первым 16 битам, Z2 равен следующим 16 битам и т.д. Затем происходит циклический сдвиг ключа влево на 25 бит, и создаются следующие восемь подключей. Эта процедура повторяется до тех пор, пока не будут созданы все 52 подключа.
Заметим, что каждый первый подключ раунда получен из своего подмножества бит ключа. Если весь ключ обозначить как Z [1..128], то первыми ключами в восьми раундах будут:
Z1 = Z [1..16] Z25 = Z [76..91] Z7 = Z [97..112] Z31 = Z [44..59] Z13 = Z [90..105] Z37 = Z [37..52] Z19 = Z [83..98] Z43 = Z [30..45]
Хотя на каждом раунде за исключением первого и восьмого используются только 96 бит подключа, множество бит ключа на каждой итерации не пересекаются, и не существует отношения простого сдвига между подключами разных раундов. Это происходит потому, что на каждом раунде используется только шесть подключей, в то время как при каждой ротации ключа получается восемь подключей.