Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KMZI_shpory.docx
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
267.43 Кб
Скачать
  1. Блоковые шифры. Шифр Цезаря.

Блочный шифр — разновидность симметричного шифра. В отличие от поточного, блоковый шифр обрабатывает открытый текст блоками по несколько (как правило 8 или 16)байт за одну итерацию. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют.

Преобразование должно использовать следующие принципы:

  • Рассеивание— то есть изменение любого знака открытого текста или ключа влияет на большое число знаков шифротекста, что скрывает статистические свойства открытого текста;

  • Перемешивание— использование преобразований, затрудняющих получение статистических зависимостей между шифротектстом и открытым текстом.

К достоинствам блочных шифров относят похожесть процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и дешифрования.

Блочный шифр состоит из двух взаимосвязанных алгоритмов: алгоритм шифрования E и алгоритм расшифрования E−1. Входными данными служат блок размером n бит иk-битный ключ. На выходе получается n-битный зашифрованный блок. Для любого фиксированного ключа функция расшифрования является обратной к функции шифрования   для любого блока M и ключа K.

Для любого ключа KEK является биективной функцией (перестановкой) на множестве n-битных блоков.

Размер блока n — это фиксированный параметр блочного шифра,. Различные схемы шифрования позволяют зашифровывать открытый текст произвольной длины. Каждая имеет определенные характеристики: вероятность ошибки, простота доступа, уязвимость к атакам. Типичными размерами ключа являются 40, 56, 64, 80, 128, 192 и 256 бит.

Пример простого подстановочного шифра - шифр Юлия Цезаря, представляющий собой фактически сдвиг по алфавиту A на количество букв, определяемое числом . То есть, если объем алфавита равен, например, 33 буквам, и каждая буква в этом алфавите имеет свой номер , то зашифрованная буква будет иметь номер . Дешифрация выполняется в обратном порядке: k ii ≤≤ 320: : += kijj 33mod = − kji 33mod . Если верить легенде, то Юлий Цезарь использовал в качестве ключа число 3. Таким образом, фраза "И ТЫ БРУТ!" превратилась бы в "Л ХЮ ДУЦХ!". k

Пример (аффинное преобразование)

Шифр аффинного преобразования на алфавите из 33 букв определяется как , где такие, что, и НОД += baij 33mod,ba ba ≤≤ 32,0 a = 1)33,( . Очевидно, что шифр аффинного преобразования превращается в шифр Юлия Цезаря при a = 1

  1. Блоковые шифры. Шифр aes.

Шифрование

AES является стандартом, основанным на алгоритме Rijndael. Для AES длина input и State(состояния- промежуточный результат шифрования, который может быть представлен как прямоугольный массив байтов имеющий 4 строки и Nb колонок) постоянна и равна 128 бит, а длина шифроключаK составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для обозначения выбранных длин input, State и Cipher Key(секретный, криптографический ключ) в байтах используется нотация Nb = 4(число столбцов(32-х битных слов), составляющих State), Nk = 4, 6, 8 (число 32-х битных слов, составляющих шифроключ)для Cipher Key соответственно для разных длин ключей.

В начале шифрования input копируется в массив State по правилу s[r,c] = in[r + 4c], для 0<=r<4 и 0<=c<Nb. После этого к State применяется процедура AddRoundKey()-трансформация при шифровании и обратном шифровании, при которой Round Key XOR’ится c State. Длина RoundKey равна размеру State(те, если Nb = 4, то длина RoundKey равна 128 бит или 16 байт) и затем State проходит через процедуру трансформации (раунд) 10, 12, или 14 раз (в зависимости от длины ключа), при этом надо учесть, что последний раунд несколько отличается от предыдущих. В итоге, после завершения последнего раунда трансформации, State копируется в output по правилу out[r + 4c] = s[r,c], для 0<=r<4 и 0<=c<Nb.

Отдельные трансформации SubBytes()-трансформации при шифровании которые обрабатывают State используя нелинейную таблицу замещения байтов(S-box), применяя её независимо к каждому байту State, ShiftRows()-трансформации при шифровании, которые обрабатывают State, циклически смещая последние три строки State на разные величины, MixColumns()-трансформация при шифровании которая берет все столбцы State и смешивает их данные (независимо друг от друга), чтобы получить новые столбцы, и AddRoundKey() — обрабатывают State. Массив w[] — содержит key schedule.

Алгоритм обработки ключа

Алгоритм обработки ключа состоит из двух процедур:

1)Алгоритм расширения ключа

