- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «воронежский государственный университет» ( фгбоу впо вгу)
- •Содержание
- •Список основных сокращений
- •Введение
- •Постановка задачи
- •Гпсп в системах защиты информации
- •1.1. Гпсп и шифрование мультимедийных данных [8]
- •1.2. Гпсп и хэширование
- •1.3. Гпсп и криптографические протоколы
- •1.4. Вероятностное шифрование и алгоритм эль-гамаля [1, 2]
- •Принципы построения и классификация гпсп
- •2.1. Два варианта построения гпсп
- •2.2. Криптографические гпсп
- •2.3. Линейные гпсп
- •2.4. Нелинейные гпсп [7]
- •Конечные поля и гпсп
- •3.1. Основные понятия теории конечных полей
- •3.2. Стохастические гпсп [3, 8]
- •Описание программы
- •4.1. Основные сведения
- •Инструкция по работе с программой
- •Графические тесты.
- •Оценочные тесты.
- •Заключение
- •Список использованных источников
- •Приложение
Принципы построения и классификация гпсп
2.1. Два варианта построения гпсп
Можно выделить два подхода при использовании в составе генераторов ПСП нелинейных функций: это использование нелинейной функции непосредственно в цепи обратной связи (рис. 2.1, а) и двухступенчатая структура (рис. 2.1, б), в которой задача первой ступени (по сути счетчика) заключается всего лишь в обеспечении максимально большого периода при данной разрядности N используемого регистра Q [8].

а б в
Рис. 2.1. Два варианта построения генератора ПСП:
а - с нелинейной внутренней логикой (режим OFB - Output FeedBack); б - с нелинейной внешней логикой (режим Counter); в - входной и преобразованный вектор ошибок
Q - элементы памяти генератора, FB - линейная или нелинейная функция обратной связи, Fk - нелинейная функция, k - ключ, γi - элемент выходной последовательности, е - входной вектор ошибок, содержащий 1 в разрядах, соответствующих измененным (искаженным) битам, е' - преобразованный (выходной) вектор ошибок.
2.2. Криптографические гпсп
На рис. 2.2 приведена классификация генераторов ПСП. Роль нелинейной функции Fk может выполнять функция зашифрования Еk одноключевой (классической) или двухключевой криптосистемы, при этом использование криптостойких функций Еk автоматически придает аналогичное свойство и генератору ПСП. Стойкость функций Еk современных криптосистем основывается на недоказуемом предположении о том, что у противника не хватит ресурсов (вычислительных, материальных, временных и т.п.), для того чтобы инвертировать эту функцию при неизвестном k.
Симметричные криптоалгоритмы (криптоалгоритмы с секретным ключом) делятся на три большие группы: поточные, блочные и комбинированные.
Особенности поточного шифрования:
каждый элемент исходной информационной последовательности шифруется на своем элементе ключевой последовательности;
результат преобразования отдельных элементов зависит от их позиции в исходной последовательности;
высокое быстродействие - шифрование осуществляется практически в реальном масштабе времени сразу при поступлении очередного элемента входной последовательности;
эффективная программная реализация.

Рис. 2.2. Классификация генераторов ПСП
Особенности блочного шифрования:
шифрованию подвергаются порции информации фиксированной длины (блоки);
каждый блок исходной последовательности шифруется независимо от других на одном и том же ключе;
низкое быстродействие, так как функция шифрования любого современного блочного криптоалгоритма суть многократное повторение одной и той же раундовой операции.
Недостатки блочного шифрования:
одинаковым блокам открытого текста соответствуют одинаковые блоки шифротекста и наоборот;
нечувствительность криптосхемы к выпадению или вставке целого числа блоков;
существование проблемы последнего блока неполной длины.
В результате на практике чаще всего используется комбинированный подход, при котором шифрование осуществляется либо с использованием операции сцепления блоков (режим CBC), либо с использованием генераторов ПСП по схемам, показанным на рис. 1.1 (режимы OFB и Counter) и рис. 1.2 (режим CFB). При этом в качестве нелинейных функций генераторов ПСП (рис. 2.1) используются функции зашифрования соответствующих блочных криптоалгоритмов.
Особенности шифрования методом гаммирования (поточное или комбинированное шифрование в режимах OFB и Counter):
наличие у противника, даже не знающего ключевой информации, возможности внесения предсказуемых изменений в зашифрованную информацию при ее хранении или передаче;
жесткие требования к синхронизации генераторов ПСП источника и приемника информации - выпадение или вставка элемента зашифрованной последовательности при ее хранении или передаче приводит к необратимым искажениям всех последующих элементов после расшифрования.
Эти не очень приятные особенности отсутствуют при шифровании в режиме гаммирования с обратной связью (поточное или комбинированное шифрование в режиме CFB).
На рис. 2.3 показан генератор ПСП ГОСТ 28147-89, который функционирует в режиме Counter, где ki, i = (1, 32), - раундовые ключи. Разрядность блока данных ГОСТа равна 64 битам, число раундов преобразования равно 32. Функция Ek построена с использованием схемы, которая носит название сбалансированной сети Фейстеля. Схема раундовой функции F показана на рис. 2.4. Ключевая информация ГОСТа - собственно ключ, состоящий из восьми 32-разрядных элементов К0, К1, ..., К7, и таблица замен размерностью 4x16x8 бит, определяющая логику работы восьми 4-разрядных блоков замены (S-блоков). Последовательность использования ключевых элементов при построении функции Ek имеет вид
К0, К1, ..., К7, К0, К1, ..., К7, К0, К1, ..., К7, К7, K6, ..., К0.

