ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
РАЗРАБОТКА ОБУЧАЮЩЕЙ ПРОГРАММЫ ПО РЕЖИМАМ
ШИФРОВАНИЯ ГОСТ 28147-89
Выпускная квалификационная работа
обучающегося по направлению подготовки 02.03.01
Математика и компьютерные науки
очной формы обучения группы 07001303
Ряднова Николая Николаевича
Научный руководитель:
к.т.н. доцент
Румбешт Вадим Валерьевич
БЕЛГОРОД, 2017
СОДЕРЖАНИЕ
ВВЕДЕНИЕ………..……………………………………………………………...3
1. ПОСТАНОВКА ЗАДАЧИ НА РАЗРАБОТКУ ОБУЧАЮЩЕЙ
ПРОГРАММЫ ПО РЕЖИМАМ ШИФРОВАНИЯ ГОСТ 28147-89……….….5
1.1. Обзор криптографического преобразования ГОСТ 28147-89.…..5
1.2. Обзор и анализ обучающих программ.…………………….….…20
1.3. Требования к обучающей программе…………………………….28
2. ПРОЕКТИРОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ…...……….....32
2.1. Предварительное проектирование.………………………………...32
2.2. Проектирование модульной структуры программы………....…...34
2.3. Программная реализация………………………..……….…….…...37
3. АПРОБАЦИЯ ОБУЧАЮЩЕЙ ПРОГРАММЫ ПО РЕЖИМАМ
ШИФРОВАНИЯ ГОСТ 28147-89..……………………………………………..44
3.1. Программа и методика испытаний………………………………...44
3.2. Результаты испытаний.……………………………………………..45
ЗАКЛЮЧЕНИЕ………………………………………………………………….50
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ……………………………..51
ПРИЛОЖЕНИЕ………………………………………………………………….54
3
ВВЕДЕНИЕ
В современном информационном обществе остро стоит вопрос защиты
информации. Если информация защищена шифрованием, никто не в силах
ее прочесть или изменить. Если мы используем шифрование, то знаем, с кем
имеем дело,
поэтому шифрование можно
интерпретировать и
как
аутентификацию. Шифрование является важнейшим средством обеспечения
безопасности. Обучение студентов методам криптографической защиты
также важно: в самом деле, на сегодняшний день криптография используется
в цифровых технологиях, что делает представление многих сфер жизни
общества без её наличия немыслимым. Этот процесс охватывает всё больше
и больше различных сфер жизни: логин и пароль, аутентификация и
идентификация,
электронная
цифровая
подпись
–
использование
перечисленных и многих других схожих понятий стало обычным явлением
для повседневной жизни.
В данной работе затрагиваются вопросы обучения криптографической
защиты информации, происходит обзор основных алгоритмов для решения
этой задачи и даётся математическое обоснование правильности их работы.
Излагается главная информация об основных направлениях, наиболее
актуальных новшествах и примерах классической криптографии. Чёткость и
связность изложения помогают студентам достичь максимально полного и
комплексного восприятия предмета. Таким образом, студенты, обучающиеся
на специальностях, связанными с информационными технологиями, должны
быть не только грамотны в вопросах защиты информации, но и способны
реализовать и дорабатывать алгоритмы шифрования.
Целью
данной
выпускной
квалификационной
работы
является
разработка обучающей программы по режимам шифрование ГОСТ 28147-89.
Для её достижения были поставлены следующие задачи:
4
Провести обзор предметной области и выполнить анализ
литературы по теме шифрования на основе ГОСТ 28147-89;
Раскрыть возможность использования режимов шифрования
ГОСТ в качестве средства обучения;
Изучить
средства
информационных
технологий
для
проектирования программы учебного назначения и обосновать выбор
средств, для разработки собственной компьютерной обучающей программы
по режимам шифрования ГОСТ 28147-89;
Разработать обучающую программу по режимам шифрования
ГОСТ 28147-89;
Экспериментально протестировать обучающую программу по
режимам шифрования ГОСТ 28147-89.
В первой главе идет постановка задачи на разработку обучающей
программы по режимам шифрования ГОСТ 28147-89,обзор и анализ
обучающих программ и составление требований.
Во
второй
приложения,
главе
происходит
проектирование
предварительное
модульной
структуры
проектирование
и
программная
реализация.
В третье главе идет апробация обучающей программы по режимам
шифрования ГОСТ 28147-89.
В выпускной квалификационной работе содержится 56 страниц без
приложения, 21 рисунков , 5 таблиц, 13 формул. В процессе создания было
использовано 20 литературных источников.
5
1. ПОСТАНОВКА ЗАДАЧИ НА РАЗРАБОТКУ ОБУЧАЮЩЕЙ
ПРОГРАММЫ ПО РЕЖИМАМ ШИФРОВАНИЯ ГОСТ 2814789
1.1 Обзор криптографического преобразования ГОСТ 28147-89
Российский стандарт на криптографию с симметричным ключом
определен ГОСТ 28147-89 “Системы обработки информации. Защита
криптографическая.
Алгоритм
криптографического
преобразования”,
который был введен в действие 1 июля 1990 г. Принципиальное отличие
стандарта от DES – содержание указания на то, что он “по своим
возможностям не накладывает ограничений на степень секретности
защищаемой информации”. В целом эти алгоритмы схожи, однако между
ними есть и существенные отличия. К ним относятся, например, длина ключа
и трактовка содержимого узлов замены [которые в схеме DES называются
“S-boxes”]. В то время, как внесение узлов изменения DES оптимизировано с
точки зрения криптографической защищённости и явно указано в стандарте,
заполнение узлов замены ГОСТ 28147 “является секретным элементом и
поставляется в установленном порядке”. Учитывая, что оно вместе с тем
“является долговременным ключевым элементом, общим для сети ЭВМ”, и
что
“установленный
порядок”
поставки
может
не
предусматривать
криптографическую оптимизацию, этот пункт стандарта представляется
одним из его слабых мест, затрудняющим реализацию и не способствующим
криптографической
стойкости.
В
то
же
время
при
установке
оптимизированных значений для узлов замены криптографическая стойкость
алгоритма не сильно отличается от стойкости DES.
Стандарт криптографического преобразования данных ГОСТ 2814789 может быть использован для защиты произвольной информации,
6
приведённой
к
двоичному
коду.
При
разработке
этого
стандарта
использовался мировой опыт: так, например, в процессе его формирования
были приняты во внимание недостатки алгоритма DES. В виду сложности
этого стандарта будет дано только его смысловое описание.
На различных этапах алгоритмов ГОСТа данные, которыми они
оперируют, интерпретируются и используются по-разному. Так, элементы
данных могут обрабатываться в виде массивов независимых битов;
возможны обработки в виде целого числа без знака, или же в виде имеющего
структуру сложного элемента, состоящего из нескольких более простых. В
связи с этим следует договориться об используемых обозначениях с целью
избегания неоднозначности понимания.
ГОСТ (GOST89) является прекрасным примером шифра, который был
разработан, чтобы противостоять вращающийся-подраздел связанные с
ключом
атаки,
но
не
связанных
с
ключом
дифференциального
криптоанализа. Пусть К0..7 быть на восемь 32-разрядных слов ключа. ГОСТэто 32-круглый Фейстеля шифр; ключ расписание порождает вокруг
подразделы k0..31 согласно
(1.1)
Заметим, что ненулевое ∆К0 разница заносится в только sk0,
развлекательный центр sk8, sk16, и sk31; разница ∆sk0 могут обрабатываться
стандартным трюком взаимозачет первый раунд Ключевая разница с
правильно подобранным разница открытого текста.
Такой подход позволяет обойти первые восемь раундов бесплатно.
ГОСТ по Ф-функция основывается на параллельном применении
восьми 4-разрядных биективных s-блоков, затем левый поворот из 11 бит.
Это означает, что это можно атаковать ГОСТ с тройной однотуровой
характеристикой. Характеристика имеет только один активный s-блок.
7
Более подробно, пусть будет вход разница с просто один активный sблок, а только старший бит установлен в разница входных данных, что sполе. Выбрать B так, что А → B и младший бит активный s-блок выходной
разностью, равна нулю. Функция Round вращается выходной разница влево
на 11 бит, который ставит три ненулевых бит B в один информацию sbox по
вход во второй тур. Этот второй раунд транслируется с B → C к подобную
технику; активный s-блок выходных разница должна быть равна нулю в
максимум три бита, так что мы можем покрыть третьем раунде с → А.
Если вероятность всех этих трех отношений p, И они разрешили
перекрытия (что разумно, как A, B и C каждый из которых не превышает
четыре бита широкий), тогда мы сможем выбрать ключевые разности,
получаем 20-круглый характеристика с вероятностью p 32, и провести атаку
4г на 32-круглые ГОСТ. Этот анализ только быть практичным, когда sкоробки имеют очень плохой распределении разницы,
Против 24-круглый вариант ГОСТ, это атака становится более
практичным. (А 24-круглый вариант ГОСТ должны иметь ключевой график
как полный ГОСТ, но с одним из промежуточных восьмом раунде
последовательности удалены. Последние восемь подразделов еще следует
поменять местами с первой восемь подразделов.)
Мы исследовали безопасность “стандартный” набор ГОСТ s-блоков мы
подсчитали, что 12-раундовый характеристика имеет вероятность около 2-68,
который слишком мало, чтобы совершить атаку практические. Случайно
выбранные s-блоки были намного слабее. Средняя вероятность более 10000
случайных s-блоков был 2-54; другие значения находились в диапазоне 2-43
по 2-80, имеющих большой разброс между испытаниями[7].
В РФ принят единый алгоритм криптографического преобразования
данных, определяемый ГОСТ 28147-89. Данный алгоритм применяется в
системах обработки информации, в сетях ЭВМ, отдельных вычислительных
комплексах. Стандарт необходим для организаций, корпораций, фирм,
8
использующих криптографическую защиту информации, которая хранится и
передаётся в сетях ЭВМ, а также в отдельных вычислительных комплексах.
Для данного алгоритма предполагается аппаратная и программная
реализации. Он отвечает криптографическим требованиям, и в то же время
подходит для любой степени секретности защищаемой информации.
Алгоритм представляет собой 64-битовый блочный алгоритм с 256-битовым
ключом, основанный на сети Фейстеля [1].
Рис. 1.1. Схема преобразования информации в алгоритме шифрования
блока по ГОСТ 28147-89
На схеме используются следующие обозначения:
N1, N 2 – 32-разрядные накопители;
32
СМ 1 – 32-разрядный сумматор по модулю 2 ([+]);
СМ 2 – 32-разрядный сумматор по модулю 2 ();
R – 32-разрядный регистр циклического сдвига;
КЗУ – ключевое запоминающее устройство на 256 бит, состоящее
из восьми 32-разрядных накопителей X 0 , X1, X 2 ,, X 7 ;
9
S–блок подстановки, состоящий из восьми узлов замены (S-
блоков замены) S1, S2 , S3 ,, S7 , S8 .
Открытые данные, которые необходимо зашифровать, разделяют на 64разрядные блоки To . Процедура шифрования 64-разрядного блока To
включает 32 раунда (цикла) (j = 1…32).
В ключевое запоминающее устройство вводят 256 бит ключа K в виде
восьми 32-разрядных подключей K j :
K K7 K6 K5 K4 K3K2 K1K0
.
(1.2)
Последовательность битов в блоке
To a1(0), a2 (0),, a31(0), a32 (0), b1(0), b2 (0),, b31(0), b32 (0)
разбивается на две по 32 бита: b(0) а(0), где b(0) – левые или старшие
биты, а(0) – правые или младшие биты.
Эти последовательности вводят в накопители N1 и N 2 ; перед началом
первого раунда шифрования.
Таблица 1.1.
В результате начальное заполнение накопителя N1
Номер разряда
a(0) = (
32
31
…
2
1
a32 (0) ,
a31(0) ,
…,
a2 (0) ,
a1(0) )
Таблица 1.2.
Начальное заполнение накопителя N 2
Номер разряда
b(0) = (
32
31
…
2
1
b32 (0) ,
b31(0) ,
…,
b2 (0) ,
b1(0) )
Первый раунд (j = 1) процедуры шифрования 64-разрядного блока
открытых данных задаётся равенствами:
a(1) f (a(0) [] K0 ) b(0) , b(1) a(0) .
(1.3)
10
Где
а(1) – заполнение N1 ,
b(1) – заполнение N 2 после 1-го раунда шифрования;
f – функция шифрования.
функция f является суммой по модулю 232 числа а(0) (начального
заполнения накопителя N1 ) и числа K 0 – подключа, считываемого из
накопителя X 0 КЗУ. Каждое из этих чисел равно 32 битам.
Функция f состоит из двух операций, применяющихся над полученной
32-разрядной суммой (a(0) [] K0 ) . Первая из них – подстановка или замена
– реализуется с помощью блока подстановки S. Он состоит из восьми узлов
замены S1, S2 ,, S8 , память каждого из которых составляет 64 бита.
Поступающий из СМ 1 на блок подстановки S 32-разрядный вектор
разбивают на восемь последовательно идущих 4-разрядных векторов,
каждый
из
которых
преобразуется
в
четырехразрядный
вектор
соответствующим узлом замены. Каждый узел замены можно представить в
виде таблицы-подстановки шестнадцати четырехразрядных двоичных чисел
в диапазоне 0000…1111.
В некоторых реализациях, дес ключ планирование применяется с двумя
28-разрядный сдвиговый регистры В, С и D, как в оригинальном
определении. Ключ поворачивается в каждом раунде, и восстанавливается в
исходное состояние по окончании шифрования, так как общее количество
сдвиги в течение 16 раундов 28. Если ошибки влияют на сдвиги этих
регистров,
затем
в
следующем
шифрования
ключа
изменяется
на
соответствующий ключ. Ключ криптоанализ[3], или дифференциальной,
связанных с ключом криптоанализ[7] может быть применен с ДКА в таких
случаях. Мы ожидаем, что линейный криптоанализ[12] также могут быть
объединены с ДФА в некоторых случаях (по аналогии с дифференциально-
11
линейный криптоанализ[10]), особенно когда выявление неисправности
установки отличается высокой надежностью (или когда позиции вина могут
быть выбраны злоумышленником) [1].
Структура S-блоков в течение длительного периода времени не
выкладывалась в открытом доступе. На данный момент известны S-блоки,
которые Центральный Банк РФ использует в своих приложениях. Они
являются относительно сильными. Их устройство рассмотрено в табл. 1.3.
Любой такой блок может быть представлен в виде строки натуральных чисел
от 0 до 15, расположенных в некотором порядке. В этом случае входное
значение S-блока – порядковый номер числа, а само число является его
выходным значением.
Таблица 1.3.
Рекомендуемые узлы замены для алгоритма ГОСТ 28147-89
№ S-
Значение входа
блока
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
4
10
9
2
13
8
0
14
6
11
1
12
7
15
5
3
2
14
11
4
12
6
13
15
10
2
3
8
1
0
7
5
9
3
5
8
1
13
10
3
4
2
14
15
12
7
6
0
9
11
4
7
13
10
1
0
8
9
15
14
4
6
12
11
2
5
3
5
6
12
7
1
5
15
13
8
4
10
9
14
0
3
11
2
6
4
11
10
0
7
2
1
13
3
6
8
5
9
12
15
14
7
13
11
4
1
3
15
5
9
0
10
14
7
6
8
2
12
8
1
15
13
0
5
7
10
4
9
2
3
14
6
11
8
12
Второй операцией является циклический сдвиг влево (на 11 разрядов)
32-разрядного вектора, полученного с выхода блока подстановки S.
Циклический сдвиг выполняется регистром сдвига R.
Последующие раунды осуществляются аналогично, при этом во втором
раунде из КЗУ считывают заполнение X1 – подключ K1 , в третьем –
подключ K 2 и т.д., в восьмом раунде – подключ K 7 . В раундах с 9-го по 16-
12
й, а также в с 17-го по 24-й подключи из КЗУ считываются в том же порядке:
K0 , K1, K2 ,, K6 , K7 . В последних восьми раундах с 25-го по 32-й порядок
считывания
подключей
из
КЗУ
обратный:
K7 , K6 , K5 ,, K1, K0 .
Следовательно, при шифровании в 32 цикла порядок выборки из КЗУ
подключей будет выглядеть так:
K0 , K1, K 2 , K3 , K 4 , K5 , K6 , K7 , K0 , K1, K 2 , K3 , K 4 , K5 , K6 , K7 ,
K0 , K1, K 2 , K3 , K 4 , K5 , K6 , K7 , K7 , K6 , K5 , K 4 , K3 , K 2 , K1, K0 .
В 32-м раунде результат из сумматора СМ 2 вводится в накопитель N 2 ,
а в накопителе N1 сохраняется прежнее заполнение. Полученные после 32-го
раунда заполнения накопителей N1 и N 2 являются блоком зашифрованных
данных Tш , соответствующим блоку открытых данных To .
Таким образом уравнения шифрования блока имеют вид:
a( j ) f (a( j 1) [] K j 1(mod 8) ) b( j 1)
b( j ) a( j 1)
при j = 1…24,
a( j ) f (a( j 1) [] K32 j ) b( j 1)
b( j ) a( j 1)
при j = 25…31,
a(32) a(31)
b(32) f (a(31) [] K 0 ) b(31)
при j = 32,
(1.4)
где a( j ) a32 ( j ), a31( j ),, a1( j ) – заполнение N1 после j-го раунда
шифрования, b( j ) b32 ( j ), b31( j ),, b1( j ) – заполнение N 2 после j-го
раунда, j = 1…32.
Блок зашифрованных данных Tш (64 разряда) выводится из
накопителей N1 , N 2 в следующем порядке: из разрядов 1…32 накопителя N1
, затем из разрядов 1…32 накопителя N 2 , т.е. начиная с младших разрядов:
13
Tш a1(32), a2 (32),, a31(32), a32 (32), b1(32), b2 (32),, b31(32), b32 (32) . (1.5)
В КЗУ вводят 256 бит ключа, на котором осуществлялось
шифрование.
Зашифрованные
данные,
подлежащие
расшифрованию,
разбиты на блоки Tш по 64 бита в каждом. Ввод любого блока Tш в
накопители N1 и N 2 производят так, чтобы начальное значение накопителя
N1 , имело вид:
Таблица 1.4.
Начальное заполнение накопителя N1
Номер разряда
32
31
…
2
1
a(32) = ( a32 (32) ,
a31(32) ,
…,
a2 (32) ,
a1(32) )
Таблица 1.5.
Начальное заполнение накопителя N2
Номер разряда
32
…
2
1
…,
b2 (32) ,
b1(32) )
31
b(32) = ( b32 (32) , b31(32) ,
Расшифрование осуществляется по тому же алгоритму, что и
шифрование,
с
тем
изменением,
что
заполнения
накопителей
X 0 , X1, X 2 ,, X 7 считываются из КЗУ в раундах расшифрования в
следующем порядке:
K0 , K1, K 2 , K3 , K 4 , K5 , K6 , K7 , K7 , K6 , K5 , K 4 , K3 , K 2 , K1, K0 ,
K7 , K6 , K5 , K 4 , K3 , K 2 , K1, K0 , K7 , K6 , K5 , K 4 , K3 , K 2 , K1, K0 .
Уравнения расшифрования имеют вид:
14
a(32 j ) f (a(32 j 1) [] K j 1) b(32 j 1)
b(32 j ) a(32 j 1)
при j=1…8,
a(32 j ) f (a(32 j 1) [] K32 j (mod 8 ) b(32 j 1)
b(32 j ) a(32 j 1)
при j=9…31,
a(0) a(1)
b(0) f (a(1) [] K0 ) b(1)
при j=32. (1.6)
Полученные результаты
после 32 циклов работы заполнения
накопителей N1 и N 2 образуют блок открытых данных
To a1(0), a2 (0),, a31(0), a32 (0), b1(0), b2 (0),, b31(0), b32 (0)
(1.7)
На рис. 1.2 изображена схема режима электронной кодовой книги.
M1
M2
EK(M1)
EK(M2)
C1
C2
DK(C1)
DK(C2)
M1
M2
Mn
…
EK(Mn)
Шифрование
Cn
…
DK(Cn)
Расшифрование
Mn
Рис. 1.2. Схема режима ECB
Уравнение шифрования данных в режиме гаммирования выглядит
следующим образом:
Тш(i) = Т0(i) Гш(i), где Гш(i) = А(Yi–1 [+] C2, Zi–1 [+]' C1), i=1…m;
(1.8)
15
где:
Тш(i) – 1-й блок 64-разрядного блока зашифрованного текста;
А() – функция шифрования блока;
[+] – операция суммы по модулю 232,
[+]' – операция суммы по модулю 232–1;
С1, С2 – 32-разрядные двоичные константы;
Yi , Zi – 32-разрядные двоичные последовательности.
ТШ(i) (ТО(i))
СМ5
ТО(i) (ТШ(i))
+
ГШ(i)
С1
N6
32…
С2
…1
32…
+
СМ4
32…
N5
…1
+
…1
32…
СМ3
…1
N4
N3
32…
…1
32…
…1
32…
…1
32…
…1
N2
N1
Схема шифрования блока (рис. 4.7)
Рис. 1.3.Схема реализации режима гаммирования ГОСТ 28147-89
Разберём реализацию процедуры шифрования в режиме гаммирования.
В накопители N6 и N5 заранее записаны 32-разрядные двоичные константы С1
и С2, имеющие следующие значения (в шестнадцатеричной форме):
С1 = 01010104(16) , С2 = 01010101(16).
(1.9)
16
В КЗУ вводится 256 бит ключа; в накопители N1 и N2 – 64-разрядная
двоичная последовательность (синхропосылка) Š = (S1, S2,…, S64).
Синхропосылка Š является исходным заполнением накопителей N1 и
N2 для последовательной выработки m блоков гаммы шифра. Исходное
заполнение N1 и N2 зашифровывается. Результат шифрования А(Š)=(Y0 , Z0)
переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1
переписывается в N3, а заполнение N2 – в N4.
Заполнение накопителя N4 суммируют по модулю (232–1) в сумматоре
СМ4 с 32-разрядной константой С1 из накопителя N6. Результат записывается
в N4. Заполнение накопителя N3 суммируется по модулю 232 в сумматоре СМ3
с 32-разрядной константой С2 из накопителя N5. Результат записывается в
N3. Заполнение N3 переписывают в N1, а заполнение N4 – в N2, при этом
заполнения N3, N4 сохраняются. Заполнение накопителей N1 и N2
зашифровывается.
Полученное в результате шифрования заполнение накопителей N1, N2
образует первый 64-разрядный блок гаммы шифра Гш(1) = (1(1), 2(1),…, 63(1),
64(1)), который суммируют поразрядно по модулю 2 в сумматоре СМ5 с
первым 64-разрядным блоком открытых данных Т0(1) = (t1(1), t2(1),…, t63(1),
t64(1)).
В результате суммирования по модулю 2 значений Гш(1) и Т0(1)
получают первый 64-разрядный блок зашифрованных данных:
Тш(1) = Гш(1) Т0(1) = (1(1), 2(1),…, 63(1), 64(1)),
(1.10)
где i(1) = ti(1) i(1), i=1…64.
Для получения следующего 64-разрядного блока гаммы шифра Гш(2)
заполнение N4 суммируется по модулю (232–1) в сумматоре СМ4 с константой
С1 из N6. Результат записывается в N4. Заполнение N3 суммируется по
17
модулю 232 в сумматоре СМ3 с константой С2 из N5. Результат записывается в
N3. Новое заполнение N3 переписывают в N1, а новое заполнение N4 – в N2,
при этом заполнения N3 и N4 сохраняют. Заполнения N1, N2 зашифровывают.
Полученное в результате зашифрования заполнение накопителей N1 и
N2 образует второй 64-разрядный блок гаммы шифра Гш(2), который
суммируется поразрядно по модулю 2 в сумматоре СМ5 со вторым блоком
открытых данных Т0(2): Тш(2) = Гш(2) Т0(2).
Аналогично вырабатываются блоки гаммы шифра Гш(3), Гш(4),…,
Гш(m) и зашифровываются блоки открытых данных Т0(3), Т0(4),… Т0(m).
В канал связи или память ЭВМ передаются синхропосылка Š и блоки
зашифрованных данных Тш(1), Тш(2),… Тш(m).
При расшифровании криптосхема имеет тот же вид, что и при
шифровании. Уравнение расшифрования:
Т0(i) = Тш(i) Гш(i) = Тш(i) А(Yi–1 [+] C2, Zi–1 [+]' C1), i=1…m.
(1.11)
Следует отметить, что расшифровка существует только в том случае,
когда имеется синхропосылка, не являющаяся секретным элементом шифра.
Она может храниться в памяти ЭВМ или передаваться по каналам связи
вместе с зашифрованными данными.
Рассмотрим реализацию процедуры расшифрования. В КЗУ вводят
256 бит ключа, с помощью которого осуществляется зашифрование данных
Т0(1), Т0(2),… Т0(m). В накопители N1 и N2 вводится синхропосылка, и
осуществляется процесс выработки m блоков гаммы шифра Гш(1), Гш(2),…,
Гш(m). Блоки зашифрованных данных Тш(1), Тш(2),… Тш(m).суммируются
поразрядно по модулю 2 в сумматоре СМ5 с блоками гаммы шифра Гш(1),
Гш(2),…, Гш(m). В результате получаются блоки открытых данных Т0(1),
Т0(2),… Т0(m). При этом Т0(m) может содержать меньше 64 разрядов.
18
Шифрование данных в режиме гаммирования с обратной связью
соответствует режиму CFB.
Вид криптосхемы, реализующей алгоритм шифрования в режиме
гаммирования с обратной связью, представлен на рис. 1.4.
ТШ(i–1)
ТШ(i) (ТО(i))
СМ5
ТО(i) (ТШ(i))
+
ГШ(i)
N2
N1
32…
…1
32…
…1
КЗУ
+
X0(K0)
X1(K1)
СМ1
32…
…1
X2(K2)
X3(K3)
X4(K4)
S8
S7
S6
S5
S4
S3
S2
S1
S
X5(K5)
X6(K6)
R
X7(K7)
32…
…1
+
32…
СМ2
…1
Рис.1.4. Схема реализации режима гаммирования с обратной связью
ГОСТ 28147-89
Открытые данные, разбитые на 64-разрядные блоки Т0(1), Т0(2),…, Т0(m),
зашифровываются в режиме гаммирования с обратной связью путем
поразрядного сложения по модулю 2 с гаммой шифра Гш, которая
вырабатывается блоками по 64 бита:
19
Гш=(Гш(1), Гш(2),…, Гш(i),…, Гш(m)).
(1.12)
При расшифровании криптосхема имеет тот же вид, что и при
шифровании. Уравнения расшифрования:
Т0(1) = А(Š) Тш(1) = Гш(1) Тш(1),
Т0(i) = А(Тш(i-1)) Тш(i) = Гш(i) Тш(i), i=2…m.
(1.13)
Для блоков гаммы шифровании производится поразрядное сложение
по модулю 2 в сумматоре СМ5 с блоками зашифрованных данных Тш(3),
Тш(4),…, Тш(m). В результате получают блоки открытых данных Т0(3), Т0(4),…,
Т0(m), при этом последний блок открытых данных Т0(m) может включать
меньше 64 разрядов.
Далее применяют сложение по модулю 2 полученного 64-разрядного
числа А(Т0(1)) со вторым блоком открытых данных Т0(2).
Сумма (А(Т0(1)) Т0(2)) вновь подвергается преобразованию А().
Имитовставка ИР передается по каналу связи или в память ЭВМ в
конце зашифрованных данных, т.е. Тш(1), Тш(2),…, Тш(m), ИР.
Поступившие к получателю зашифрованные данные Тш(1), Тш(2),…,
Тш(m) расшифровываются, и из полученных блоков открытых данных Т0(1),
Т0(2),…, Т0(m) аналогичным образом вырабатывается имитовставка ИР. Эта
имитовставка ИР сравнивается с имитовставкой ИР , полученной вместе с
зашифрованными данными из канала связи или из памяти ЭВМ. В случае
несовпадения
имитовставок
полученные
при
расшифровании
открытых данных Т0(1), Т0(2),…, Т0(m) считают ложными [1].
1.2 Обзор и анализ обучающих программ
блоки
20
Когда мы говорим об обучающих или учебных программах, то имеем в
виду программные продукты, специально разработанные для использования
в целях обучения независимо от учебного предмета, объёма изучаемого
материала, структуры и других показателей как технического, так и
методического планов, - и создающих систему учебных компьютерных
заданий. К таким программам относятся различные виды компьютерных
дидактических материалов: электронные учебники, автоматизированные
учебные
курсы,
тренировочные,
контролирующие
программы,
автоматизированные обучающие системы. Именно наличие системы заданий
отличает компьютерные учебные пособия и обучающие программы от
разнообразных
прикладных
программ,
использующихся
в
обучении
(например, редакторы текстов, электронные таблицы и т. д.). Обучающие
программы и компьютерные учебные пособия занимают центральное место в
программном обеспечении той или иной дисциплины.
функциональность (functionality);
надёжность (reliability);
лёгкость и простота использования (usability);
эффективность (efficiency);
удобство сопровождения (maintainability);
переносимость (portability).
Достоинство компьютерных программ учебного назначения в том, что
учебный
материал
–
хорошо
иллюстрирован,
мобилен,
вариативен;
программы должны помогать преподавателю контролировать и регулировать
индивидуальный
процесс
усвоения,
учитывать
различные
уровни
подготовленности обучающихся, в большей степени концентрировать
внимание на изучаемом материале.
Криптографический метод защиты, является одним из самых надежных
методов защиты, так как защищена сама информация, а не доступ к ней.
21
Зашифрованный файл нельзя прочесть даже в случае кражи носителя.
Данный метод защиты реализуется в виде программ или пакетов программ.
В настоящее время существует множество программ и обучающих
программ для защиты и криптографического преобразования информации.
Обучающие программы важны, чтобы студенты, обучающиеся в сфере
информационных технологий, могли освоить методы защиты информации,
алгоритмы
криптографического
преобразования,
для
использования
программ так и написания своих собственных.
Основным назначением использования криптографических методов
является передача конфиденциальной информации по каналам связи
установление подлинности передаваемых сообщений, хранение информации
(документов, баз данных) на носителях в зашифрованном виде.
Нами
была
проанализирована
программа
шифрования
DES.
Основными достоинствами алгоритма DES является использование только
одного ключа длиной 56 бит. Зашифровав сообщение с помощью одного
пакета, для расшифровывания мы можем использовать любой другой, также
алгоритм относительно прост и обеспечивает высокую скорость обработки
информации, достаточно высокая устойчивость алгоритма.
Рис. 1.5. Основное окно программы DES
22
DES осуществляет шифрование 64-битовых блоков данных с помощью
56-битового ключа, а расшифровывается DES,
операциями обратного
шифрования и реализуется повторяя операции шифрования в обратной
последовательности.
Рис. 1.6. Шифрование и дешифрование
Рис. 1.7 . Ввод исходных данных в тесте
23
Рис.1.8. Пример теста
Программа DES имеет режим теста, в котором для прохождения теста
пользователю
необходимо
ввести
шифруемое
сообщение
и
ключ
шифрования. Размер шифруемого сообщения и ключа равен 8 битам. В поле
ввода пользователь вносит шифруемое сообщение и ключ, после чего на
форме выводится
зашифрованный результат. После прохождения теста
может вывестись сообщение об ошибке, с просьбой ввести длину
шифрования сообщения и ключа шифрования 8 бит. В режиме шифрования и
дешифрования, пользователь вводит ключевое слово и сообщение для
шифровки или дешифровки. Действия шифрования и дешифрования
происходят по соответствующим кнопкам. Результат выводится на форме.
Кнопка выход возвращает пользователя в меню.
Кнопка «Помощь» открывает пользователю справку, где можно
подробнее изучить функции шифрования в программе.
24
Таким образом, программа даёт представление пользователю о работе
шифрования DES. Наглядно показывает, как происходит шифрование,
дешифрование, ввод ключа. К минусам можно отнести то, что программа не
достаточно подробно описывает пользователю работу шифрования и
дешифрования, имеет мало теоретических данных и не описывает все
действия программы.
Мы можем сделать вывод, что необходимо подробнее сделать указания
пользователю при шифровании и дешифровании. Более подробно описать
функции программы и режима шифрования, сделать более понятный
интерфейс и наличие теоретического материала.
В ходе создания данной выпускной квалификационной работы, нами
было определено, что защита информации является важным аспектом
современных
информационных
технологий.
Программы
в
области
криптографического преобразования как специальных методов шифрования
или других видов преобразования информации, используются для защиты
информации.
В
результате
преобразования,
содержание информации
становится недоступным без предъявления ключа криптограммы и обратного
преобразования.
Рассмотрим ещё одну программу реализующую обучения по режимам
шифрования ГОСТ. Программа разработана для обучения пользователей
программы, работе с режимами шифрования. Главное окно представлено на
рисунке.
Пользователь может выбрать один из режимов шифрования и перейти
к обучению. Режим обучения шифрованию простой замены представелен на
рисунке 1.10.
25
Рис. 1.9.Меню программы
Рис. 1.10. Режим простой замены
Программа реализует так же и режим гаммирования. Он аналогично
предыдущему, предоставляет пользователю возможности обучения данному
режиму. Шифрование при помощи наложения на данные криптографической
гаммы, т.е. последовательности элементов данных, вырабатываемых с
помощью криптографического алгоритма, помогает избавится от недостатка
26
режима простой замены - одни и те же 64 битовые блоки при простой замене
будут зашифровываться одинаково.
Рис. 1.11. Режим гаммирования
Режим иммитовставки, инициализируется нулевыми битами. Далее, из
блока S получится искомая иммитовставка. Для поиска искажений
искажений
в
зашифрованных
данных
в
ГОСТе
предусмотрен
дополнительный режим криптографического преобразования - выработка
имитовставки. Имитовставка - это контрольная комбинация, зависящая от
открытых данных и секретной ключевой информации. В программе имеется
описание метода и наглядно показана его реализация.
27
Рис.1.12 Выработка имитовставки
1.3 Требования к обучающей программы
В ходе выпускной квалификационной работы нами были выделены
требования к функциональным характеристикам. Программа ГОСТ должна
иметь понятный и удобный интерфейс, содержать материал для изучение
пользователем. Зашифрованное сообщение должно поддаваться чтению
только при наличии ключа. Знание алгоритма шифрования не должно влиять
на надежность защиты. Структурные элементы алгоритма шифрования
должны быть неизменными. Длина шифрованного текста должна быть
равной
длине
исходного
текста.
Алгоритм
должен
допускать
как
программную, так и аппаратную реализацию, при этом изменение длины
ключа не должно вести к качественному ухудшению алгоритма шифрования.
Материал программы должен быть направлен не только на
запоминание, но и понимание учебного материала. Программа должна
учитывать уровень подготовки, возраст и индивидуальные особенности
обучаемых.
28
Программы должны вести учёт работы каждого обучаемого и давать
рекомендации по оптимальной организации его работы в той или иной
области знаний.
Разработаем требования на создание обучающей системы по режимам
шифрования
ГОСТ
28147-89.
Система
предназначена
для
освоения
студентами режимов шифрования.
Введение технического задания
Настоящее техническое задание распространяется на разработку
обучающей
программы
по
режимам
шифрования
ГОСТ
28147-89,
предназначенной обучения студентов. Предполагается, что использовать
данную
систему
будут
студент
обучающиеся
на
технических
специальностях, связанными с информационными технологиями.
Во
время
изучения
темы
криптографического
кодирования
и
шифрования либо подготовки к сессии необходимо получить практические
навыки по данным темам. К тому же необходимо иметь удобную среду для
изучения практических аспектов темы криптографии и закрепления навыков
обучающей программы по режимам шифрования ГОСТ 28147-89 позволит
улучшить
качество
обучения
студентов
по
теме
шифрования
и
криптографии, подходит как для работы в учебной аудитории, так и для
самостоятельной работы.
Назначение разработки
Система
предназначена
для
обучения
студентов, по
режимам
шифрования ГОСТ 28147-89. Программа может быть использована для
обучения как одного студента, так и группы в целом.
Требования к функциональным характеристикам
Система должна обеспечивать возможность выполнения следующих
функций:
инициализацию
системы
(материал
программы
должен
соответствовать материалу изучаемых дисциплин в соответствии с учебными
планами и т. п.);
29
ввод
и
коррекцию
текущей
информации
содержащейся
в
программе, возможность дополнения программы;
хранение информации ключей исходных данных и зашифрованного
файла;
получение сведений об изучаемой теме, помощь работы в
программе.
Исходными данными являются:
файл ключа;
исходный файл для шифрования сообщения, содержащий массив
данных;
режимы шифрования.
Результаты:
файл с зашифрованным текстом;
результаты вычислений программы по режимам шифрования.
Требования к надежности
Требования к обеспечению надежного функционирования программы:
предусмотреть контроль вводимой информации;
предусмотреть блокировку некорректных действий пользователя
при работе с системой;
обеспечить целостность хранимой информации.
Требования к составу и параметрам технических средств
Система должна работать на IBM совместимых персональных
компьютерах.
Минимальная конфигурация:
тип процессора – AMD и выше;
объем оперативного запоминающего устройства – 1024 Мб и более.
Требования к информационной и программной совместимости
Система должна работать под управлением семейства операционных
систем Windows.
30
Требования к программной документации.
Разрабатываемые
программные
модули
должны
быть
самодокументированы, т. е. тексты программ должны содержать все
необходимые комментарии.
Программная система должна включать справочную информацию о
работе и подсказки пользователю.
В состав сопровождающей документации должны входить:
пояснительная записка на 25-30 листах, содержащая описание
разработки;
руководство системного программиста;
руководство пользователя.
31
2. ПРОЕКТИРОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
2.1 Предварительное проектные решения
Средствами создания программных приложений являются -локальные
средства, обеспечивающие выполнение различных видов работ по созданию
программ. Средствами могут быть - языки и системы программирования и
инструментальная среда пользователя.
Была реализована обучающая программа ГОСТ, разработанная в среде
визуального. Объектно-ориентированного обучения. В этой среде наиболее
удобно реализовать необходимые нам функции – шифрование, переход
между формами, запись в файл, функция обучения.
В качестве языка программирования для реализации данной выпускной
квалификационной работы нами был выбран язык программирования С++ —
компилируемый статически
типизированный язык
программирования
общего назначения. Именно этот язык наиболее подходит для автоматизации
информационной системы, и реализации режимов шифрования ГОСТ, так
как С++ успешно используется во многих областях приложения, далеко
выходящих за указанные рамки и позволяет создавать как простые
приложения и утилиты, так и коммерческие системы.
Стоит отметить, что язык программирования С++, позволяет более
эффективно программировать на уровне битов и шифровать биты. Имеет
размер для ключа 256 бит. К примеру, для реализации web приложения
данные функции не удобны, так как нужно иметь постоянный доступ к
серверу, где хранятся данные для шифрования. Шифрование может быть не
стабильно и имеет меньшую скорость, затраты на такое приложение могут
быть выше. Для обучения студентов вариант приложения на языке
32
программирования С++ более удобен, т.к. проще администрировать, не
нужно иметь доступ к серверу.
Язык C++ поддерживает как процедурное программирование, так и
объектно-ориентированное программирование, обеспечивает модульность,
раздельную компиляцию, обработку исключений, абстракцию данных,
объявление типов (классов) объектов, виртуальные функции. Стандартная
библиотека включает, в том числе, общеупотребительные контейнеры и
алгоритмы.
C++
низкоуровневых
языком C, —
сочетает
языков.
наибольшее
свойства
В
как высокоуровневых,
сравнении
внимание
с
его
уделено
так
и
предшественником —
поддержке
объектно-
ориентированного и обобщённого программирования.
C++ широко используется для разработки программного обеспечения,
являясь одним из самых популярных языков программирования. Область его
применения
включает
создание операционных
систем,
разнообразных
прикладных программ, драйверов устройств, приложений для встраиваемых
систем, высокопроизводительных серверов, а также развлекательных
приложений (игр). Существует множество реализаций языка C++, как
бесплатных, так и коммерческих и для различных платформ. Например, на
платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero
(Borland) C++ Builder и другие. Синтаксис C++ унаследован от языка C.
Одним из принципов разработки было сохранение совместимости с C. Тем не
менее, C++ не является в строгом смысле надмножеством C; множество
программ,
которые
могут
одинаково
успешно
транслироваться
как компиляторами C, так и компиляторами C++, довольно велико, но не
включает все возможные программы на C.
Также C++ — чрезвычайно мощный язык, содержащий средства
создания эффективных программ практически любого назначения, от
низкоуровневых утилит и драйверов до сложных программных комплексов
самого различного назначения.
33
В
процессе
рассмотрения
языков
программирования
и
программных средств, нами была выбрана среда Borland C++ Builder 6. Было
решено разрабатывать визуальную программу. Среда имеет удобный
интерфейс, части одного приложения могут быть созданы с помощью двух
средств C++BuiIder, и Delphi. C++Builder предоставляет программисту
широкие возможности повторного использования кода за счет наличия
библиотеки компонентов. Эффективность реализации и отладки приложений
и программ достигается не только за счет применения средств визуального
проектирования, но и за счет, во-первых, высокой производительности самих
компиляторов
Borland
и,
во-вторых,
так
называемой
инкрементной
компиляции и компоновки исполняемого модуля, когда перекомпиляции и
перекомпоновке подвергаются только те модули, в которые были внесены
изменения.
2.2. Проектирование модульной структуры программы
При проектировании обучающей программы, были выделены модули
программы. Программа имеет следующие модули. Главное меню программы,
откуда мы будем переходить к режимам шифрования и страницы с помощью
пользователю, режимы простой замены, гаммирования, гаммирования с
обратной связью, выработки имитовставки. Данные модули были выбраны
исходя из целей и требований к разработке обучающей программы по
режимам шифрования. Структура модулей программы представлена виде
структурной схемы Константайна (рис. 2.1).
С формы модулей режимов
пользователь возвращается на главную страницу к главному меню
программы.
Нами были разработаны отдельные модули программы. Главное окно,
является основным для перехода к режимам шифрования программы и
34
другим модулям. По нажатию кнопки режима, главное окно формы
закрывается и открывается новое окно.
Рис. 2.1. Структурная схема Константайна
Рассмотрим блок-схемы отдельных модулей, алгоритм зашифрования
данных в режиме простой замены представлен на рисунке 2.2
Рис. 2.2 Режим простой замены
35
Отдельный модуль реализующий зашифрование и расшифрование
методом гаммирования, модель метода реализует блок-схема представлен на
рисунке 2.3.
Рис. 2.3 Режим гаммирования
Блок-схема реализации шифрования методом гаммирования с
обратной связью представлена на рисунке 2.4.
Рис. 2.4 Режим гаммирования с обраной связью
36
Следующий модуль выработки имитовставки представлен на блок-схеме
(рис. 2.5).
Рис. 2.5 Режим выработки имитовставки
2.3 Программная реализация
В ходе выпускной квалификационной работы, нами была разработана
обучающая программа по режимам шифрования ГОСТ 28147-89. В
программе реализованы следующие режимы шифрования: режим простой
замены, гаммирования, гаммирования с обратной связью, также есть
возможность вычисления имитовставки и синхропосылки. Программа
считывает шифруемый (исходный) файл, считывает ключ (файл ключа),
заносит результат в зашифрованный файл.
Шифрование содержания исходного текстового файла c расширением
txt с получением текстового файла, символы которого являются символами
исходного файла, преобразованными по алгоритму шифрования методом
открытого ключа.
37
Дешифровка содержания текстового файла по алгоритму шифрования
методом открытого ключа с получением текстового файла, символы которого
являются символами исходного текстового файла.
Программа
предназначена
для
студентов
ВУЗов,
изучающих
информационные компьютерные технологии, и реализует возможность
изучения криптографических преобразований в различных режимах.
Переход к режимам шифрования осуществвляется с главного окна
(Рис.3.1).
Режим шифрования простой заменой - это шифрование при помощи
одного цикла зашифровки. Фактически, цикл зашифровки и простая замена одно и то же понятие. Этот режим шифрования является базовым. Его
необходимо освоить в первую очередь, поскольку в остальных режимах
(гаммирование) он будет использоваться. Для режима простой подстановки
должен быть задан ключ и таблица замен. По умолчанию, они заданы в
файлах key.txt и tz.txt соответственно. Разумеется, вы можете их изменить
или загрузить свои файлы (Рис.3.2).
Шифрование при помощи наложения на данные криптографической
гаммы, т.е. последовательности элементов данных, вырабатываемых с
помощью криптографического алгоритма. Это позволяет избавится от
недостатка простой замены(одни и те же 64 битовые блоки при простой
замене будут зашифровываться одинаково).
Отличается от гаммирования тем, что очередной элемент гаммы
вырабатывается как результат преобразования по циклу зашифровки
предыдущего блока зашифрованных данных, а для зашифрования первого
блока массива данных элемент гаммы вырабатывается как результат
преобразования по тому же циклу синхропосылки (Рис.3.3).
Для решения задачи обнаружения искажений в зашифрованном
массиве данных с заданной
вероятностью в ГОСТе предусмотрен
дополнительный режим криптографического преобразования - выработка
38
имитовставки. Имитовставка - это контрольная комбинация, зависящая от
открытых данных и секретной ключевой информации
Программа имеет удобный интерфейс, позволяющий работать с ней
пользователям любого уровня.
Описание пунктов меню:
Кнопки режимы шифрования: режим простой замены, гаммирования,
гаммирования с обратной связью, также есть возможность вычисления
имитовставки и синхропосылки.
Ввод ключа.
Ввод исходного текста.
Выход - для выхода из программы.
В программе требуется ввести ключ и нажать на одну из кнопок
режима , после нажатия на которую пользователь перейдёт на другую форму
с конкретным режимом. Из новой формы есть возможность вернуться назад к
меню. В каждом из меню есть текстовое поле с теоретическим материалом,
для более подробного изучения и описания режима, и текстовое поле в
которое выводится результат.
Листинг 2.1. Фрагмент листинга реализации метода шифрования
простой замены
char s[50]; char massiv[100][100]; int b,c; int count = 0;
setlocale(LC_ALL, "rus");
for(int i=0; i<b; i++)
for(int j=0; j<c; j++)
{ massiv[i][j]=s[count]; count++;
}}
for(int j=0; j<c; j++) {
for(int i=0; i<b; i++) {
if(massiv[i][j] >= 'a' && massiv[i][j] <= 'z')
}}
Зашифрование в режиме простой замены заключается в применении
цикла к блокам открытых данных, расшифрование – цикла 32-Р к блокам
зашифрованных данных. Это наиболее простой из режимов, 64-битовые
39
блоки данных обрабатываются в нем независимо друг от друга. Схемы
алгоритмов зашифрования и расшифрования в режиме простой замены
приведены на рисунках 3а и б соответственно, они тривиальны и не
нуждаются в комментариях.
Размер
массива
подвергающийся
открытых
соответственно
или
зашифрованных
зашифрованию
или
данных,
расшифрованию,
должен быть кратен 64 битам: |Tо|=|Tш|=64·n, после выполнения операции
размер полученного массива данных не изменяется.
Алгоритм программы метода шифрования Гаммирования заключается
в следующем:
При
открытии
файла
код
каждого
символа
запоминается
в
целочисленном массиве;
в соответствии с введёнными пользователем значениями p и q (или
значениями,
используемыми
по
умолчанию)
вычисляются
и/или
подбираются значения всех остальных чисел, участвующих в формировании
ключа и формулах за- и расшифровывания;
Тогда (ar, mod n) может быть вычислено помощью не более k-1
произведений и сведением каждого произведения по модулю n. Таким
образом, достаточно вычислить числа, которые требуют k модульных
возведения в квадрат и дополнительно не более k –1 модульных
произведений. Это означает, что вычисляется не более 2k – 1 произведений с
обоими множителями, меньшими, чем n, и сведением произведений по
модулю n. Если r является большим и известно m, то r может быть вначале
взято по модулю
Этот режим очень похож на режим гаммирования и отличается от него
только путем создания элементов шкалы - это еще один элемент диапазона,
созданного в результате цикла преобразования 32-S предыдущего блока
зашифрованных данных, и для кодирования элемента массива данных
первого блока в диапазоне генерируется как результат преобразования в том
же синхротронном цикле. Это достигается за счет включения блоков -
40
каждый
блок
зашифрованного
текста
в
этом
режиме
зависит
от
соответствующего и всех предыдущих блоков открытого текста. Таким
образом, этот режим иногда называют блоками крюка для молотка. Сила
шифрования заключается в том, что блоки захвата не влияют.
Для решения проблемы обнаружения искажений в зашифрованном
массиве данных с заданной вероятностью в Госте, криптографическая
трансформация дополнительного режима - разработка. Иммитовставка - это
комбинация управления, которая зависит от открытых данных и информации
секретного ключа. Цель использования метода - обнаружить любые
случайные или преднамеренные изменения данных. Проблема, изложенная в
предыдущем
абзаце,
может
быть
решена
путем
добавления
к
зашифрованным данным. Для потенциального злоумышленника следующие
две проблемы практически неразрешимы, если у него нет ключевой
информации, такой как расчет иммитовставки для указанной информации
открытого массива и подбор открытых данных под заданную имитовставку.
В качестве имитовставки берется часть блока, полученного на выходе,
обычно 32 его младших бита. При выборе размера имитовставки надо
принимать во внимание, что вероятность успешного навязывания ложных
данных равна величине 2–|И| на одну попытку подбора. При использовании
имитовставки размером 32 бита эта вероятность равна 2–32»0.23·10–9.
Данная программа написана на языке C++ в соответствии с
принципами структурного программирования и представляет собой набор
процедур и функций, выполняющих определенные действия основной
программы, осуществляющей синхронизацию процесса обработки данных и
вызов соответствующих функций. Такой подход к написанию программ
позволяет с высокой степенью эффективности осуществлять их отладку, а
также, изменять их функциональные возможности, так как в данном случае
за каждую операцию, выполняемую программой, отвечает относительно
автономная подпрограмма (процедура или функция).
41
Рассматриваемая программа предусматривает работу в диалоге с
пользователем.
Основная программа представляет собой три этапа: подготовка к
работе, сама работа и её завершение.
Алгоритм основной программы заключается в инициализации модулей
программы и, в зависимости от выбора пользователя, управление передаётся
одной из процедур или функций, находящейся в определённом модуле, либо
осуществляется выход из программы. Все функции работают автономно и
требуют для работы вызова основных модулей библиотеки.
Процедуры по обработке данных требуют предварительного введения
исходных данных из файла.
Таким образом, с точки зрения пользователя программа представляет
собой исполняемый EXE файл и два модуля небольшого размера. Для
запуска программы используется EXE файл, действующий под управлением
операционной системы Windows. Программный интерфейс программы
представляет собой меню, из которого происходит доступ ко всем
процедурам и функциям программы.
С точки зрения программиста программный продукт представляет
собой структурированную программу на языке C++, хранящуюся в пяти
исходных файлах, один из которых является главным и содержит код
инициализации модулей, а четыре других являются модулями, содержащими
основные
процедуры
и
функции,
выполняющие
вычисления
для
преобразования символов. Таким образом, в текст программы, кроме
основных подпрограмм управления процессом обработки информации и
создающих интерфейс, входят следующие процедуры и функции:
Процедура вычисления n и m; в этой же процедуре находится d –
взаимно обратное число с m и вычисляется e;
Функция
для
осуществляющая
описанный выше;
работы
алгоритм
с
большими
последовательного
числами,
т.е.
возведения
функция,
в
квадрат,
42
функция возведения в степень (результат не должен превышать
значение 9*1018);
Находясь в программе, пользователь может узнать об объекте,
расположенном на форме, направив курсор мыши на данный объект. При
этом около курсора мыши появится всплывающее меню с краткой
информацией о данном объекте, а более полная информация буде
отображаться на информационной панели, находящейся в нижней части
формы. В правой части формы находится комплекс для выбора и просмотра
того или файла. Просмотр файла осуществляется путём нажатия на клавишу
View; при этом данные будут отображаться в окне просмотра информации.
43
3. АПРОБАЦИЯ ОБУЧАЮЩЕЙ ПРОГРАММЫ ПО
РЕЖИМАМ ШИФРОВАНИЯ ГОСТ 28147
3.1 Программа и методика испытаний
Чтобы выявить несоответствия между требованиями и разработанной
программой, проведём испытание программного обеспечения.
После того как программное обеспечение было спроектировано и
разработано, необходимо его протестировать, чтобы убедиться в отсутствии
ошибок, а также
проверить функциональность, требуемой постановкой
задачи.
Цель проведения испытаний - проверка соответствия характеристик
разработанной программного обеспечения функциональным и отдельным
иным видам требований, изложенным в требованиях к разрабатываемой
программе.
Необходимо проверить:
Соответствует ли программа заданию и требованиям. При проведении
испытаний функциональные характеристики или возможности программы
подлежат проверке на соответствие требованиям, изложенным в п.
«Требования к составу выполняемых функций» технического задания
Проверить комплектность и качества материала программы;
Установить, кто будет испытывать программу;
Проверка соответствия программы требованиям функционального
назначения.
Необходимо установить, соответствует ли программа поставленным
целям для кого будет использоваться и кем испытываться.
Необходимо
проверить
требования
характеристикам. Обеспечивает ли программа
функций
инициализации
системы
к
функциональным
возможность выполнения
(материал
программы
должен
44
соответствовать материалу изучаемых дисциплин в соответствии с учебными
планами и т. п.), ввод и коррекцию текущей информации содержащейся в
программе, возможность дополнения программы, хранение информации
ключей исходных данных и зашифрованного файла, получение сведений об
изучаемой теме, помощь работы в программе.
Необходимо произвести проверку исходных данных. Файл ключа,
исходный файл для шифрования сообщения, содержащий массив данных,
режимы шифрования.
Проверить выполнены ли требования к результатам программы,
требования
к
надежности,
функционирования
информации,
требования
программы,
предусмотреть
к
обеспечению
предусмотреть
блокировку
надежного
контроль
вводимой
некорректных
действий
пользователя при работе с системой, обеспечить целостность хранимой
информации.
3.2 Результаты испытаний
Проведем последовательно тестирование всех заявленных функций.
Для этого предлагается следующий план действий:
Открыть программу;
Отрыть вкладки помощь для изучения работы программы;
Выбрать режим шифрования;
Запуск процесса шифрования;
Сохранение зашифрованного текста в файл;
Сравнение результатов кодирования и исходной информации;
Открытие зашифрованного файла;
Сверить зашифрованный файл исходной;
Выход в меню;
Выход из программы
45
Повторный запуск программы;
Выполнить все вышеперечисленные действия с разными режимами
шифрования.
Были проверены отдельные модули программы. После запуска
программы
открывается
главное
окно
программы,
в
данном
окне
представлено меню для выбора модулей программы, при нажатии на кнопку
режима, пользователь может перейти к нужному режиму шифрования,
простой замены, гаммирования, гаммирования с обратной связью, выработки
имитовставки, помощь. Кнопка Выход, завершает работу программы и
закрывает главное окно.
Рис.3.1 основное окно программы
При открытии окна одного из режимов шифрования, например метода
шифрования простой замены (рис. 3.2), выводится блок-схема описывающая
работу режима, текстовое описание метода, в текстовое поле вводится ключ
и происходит зашифрование. Результат выводится в отдельный файл.
46
Рис.3.2. Метод простой замены
Все отдельные модули были проверены, выполнения программы
прошло в соответствии с поставленными ранее требованиями к обучающей
программе. Проверены ключи программы, входные и выходные данные. На
рисунках представлены результаты компиляции программы и отдельных
модулей.
В методе гаммирования и гаммирования с обратной связью исходными
данными является данные для шифровки и синхропосылка. На форме также
отображается краткое описание данных методов шифрования и блок-схема,
данные выводятся в отдельный файл и на форме в компонент «label».
47
Рис.3.3. Метод гаммирования с обратной связью.
Форма реализующая режим вырабоки иммитовставки также была
проверена в ходе испытнаий программного обеспечения, данные вводнятся в
текстовое поле компонент «Edit», содеожится краткое теоретическое
описание метода вывод происходит в файл. Данная форма соответвтует
заданным требоаниям к программному обеспечению.
Рис.3.4. Метод выработки имитовставки.
48
Таким образом, можно сделать вывод, что программа работает
корректно,
как
и
все
заявленные
функции
данного
программного
обеспечения.
Были
соблюдены
требования
к
обеспечению
надежного
функционирования программы, предусмотрен контроль работы в программе,
блокировка некорректных действий пользователя при работе с системой,
была обеспечена целостность хранимой информации.
Материал программы соответствует материалу изучаемых дисциплин,
дополняя традиционное обучение;
Программа имеет удобный дружественный интерфейс, легка в
использовании, имеется помощь при работе с программой и содержит
небольшую часть теоретического материала.
Хранение информации ключей исходных данных и зашифрованного
файла, файл с зашифрованным текстом, хранятся в отдельных файлах,
пользователи программы имеют возможность получения сведений об
изучаемой теме, и помощи работы с программным обеспечением.
49
ЗАКЛЮЧЕНИЕ
Данная программа разработана в соответствии с постановкой задачи
разработка обучающей программы по режимам шифрования ГОСТ 28147-89.
При написании программы использовалась информация ГОСТа 28147-89,
был сделан его обзор, изучены методические указания. В ходе работы были
раскрыты возможности режимов ГОСТ в качестве средств обучения, изучены
средства информационных технологий для проектирования обучающей
программы ГОСТ 28147-89, были рассмотрены средства для разработки
компьютерной обучающей программы, выявлены и реализованы требования
для реализации обучающей программы, обоснован выбор средств, для
собственно программы.
Было
произведено
сравнение
с
другими
программами, например программа DES или обучающая программа ГОСТ,
находящаяся в свободных источниках.
Разработана
и
экспериментально
протестирована
обучающая
программа по режимам шифрования ГОСТ 28147-89. Интерфейс программы
удобен для использования. Выходные данные представлены в виде
текстового файла. По своей структуре программа хорошо организована, что
позволяет в случае необходимости легко ее модифицировать. Для проверки
работоспособности программы и правильности обработки входных данных
разработан тестовый пример. Тестирование программы подтвердило, что
программа правильно выполняет обработку данных и выдаёт верные
результаты.
Всё это свидетельствует о работоспособности программы и позволяет
сделать вывод о пригодности программы к использованию её в целях
обучения шифрованию данных.
50
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1.
Винокуров А. Алгоритм шифрования ГОСТ 28147-89, его
использование и реализация для компьютеров платформы Intel x86.
2.
ГОСТ 28147-89. Системы обработки информации. Защита
криптографическая. Алгоритм криптографического преобразования.
3.
Ross Anderson, Markus Kuhn, Tamper Resistance - a Cautionary
Note, proceedings of the Second Usenix Workshop on Electronic Commerce, pp.
1-11, November 1996.
4.
Ross Anderson, Markus Kuhn, Low Cost Attacks on Tamper Resistant
Devices, proceedings of the 1997 Security Protocols Workshop, Paris, April 7-9,
1997.
5.
Eli Biham, New Types of Cryptanalytic Attacks Using Related Keys,
Journal of Cryptology, Vol. 7, No. 4, pp. 229-246, 1994.
6.
Eli Biham, Adi Shamir, Differential Cryptanalysis of the Data
Encryption Standard, Springer-Verlag, 1993.
7.
John Kelsey, Bruce Schneier, David Wagner,
Key-Schedule
Cryptanalysis of IDEA, G-DES, GOST, SAFER, and Triple-DES, Lecture Notes in
Computer Science, Advances in Cryptology, proceedings of CRYPTO'96, pp. 237251,1996. Paul C. Kocher, Timing Attack's on Implementations of Diffie-Hellman,
RSA, DSS, and Other Systems, Lecture Notes in Computer Science, Advances in
Cryptology, proceedings of CRYPTO'96, pp. 104-113, 1996.
8.
Dan Boneh, Richard A. Demillo, Richard J. Lipton, On the
Importance of Checking Cryptographic Protocols for Faults, Lecture Notes in
Computer Science, Advances in Cryptology, proceedings of EUROCRYPT'97, pp.
37-51, 1997.
9.
Brown, Josef Pieprzyk, Jennifer Seberry, LOKI - A Cryptographic
51
Primitive for Authentication and Secrecy Applications, Lecture Notes in
Computer Science, Advances in Cryptology, proceedings of AUSCRYPT'90, pp.
229-236,1990.
10. Xuejia Lai, James L. Massey, Scan Murphy, Markov Ciphers and
Differential Cryptanalysis, Lecture Notes in Computer Science, Advances in
Cryptology, proceedings of EUROCRYPT'91. pp. 17-38, 1991.
11. Susan K. Langford, Martin E. Hellman, Differential-linear cryptanalysis,
Lecture Notes in Computer Science, Advances in Cryptology, proceedings of
CRYPTO'94, pp. 17-25, 1994.
12. Mitsuru Matsui, Linear Cryptanalysis Method for DES Cipher, Lecture
Notes in Computer Science, Advances in Cryptology, proceedings of
EUROCRYPT'93, pp. 386-397, 1993.
13. Ralph C. Merkle, Fast Software Encryption Functions, Lecture Notes in
Computer Science, Advances in Cryptology, proceedings of CRYPTO'90, pp. 476501, 1990.
14. Shoji Miyaguchi, FEAL-N specifications, technical note, NTT, 1989.
15. Advances in Cryptology, proceedings of CRYPTO'90, pp. 627-638,
1990.
16. National Bureau of Standards, Data Encryption Standard, U.S.
Department of
Commerce, FIPS pub. 46, January 1977.
17. Bart Preneel, Marnix Nuttin, Vincent Rijmen, Johan Buelens,
Cryptanalysis of the CFB Mode of the DES with a Reduced Number of Rounds,
Lecture Notes in Computer Science, Advances in Cryptology, proceedings of
CRYPTO'93, pp. 212-223, 1993.
18. Ronald L. Rivest, The RC5 Encryption Algorithm, proceedings of Fast
Software Encryption, Leuven, Lecture Notes in Computer Science, pp. 86-96,
1994.
52
19. Bruce Schneier, Description of a New Variable-Length Key, 64-Bit Block
Cipher (Blowfish), proceedings of Fast Software Encryption, Cambridge, Lecture
Notes in Computer Science, pp. 191-204, 1993.
20. Akihiro Shimizu, Shoji Miyaguchi, Fast Data Encryption Algorithm
FEAL,
Lecture Notes in Computer Science, Advances in Cryptology, proceedings
of EUROCRYPT'87, pp. 267-278. 1987.
53
ПРИЛОЖЕНИЕ
Листинг 1. Главное меню программы.
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma link "sBitBtn"
#pragma link "sButton"
#pragma link "sLabel"
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sButton1Click(TObject *Sender)
54
{
Form2->Show();
Form1->Hide();
}
//--------------------------------------------------------------------------void __fastcall TForm1::sButton2Click(TObject *Sender)
{
Form3->Show();
Form1->Hide();
}
//--------------------------------------------------------------------------void __fastcall TForm1::sButton3Click(TObject *Sender)
{
Form4->Show();
Form1->Hide();
}
//--------------------------------------------------------------------------void __fastcall TForm1::sButton4Click(TObject *Sender)
{
Form5->Show();
Form1->Hide();
}
//--------------------------------------------------------------------------void __fastcall TForm1::sButton5Click(TObject *Sender)
{
Form6->Show();
Form1->Hide();
}
//---------------------------------------------------------------------------
55
Листинг 2. Метод простой замены
{
char s[50];
char massiv[100][100];
int b,c;
StrToInt(Edit1->Text);
int count = 0;
setlocale(LC_ALL, "rus");
for(int i=0; i<b; i++)
{
for(int j=0; j<c; j++)
{
massiv[i][j]=s[count];
count++;
}
}
for(int j=0; j<c; j++)
{
for(int i=0; i<b; i++)
{
if(massiv[i][j] >= 'a' && massiv[i][j] <= 'z')
}
Edit1->Text = IntToStr(a)
}
Листинг 3. Метод гамирования
oid GammaCoding( string &input, string &gamma, string &result )
{
56
result.clear();
for( string::iterator i=input.begin(), j=gamma.begin(); i<input.end(); i++, j++ )
{
if(j==gamma.end()) j=gamma.begin();
int Ti = *i - FIRST_SYMBOL;
int Gi = *j - FIRST_SYMBOL;
result.push_back(FIRST_SYMBOL+(Ti+Gi)%SYMBOL_NUMBER);
}
}
void GammaDecoding( string &input, string &gamma, string &result )
{
result.clear();
for( string::iterator i=input.begin(), j=gamma.begin(); i<input.end(); i++, j++ )
{
if(j==gamma.end()) j=gamma.begin();
int Ci = *i - FIRST_SYMBOL;
int Gi = *j - FIRST_SYMBOL;
result.push_back(FIRST_SYMBOL+(CiGi+SYMBOL_NUMBER)%SYMBOL_NUMBER);
}}
int main()
{
setlocale(LC_ALL, "rus");
string str1, gamma, rez;
string str1_v, gamma_v, rez_v;
GammaCoding( str1, gamma, rez );
GammaDecoding( rez, gamma, str1 );}
Листинг 4. Метод гаммирования с обратной связью
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale( LC_CTYPE,"Russian" ); //включаем поддержку русского языка
57
FILE*f,*f1; //описываем переменные f1, типа file в виде указателей, через них мы
обратимся к файлам типа TXT
f=fopen("in.txt","r"); //открываем файл, с которого будем считывать текст
f1=fopen("out.txt","w"); //открываем файл в который будем записывать текст
char d;
while(d=fgetc(f)!=EOF)
{//поместить сюда цикл гаммирования
fputc(d,f1);
}
fclose(f);
fclose(f1);
Листинг5. Режим выработки имитовставки
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit5.h"
#include "Unit1.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm5 *Form5;
//--------------------------------------------------------------------------__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm5::Button1Click(TObject *Sender)
{
Edit1->Text = IntToStr(e);
v=v<<<1
e=v xor w
58
x=((((e+y) %pow(2,32))۷A۸C)*(x xor Mi))% 2^32-1;
y=((((e+x) % pow(2,32))۷B۸D)*(y xor Mi))% 2^32-1;
StrToInt(Edit2->Text);
Memo1->Lines->Add(IntToStr(e);
}
//--------------------------------------------------------------------------void __fastcall TForm5::Button2Click(TObject *Sender)
{
Form5->Hide();
Form1->Show();
}
//---------------------------------------------------------------------------
Отзывы:
Авторизуйтесь, чтобы оставить отзыв