2)Алгоритм выбора раундового ключа (ключа итерации)

Алгоритм расширения ключа

AES алгоритм, используя процедуру KeyExpansion() и подавая в неё Cipher Key, K, получает ключи для всех раундов. Всего она получает Nb*(Nr + 1) слов: изначально для алгоритма требуется набор из Nb слов, и каждому из Nr раундов требуется Nb ключевых набора данных. Полученный массив ключей для раундов обозначается как w[i], 0<=i<Nb*(Nr+1). Функция SubWord() берет четырёхбайтовое входное слово и применяет S-box(нелинейная таблица замен)к каждому из четырёх байтов то, что получилось подается на выход. На вход RotWord() подается слово [a0,a1,a2,a3] которое она циклически переставляет и возвращает [a1,a2,a3,a0]. Массив слов, слов постоянный для данного раунда,Rcon[i] (массив, который состоит из битов 32-х разрядного слова и является постоянным для данного раунда), содержит значения [xi − 1,00,00,00], где x = {02}, а xi − 1 является степенью x в GF(28)  (i начинается с 1).

Первые Nk слов расширенного ключа заполненны Cipher Key. В каждое последующее слово, w[i], кладётся значение полученное при операции XOR w[i − 1] и w[i-Nk], те XOR’а предыдущего и на Nk позиций раньше слов. Для слов, позиция которых кратна Nk, перед XOR’ом к w[i-1] применяется трасформация, за которой следует XOR с константой раунда Rcon[i]. Указанная выше трансформация состоит из циклического сдвига байтов в слове(RotWord()), за которой следует процедура SubWord() — то же самое, что и SubBytes(), только входные и выходные данные будут размером в слово.

Важно заметить, что процедура KeyExpansion() для 256 битного Cipher Key немного отличается от тех, которые применяются для 128 и 192 битных шифроключей. Если Nk = 8 иi − 4 кратно Nk, то SubWord() применяется к w[i − 1] до XOR’а.

  1. Хэш-функция: md2, md5, mc6

Хеш-функцией называется односторонняя функция, предназначенная для получения дайджеста или "отпечатков пальцев" файла, сообщения или некоторого блока данных.

Изначально функции хеширования использовались как функции создания уникального образа информационных последовательностей произвольной длины, с целью идентификации и определения их подлинности. Сам образ должен быть небольшим блоком фиксированной длины, как правило, 30, 60, 64, 128, 256, или 512 бит. Поэтому операции поиска сортировки и другие с большими массивами или базами данных существенно упрощаются, т.е. занимают гораздо меньшее время..

Хеш-функция должна удовлетворять целому ряду условий:

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

MD2 (Message Digest) — хэш-функция, разработанная Рональдом Ривестом (1989 г). Размер хэша — 128 бит. Размер блока входных данных — 512 бит. В 2004 году, было показано, что MD2 подвержен атаке на нахождение коллизий со сложностью, эквивалентной 2 в 104 стенени операциям хеширования. Миллер заявил: «MD2 не может больше рассматриваться, как криптостойкий алгоритм хеширования». MD5 - алгоритм хэширования, разработанный профессором Рональдом Л. Ривестом в 1991 году. Алгоритм md5 позволяет создавать хеш (контрольную сумму), которую достаточно сложно подделать. Он используется для всевозможных проверок подлинности данных, когда необходима передача их в зашифрованном виде. Обратное кодирование (расшифровка) в данном алгоритме невозможна. MD6  — алгоритм хеширования переменной разрядности, разработанный профессором Рональдом (2008 г). Предназначен для создания «отпечатков» или дайджестов сообщений произвольной длины. По заявлению авторов, алгоритм устойчив к дифференциальному криптоанализу. Зная MD6, невозможно восстановить входное сообщение, так как разным сообщениям может соответствовать один MD6. Используется для проверки целостности и, в некотором смысле, подлинности опубликованных сообщений, путём сравнения дайджеста сообщения с опубликованным. Эту операцию называют «проверка хеша». Хэш-функции также широко используются для генерации ключей фиксированной длины для алгоритмов шифрования на основе заданной ключевой строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]