Рис. 2.3. Генератор ПСП ГОСТ 28147-89
Таким образом, в состав раунда ГОСТа входят следующие преобразования 32-разрядных двоичных наборов:
сложение правой половины R-блока данных с раундовым ключом;
разбиение результата на восемь 4-битовых элементов и замена каждого из них по таблице замен;
циклический сдвиг результата на 11 разрядов влево;
поразрядное сложение по модулю 2 (XOR) результата с левой половиной L блока данных;
новое значение элемента L становится равным R, новое значение элемента R становится равным результату предыдущей операции.
32-й раунд отличается от остальных - в нем отсутствует последняя операция.

Рис. 2.4. Раундовая функция ГОСТ 28147-89
На рис. 2.5 показана схема счетчика ГОСТа, который состоит из двух независимых счетчиков со взаимно простыми числами состояний соответственно 232 и 232 - 1. В результате период последовательности на выходе схемы оказывается равным произведению 232(232 - 1). Константы С1 = 01010101h и С2 = 01010104h подобраны таким образом, чтобы каждое следующее состояние счетчика отличалось от предыдущего в каждом байте.
На рис. 2.6 показан генератор ПСП, построенный в соответствии с принятым в 2001 г. американским стандартом AES-128. Разрядность блока данных AES-128 равна 128 битам, число раундов преобразования равно 10. Функция Ek построена с использованием новой архитектуры "Квадрат". Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма AES-128, называются состояниями. Состояние (рис. 2.7, а) и раундовые ключи шифрования (рис. 2.7, б) можно представить в виде квадратного массива байтов, имеющего 4 строки и 4 столбца. Разрядность исходного секретного ключа, из которого формируются раундовые ключи, равна 128. Свойства шифра иллюстрирует рис. 2.8, из которого видно, что 2 раунда обеспечивают полное рассеивание и перемешивание информации.

Рис. 2.5. Схема счетчика ГОСТ 28147-89

Рис. 2.6. Генератор ПСП стандарта AES-128
Состояние
-
а
Раундовый ключ
-
б
Рис. 2.7. Форматы данных AES-128: а - состояние; б - раундовый ключ

Рис. 2.8. Рассеивание и перемешивание информации в AES-128
В состав раунда AES-128 входят следующие преобразования:
побайтовая замена байтов состояния с использованием фиксированной таблицы замен размером 8x256;
побайтовый циклический сдвиг строк результата - i-я строка сдвигается на i байтов влево, i = (0, 3);
перемешивание столбцов результата;
поразрядное сложение по модулю 2 (ХОR) результата с раундовым ключом.
10-й раунд отличается от остальных - в нем отсутствует предпоследняя операция.
Основные особенности AES-128:
новая архитектура «Квадрат», обеспечивающая быстрое рассеивание и перемешивание информации, при этом за один раунд преобразованию подвергается весь входной блок;
байт-ориентированная структура, удобная для реализация на 8-разрядных МК;
все раундовые преобразования суть операции в конечных полях, допускающие эффективную аппаратную и программную реализацию на различных платформах.
В отличие от блочных шифров, функции Еk которых, как уже отмечалось, строятся по итерационному принципу, при проектировании поточных шифров используется огромное множество приемов и методов, классифицировать которые очень сложно. Можно выделить все же следующие:
работа по принципу stop-and-go;
перемешивание двух ПСП под управлением третьей;
многоступенчатая структура;
использование S-блоков с изменяющейся в процессе работы таблицей замен;
использование блоков пространственного сжатия информации;
использование в качестве строительных блоков генераторов, функционирующих в конечных полях.
Одним из лучших поточных шифров является RC4 — шифр с переменным размером ключа, разработанный Р. Ривестом. Криптоалгоритм работает в режиме OFB, т. е. поток ключевой информации не зависит от открытого текста. Используются два 8-разрядных счетчика Q1 и Q2 и 8-разрядный блок замены (S-блок) (рис. 2.9), таблица замен имеет размерность 8 х 256 и является перестановкой (зависящей от ключа) двоичных чисел от 0 до 255.

