- •Поле, конечное поле. Основные определения.
- •Метод шифрования rsa.
- •Обычный и расширенный алгоритмы Евклида.
- •Алгоритм Евклида для целых чисел
- •Расширенный алгоритм Евклида
- •Значение и применение эцп. Хэш-функция.
- •Эцп на основе алгоритма Эль-Гамаля.
- •Простое поле Голуа.
- •Расширенное поле Голуа. Неприводимые многочлены.
- •Примитивные многочлены. Число неприводимых и примитивных многочленов.
- •Автоморфизмы элементов расширенного поля.
- •Изоморфизмы элементов расширенного поля.
- •Группы Диедро и Гамильтоновы группы.
- •Гомоморфизмы элементов мультипликативной группы g*(p)..
- •Бинарные кодовые последовательности: код Лежандра.
- •Бинарные кодовые последовательности: код Якоби.
- •Бинарные кодовые последовательности: gmw.
- •Алгоритмы построения неприводимых многочленов.
- •Эллиптическая кривая, заданная простым полем g(p)
- •Эцп гост р34.10-2001 Параметры схемы цифровой подписи
- •Формирование цифровой подписи
- •Проверка цифровой подписи
- •Алгебра Брасмана-Клиффорда в качестве нового криптографического примитива.
- •Блоковые шифры. Шифр Цезаря.
- •Блоковые шифры. Шифр aes.
- •Эллиптическая кривая над расширенным полем.
- •1.Конечные циклические группы
- •3.Коммутативные (абелевы) группы
Блоковые шифры. Шифр Цезаря.
Блочный шифр — разновидность симметричного шифра. В отличие от поточного, блоковый шифр обрабатывает открытый текст блоками по несколько (как правило 8 или 16)байт за одну итерацию. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют.
Преобразование должно использовать следующие принципы:
Рассеивание— то есть изменение любого знака открытого текста или ключа влияет на большое число знаков шифротекста, что скрывает статистические свойства открытого текста;
Перемешивание— использование преобразований, затрудняющих получение статистических зависимостей между шифротектстом и открытым текстом.
К достоинствам блочных шифров относят похожесть процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и дешифрования.
Блочный
шифр состоит из двух взаимосвязанных
алгоритмов: алгоритм шифрования E и
алгоритм расшифрования E−1.
Входными данными служат блок размером n бит
иk-битный ключ.
На выходе получается n-битный
зашифрованный блок. Для любого
фиксированного ключа функция расшифрования
является обратной к функции шифрования
для
любого блока M и
ключа K.
Для любого ключа K, EK является биективной функцией (перестановкой) на множестве 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
Блоковые шифры. Шифр 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’а.
Хэш-функция: 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. Используется для проверки целостности и, в некотором смысле, подлинности опубликованных сообщений, путём сравнения дайджеста сообщения с опубликованным. Эту операцию называют «проверка хеша». Хэш-функции также широко используются для генерации ключей фиксированной длины для алгоритмов шифрования на основе заданной ключевой строки.