Рис. 2.9. Схема генератора ПСП RC4
Рассмотрим алгоритм работы 8-разрядного генератора ПСП RC4, точнее, процедуру генерации очередного байта гаммы. Пусть S(i) и γ - содержимое ячейки с адресом i таблицы замен S-блока и очередной байт гаммы.
Один такт работы генератора ПСП RC4:
Такт работы первого счетчика:
Q1 = (Q1 + 1) mod 28.
Такт работы второго счетчика:
Q2 = (Q2 + S(Q1)) mod 28.
Ячейки таблицы замен S-блока с адресами Q1 и Q2 обмениваются своим содержимым:
S(Q1)↔S(Q2).
Вычисление суммы содержимого ячеек таблицы замен S-блока с адресами Q1 и Q2:
Т = (S(Q1) + S(Q2)) mod 28.
Считывание содержимого ячейки таблицы замен S-блока с адресом T:
γ = S(T).
Таблица замен S-блока медленно изменяется при использовании, при этом счетчик Q1 обеспечивает изменение каждого элемента таблицы, a Q2 гарантирует, что элементы таблицы изменяются случайным образом.
Криптографически стойкие генераторы ПСП могут быть построены на основе использования в цепи обратной связи так называемых односторонних функций. Понятие односторонней функции является базовым для нового направления - криптографии с открытым ключом.
По заданному аргументу х ∈ X легко вычислить значение такой функции F(x), в то же время определение х из F(x) трудновычислимо, т. е. нет алгоритма для решения этой задачи с полиномиальным временем работы. Теоретически х по известному значению F(x) можно найти всегда, проверяя по очереди все возможные значения x до тех пор, пока соответствующее значение F(x) не совпадет с заданным. Однако практически при значительной размерности множества X такой подход неосуществим.
Односторонней функцией называется функция F: X → Y, обладающая двумя свойствами:
существует полиномиальный алгоритм вычисления значений F(x);
не существует полиномиального алгоритма инвертирования функции F.
До сих пор ни для одной функции, кандидата на звание односторонней, не доказано свойство 2.
Примером кандидата на звание односторонней функции является модульное возведение в степень, т. е. функция F(x) = ωx mod р, где р - большое простое число, ω - примитивный элемент поля GF(p).
Задача вычисления функции, обратной модульному возведению в степень, называется задачей дискретного логарифмирования. На сегодняшний, день неизвестно ни одного эффективного алгоритма вычисления дискретных логарифмов больших чисел.
Односторонняя функция в качестве функции зашифрования неприменима, так как, хотя F(x) - надежно зашифрованное сообщение х, никто, в том числе и законный получатель, не сможет восстановить х. Обойти эту проблему можно с помощью односторонней функции с секретом. Такова, например, функция Fk: X → Y; имеющая обратную Fk-1: Y → X, однако узнать обратную функцию только по Fk без знания секрета k невозможно.
Таким образом, односторонней функцией с секретом к, называется функция Fk: X → Y, зависящая от параметра k и обладающая тремя свойствами:
при любом k существует полиномиальный алгоритм вычисления значений Fk(x);
при неизвестном k не существует полиномиального алгоритма инвертирования Fk;
при известном k существует полиномиального алгоритма инвертирования Fk.
Функцию Fk можно использовать для зашифрования информации, а обратную ей функцию Fk-1 - для расшифрования.
При этом подразумевается, что тот, кто знает, как зашифровывать информацию» вовсе не обязательно должен знать, как расшифровывать. Так же как и в случае с односторонней функцией, вопрос о существовании односторонних функций с секретом открыт. Для практической криптографии найдено несколько функций, кандидатов на звание односторонней функции с секретом. Для них второе свойство не доказано, однако известно, что задача инвертирования эквивалентна некоторой хорошо изученной и давно известной трудной математической задаче. Это означает, что второе требование к односторонней функции с секретом заменяется более слабым условием: при неизвестном k, вероятно, не существует полиномиального алгоритма инвертирования Fk-1.
