Разработка программной реализации криптографического алгоритма ГОСТ 28147-89 в режиме гаммирования с обратной связью - Программирование, компьютеры и кибернетика контрольная работа

Разработка программной реализации криптографического алгоритма ГОСТ 28147-89 в режиме гаммирования с обратной связью - Программирование, компьютеры и кибернетика контрольная работа




































Главная

Программирование, компьютеры и кибернетика
Разработка программной реализации криптографического алгоритма ГОСТ 28147-89 в режиме гаммирования с обратной связью

Исследование системы распределения ключей на основе линейных преобразований. Описание компонентов сети конфиденциальной связи. Характеристика отечественного алгоритма шифрования данных. Обзор результатов расчетов криптостойкости алгоритма шифрования.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Тема: «Разработка программной реализации криптографического алгоритма ГОСТ 28147-89 в режиме гаммирования с обратной связью»
1. Постановка задачи на проектирование
2. Описание компонентов сети конфиденциальной связи
2.1 Система распределения ключей на основе линейных преобразований (основная)
2.2 Система распределения ключей на основе алгоритма Диффи и Хелмана (резервная)
2.3 Отечественный алгоритм шифрования данных (ГОСТ 28147-89). Режим гаммирования с обратной связью
3. Данные по скоростным качествам алгоритма шифрования
1. Постановка задачи на проектирование
В соответствии с исходными данными необходимо разработать систему засекреченной связи на основе использования симметричного блочного алгоритма ГОСТ 28147-89 в режиме с обратной связью при этом обеспечить распределение основных сеансовых ключей на основе линейных преобразований, а распределение резервных - с применением алгоритма Диффи и Хелмана.
ГОСТ 28147 - 89 гаммирование с обратной связью;
Число выдерживаемых компрометаций - 6;
(ADC69D1E91EE65C6712E0764E9F2F4C69A80B8EE9D5AFB36DA023A881BAE256F)
4. Количество пользователей конфиденциальной сети -50000;
2. Описание компонентов сети конфиденциальной связи
2.1 Система распределения ключей на основе линейных преобразований. (основная)
1. ЦРК генерирует и рассылает пользователям их открытые ключи:
Р i = (Р i 1 , Р i 2 ,….,Р i L ),
где i=1,2,…,V (количество пользователей);
3. ЦРК генерирует и рассылает по конфиденциальным каналам связи каждому пользователю его секретный ключ:
4. Формирование парного ключа между i и j пользователем происходит следующим образом:
- i пользователь извлекает из запоминающего устройства открытый адрес пользователя j и формирует парный ключ на основе своего секретного ключа S i :
- j пользователь извлекает из запоминающего устройства открытый адрес пользователя i и формирует парный ключ на основе своего секретного ключа S j :
В виду симметричности матрицы Т ключи К ij и K ji будут равными. Далее ключ поступает в ключевое устройство блока шифрации алгоритма ГОСТ 28147-89.
2.2 Система распределения ключей на основе алгоритма Диффи и Хелмана (резервная)
Зашифрование открытых данных в режиме гаммирования с обратной связью.
Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования с обратной связью, имеет вид, указанный на рис. 1.1.
Открытые данные, разбитые на 64-разрядные блоки зашифровываются в режиме гаммирования с обратной связью путем поразрядного суммирования по модулю 2 в сумматоре СМ 5 с гаммой шифра Г ш , которая вырабатывается блоками по 64 бита, т.е. где М определяется объемом открытых данных, _ i-й 64-разрядный блок, Число двоичных разрядов в блоке может быть меньше 64.
В КЗУ вводятся 256 бит ключа. Синхропосылка S = (S 1 , S 2 ,..., S 64 ) из 64 бит вводится в N 1 и N 2 . Исходное заполнение N 1 и N 2 зашифровывается в режиме простой замены. Полученное в результате зашифрования заполнение N 1 и N 2 образует первый 64-разрядный блок гаммы шифра который суммируется поразрядно по модулю 2 в сумматоре СМ 5 с первым 64-разрядным блоком открытых данных
В результате получается 64-разрядный блок зашифрованных данных
Блок зашифрованных данных одновременно является также исходным состоянием N 1 , N 2 для выработки второго блока гаммы шифра и по обратной связи записывается в указанные накопители. При этом значение вводится в 1-й разряд N 1 , значение вводится во 2-й разряд N 1 и т.д. значение вводится в 32-й разряд N 1 ; значение вводится в 1-й разряд N 2 , значение вводится во 2-й разряд N 2 и т.д., значение вводится в 32-й разряд N 2 .
Заполнение N 1 , N 2 зашифровывается в режиме простой замены в соответствии с требованиями ГОСТ 28147-89. Полученное в результате зашифрования заполнение N 1 , N 2 образует второй 64-разрядный блок гаммы шифра , который суммируется поразрядно по модулю 2 в сумматоре СМ 5 со вторым блоком открытых данных
Выработка последующих блоков гаммы шифра и зашифрование соответствующих блоков открытых данных производится аналогично. Если длина последнего М-го блока открытых данных меньше 64 разрядов, то из используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
Уравнения зашифрования в режиме гаммирования с обратной связью имеет вид:
В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных
Расшифрование зашифрованных данных в режиме гаммирования с обратной связью.
При расшифровании криптосхема имеет тот же вид (см. рис. 1.1), что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование . Синхропосылка S вводится в N 1 и N 2 .
Исходное заполнение N 1 , N 2 (синхропосылка S) зашифровывается в режиме простой замены. Полученное в результате зашифрования N 1 , N 2 образует первый блок гаммы шифра который суммируется поразрядно по модулю 2 в сумматоре СМ 5 с блоком зашифрованных. В результате получается первый блок данных открытых данных
Блок зашифрованных данных является исходным заполнением N 1 , N 2 для выработки второго блока гаммы шифра . Блок записывается в N 1 , N 2 . Полученное заполнение N 1 , N 2 зашифровывается в режиме простой замены, в результате блок суммируется поразрядно по модулю 2 в сумматоре СМ 5 со вторым блоком зашифрованных данных . В результате получается блок открытых данных
Аналогично в N 1 , N 2 последовательно записываются блоки зашифрованных данных , из которых в режиме простой замены вырабатываются блоки гаммы шифра . Блоки гаммы шифра суммируются поразрядно по модулю 2 в сумматоре СМ 5 с блоками зашифрования данных , в результате получаются блоки открытых данных , при этом длина последнего блока открытых данных может содержать меньше 64 разрядов.
Уравнения расшифрования в режиме гаммирования с обратной связью имеет вид:
Правила суммирования по модулю 2 32 и по модулю (2 32 -1)
1. Два целых числа a, b, где , представленные в двоичном виде
a = (a 32 , a 31 , ... , a 2 , a 1 ), b = (b 32 , b 31 , ... , b 2 , b 1 ),
т.е. a = a 32 2 31 + a 31 2 30 + ... + a 2 2 + a 1 , b = b 32 2 31 + b 31 2 30 + ... + b 2 2 + b 1 ,
суммируются по модулю 2 32 (операция ) по следующему правилу:
a b = a + b - 2 32 , если a + b 2 32
где операция +(-) есть арифметическая сумма(разность) двух целых чисел.
2. Два целых числа a,b, где 0 a, b 2 32 -1, представленные в двоичном виде a = (a 32 , a 31 , ... ,a 2 , a 1 ), b = (b 32 , b 31 , ... ,b 2 , b 1 ),
суммируются по модулю (2 32 - 1) (операция ) по следующему правилу:
a b = a + b - 2 32 +1 , если a + b 2 32 .
3. Данные по скоростным качествам алгоритма шифрования
Листинг программной реализации криптографической системы представлен в приложении 1.
Работа программы осуществляется из командной строки:
где FileName.* - любой файл содержащий шифруемые данные.
Выходными данными работы программы являются:
- FileName.crp - файл с зашифрованным сообщением;
- FileName.dcr - файл с расшифрованным сообщением;
- FileName.key - файл-отчет, содержащий ключевую информацию (резервную и основную), а также некоторые характеристики процесса шифрования;
Вариант содержания файла-отчета FileName.key
== Исходные данные для шифрации == 1. Основные: Адрес первого абонента (№ 31945): ADRESS1 = 9FB2 FB62 44F5 485E E080 250C Адрес второго абонента (№ 25334): ADRESS2 = D15F EC7D 90CD 8F80 35DD 9610 Сеансовые ключи абонентов: К12 = C38D498F9E8DF8A9D077AD4E5606AE8600260E7189E60907011BC088E61C6411 К21 = C38D498F9E8DF8A9D077AD4E5606AE8600260E7189E60907011BC088E61C6411 Cинхропосылка : SYN = 04E21970 10C943E8 2. Резервные: P = 9D1EADC665C691EE0764712EF4C6E9F2B8EE9A80FB369D5A3A88DA02256F1BAE GEN = 76F8746A46E440E32F4E28D91CA73F3D X = 69F143C92C9F64516D4B43560E7C75FD Y = 203F1D35344D054C23D20AFE4FFB2630 Сеансовый ключ: KEY = 6FBC94F893EEE6EFD32B8CBD7F4BF87B9DE7D369FCC1A1BC7F900869C045EA95 Cинхропосылка : SYN = 04E21970 10C943E8 == Характеристики процесса шифрации == Размер сообщения (кбайт) - 9862.410 Время шифрации (в секундах) - 19.670 Скорость шифрации (кбайт/с) - 501.385 Обработка велась в резервном режиме.
При расчете скорости шифрования учитывалось общее время криптографического преобразования исходного сообщения и запись полученной шифрограммы в файл. Программа реализована в среде алгоритмического программирования Borland C++ 5.02, и применение программного языка Assembler позволит увеличить скорость шифрования приблизительно до 1,5 Мб/с. Аппаратная реализация данной системы конфиденциальной связи увеличит скорость до 10 Мб/с и более, что делает предпочтительным применение оптоволоконных линий связи, но повысит расходы на построение сети.
4. Результаты расчетов криптостойкости алгоритма шифрования
шифрование конфиденциальный связь преобразование
При использовании метода линейных преобразований для формирования общего ключа (основной режим) выбор размера используемых матриц определялся исходя из заданного количества выдерживаемых компрометаций (L=6). Таким образом, симметричная матрица Т имеет размерность Т[6,6] и длину каждого элемента матрицы равную длине ключа шифрования (256 бит), используемой в ГОСТ 28147-89. Элементы матрицы генерировались равновероятно и взаимонезависимо.
Адреса абонентов являются векторами вида Р i =(P 1 i ,P 2 i , …,P L i ), где L = 6. Размер каждого элемента адреса равен 16 битам, что определяется максимальным количеством абонентов конфиденциальной сети (2 16 > 50000). Адрес каждого пользователя рассчитывается так, чтобы элементы вектора были линейно-независимыми.
При выполнении данных условий сформированные секретные ключи S i каждого пользователя сети будут также равновероятными и линейно-независимыми, что является необходимым условием криптостойкости на основе заданного числа компрометаций. Если же нарушитель перехватил (или ему стали известны) более 6 секретных ключей и соответствующих им адресов абонентов, то система конфиденциальной связи считается раскрытой, так как могут быть вычислены любые оставшиеся секретные ключи.
При использовании алгоритма Диффи и Хелмана для формирования сеансового ключа (резервный режим) использовались следующие данные:
- Р - большое 256 битовое простое число (модуль);
- g - генератор поля Z p (в КП выбран случайным образом и имеет длину 128 бит, т. е. является корнем из единицы степени N по модулю Р);
- X и Y - случайные числа размерности 128 бит;
- K ij - сеансовый ключ, имеющий длину 256 бит;
Криптостойкость данной схемы распределения основывается на трудности решения задачи дискретного логарифмирования. Для ключа 256 бит задача практически неразрешима. Таким образом, выбор значений N и g имеет существенное влияние на безопасность этой системы. Число (N-1)/2 также должно быть большим простым числом, а число g должно быть генератором большой подгруппы мультипликативной группы по модулю N.
При обмене ключами по незащищенным каналам связи необходимо убедиться, что абонент А получил ключ именно от абонента B, и наоборот. Эта проблема решается с помощью электронной цифровой подписи.
В качестве криптосистемы в рамках курсового проекта используется криптосистема блочного шифрования с обратной связью, которой является алгоритм шифрования ГОСТ 28147-89. Используемая длина ключа равна 256 битам, и определяет криптостойкость данной системы. Достоинством данной схемы шифрования является возможность применения ее для обнаружения манипуляций сообщениями, производимых активными перехватчиками. При этом используется факт размножения ошибок. Однако размножение ошибок можно отнести и к недостаткам такого шифра. Схему шифрования с обратной связью следует применять для криптографического преобразования больших массивов данных (сообщений).
Данная работа не преследует цели реализации реальной системы конфиденциальной связи, а предполагает лишь разработку модели ее функционирования, используя реальные алгоритмы и длины ключей.
Проведенный анализ криптостойкости алгоритмов распределения ключей и алгоритма шифрования данных подтвердил высокую стойкость применения данных схем при построении реальной системы засекреченной связи.
typedef unsigned long DWord; // Двойное слово;
typedef unsigned int Word; // слово;
typedef unsigned char HWord; // Половина слова;
DWord a_in_P_modN (DWord a, DWord r, DWord N);
void ADDFILE (FILE *flow,short ost,DWord MES[2]);
void DICRIMENT (Word P[32],Word Q[32],Word RES[32]);
void MULTIPLE (Word Mn1[16],Word Mn2[16],Word RES[32],Word R);
void X_in_Y_modN (Word a[16],Word r[16],Word MODULE[16],Word RES[16]);
void TAKE_MODULE(Word NUMBER[32],Word OST[16],Word MOD[16]);
void SUMMA (Word P[16],Word Q[16],Word RES[16]);
//--------------Программа реализации алгоритма шифрования ГОСТ 28147-89-------
//--------------в режиме обратной связи на основе алгоритма распределения-------
//--------------ключей c использованием линейных преобразований (основной)-------
//------------------------------и Диффи-Хелмана (запасной)----------------------
//----------------------------------Блок исходных данных-------------------------
Word Y[16]={0x0,},X[16]={0x0,},GEN[16]={0x0,},A_KEY[16],B_KEY[16];
Word P[16]={0x1BAE,0x256F,0xDA02,0x3A88,0x9D5A,0xFB36,0x9A80,0xB8EE,
0xE9F2,0xF4C6,0x712E,0x0764,0x91EE,0x65C6,0xADC6,0x9D1E};
Word ADRESS1[6][16]={{0x0,},},RES1[16]={0x0,},S1[6][16]={{0x0,},};
Word ADRESS2[6][16]={{0x0,},},RES2[16]={0x0,},S2[6][16]={{0x0,},};
Word K12[16]={0x0,},K21[16]={0x0,};
Hword const S[1024] = {0xE4,0xEA,0xE9,0xE2,0xED,0xE8,0xE0,0xEE,0xE6,0xEB,0xE1,0xEC,0xE7,0xEF,0xE5,0xE3,
0xB4,0xBA,0xB9,0xB2,0xBD,0xB8,0xB0,0xBE,0xB6,0xBB,0xB1,0xBC,0xB7,0xBF,0xB5,0xB3,
0x44,0x4A,0x49,0x42,0x4D,0x48,0x40,0x4E,0x46,0x4B,0x41,0x4C,0x47,0x4F,0x45,0x43,
0xC4,0xCA,0xC9,0xC2,0xCD,0xC8,0xC0,0xCE,0xC6,0xCB,0xC1,0xCC,0xC7,0xCF,0xC5,0xC3,
0x64,0x6A,0x69,0x62,0x6D,0x68,0x60,0x6E,0x66,0x6B,0x61,0x6C,0x67,0x6F,0x65,0x63,
0xD4,0xDA,0xD9,0xD2,0xDD,0xD8,0xD0,0xDE,0xD6,0xDB,0xD1,0xDC,0xD7,0xDF,0xD5,0xD3,
0xF4,0xFA,0xF9,0xF2,0xFD,0xF8,0xF0,0xFE,0xF6,0xFB,0xF1,0xFC,0xF7,0xFF,0xF5,0xF3,
0xA4,0xAA,0xA9,0xA2,0xAD,0xA8,0xA0,0xAE,0xA6,0xAB,0xA1,0xAC,0xA7,0xAF,0xA5,0xA3,
0x24,0x2A,0x29,0x22,0x2D,0x28,0x20,0x2E,0x26,0x2B,0x21,0x2C,0x27,0x2F,0x25,0x23,
0x34,0x3A,0x39,0x32,0x3D,0x38,0x30,0x3E,0x36,0x3B,0x31,0x3C,0x37,0x3F,0x35,0x33,
0x84,0x8A,0x89,0x82,0x8D,0x88,0x80,0x8E,0x86,0x8B,0x81,0x8C,0x87,0x8F,0x85,0x83,
0x14,0x1A,0x19,0x12,0x1D,0x18,0x10,0x1E,0x16,0x1B,0x11,0x1C,0x17,0x1F,0x15,0x13,
0x04,0x0A,0x09,0x02,0x0D,0x08,0x00,0x0E,0x06,0x0B,0x01,0x0C,0x07,0x0F,0x05,0x03,
0x74,0x7A,0x79,0x72,0x7D,0x78,0x70,0x7E,0x76,0x7B,0x71,0x7C,0x77,0x7F,0x75,0x73,
0x54,0x5A,0x59,0x52,0x5D,0x58,0x50,0x5E,0x56,0x5B,0x51,0x5C,0x57,0x5F,0x55,0x53,
0x94,0x9A,0x99,0x92,0x9D,0x98,0x90,0x9E,0x96,0x9B,0x91,0x9C,0x97,0x9F,0x95,0x93,
0x75,0x78,0x71,0x7D,0x7A,0x73,0x74,0x72,0x7E,0x7F,0x7C,0x77,0x76,0x70,0x79,0x7B,
0xD5,0xD8,0xD1,0xDD,0xDA,0xD3,0xD4,0xD2,0xDE,0xDF,0xDC,0xD7,0xD6,0xD0,0xD9,0xDB,
0xA5,0xA8,0xA1,0xAD,0xAA,0xA3,0xA4,0xA2,0xAE,0xAF,0xAC,0xA7,0xA6,0xA0,0xA9,0xAB,
0x15,0x18,0x11,0x1D,0x1A,0x13,0x14,0x12,0x1E,0x1F,0x1C,0x17,0x16,0x10,0x19,0x1B,
0x05,0x08,0x01,0x0D,0x0A,0x03,0x04,0x02,0x0E,0x0F,0x0C,0x07,0x06,0x00,0x09,0x0B,
0x85,0x88,0x81,0x8D,0x8A,0x83,0x84,0x82,0x8E,0x8F,0x8C,0x87,0x86,0x80,0x89,0x8B,
0x95,0x98,0x91,0x9D,0x9A,0x93,0x94,0x92,0x9E,0x9F,0x9C,0x97,0x96,0x90,0x99,0x9B,
0xF5,0xF8,0xF1,0xFD,0xFA,0xF3,0xF4,0xF2,0xFE,0xFF,0xFC,0xF7,0xF6,0xF0,0xF9,0xFB,
0xE5,0xE8,0xE1,0xED,0xEA,0xE3,0xE4,0xE2,0xEE,0xEF,0xEC,0xE7,0xE6,0xE0,0xE9,0xEB,
0x45,0x48,0x41,0x4D,0x4A,0x43,0x44,0x42,0x4E,0x4F,0x4C,0x47,0x46,0x40,0x49,0x4B,
0x65,0x68,0x61,0x6D,0x6A,0x63,0x64,0x62,0x6E,0x6F,0x6C,0x67,0x66,0x60,0x69,0x6B,
0xC5,0xC8,0xC1,0xCD,0xCA,0xC3,0xC4,0xC2,0xCE,0xCF,0xCC,0xC7,0xC6,0xC0,0xC9,0xCB,
0xB5,0xB8,0xB1,0xBD,0xBA,0xB3,0xB4,0xB2,0xBE,0xBF,0xBC,0xB7,0xB6,0xB0,0xB9,0xBB,
0x25,0x28,0x21,0x2D,0x2A,0x23,0x24,0x22,0x2E,0x2F,0x2C,0x27,0x26,0x20,0x29,0x2B,
0x55,0x58,0x51,0x5D,0x5A,0x53,0x54,0x52,0x5E,0x5F,0x5C,0x57,0x56,0x50,0x59,0x5B,
0x35,0x38,0x31,0x3D,0x3A,0x33,0x34,0x32,0x3E,0x3F,0x3C,0x37,0x36,0x30,0x39,0x3B,
0x46,0x4C,0x47,0x41,0x45,0x4F,0x4D,0x48,0x44,0x4A,0x49,0x4E,0x40,0x43,0x4B,0x42,
0xB6,0xBC,0xB7,0xB1,0xB5,0xBF,0xBD,0xB8,0xB4,0xBA,0xB9,0xBE,0xB0,0xB3,0xBB,0xB2,
0xA6,0xAC,0xA7,0xA1,0xA5,0xAF,0xAD,0xA8,0xA4,0xAA,0xA9,0xAE,0xA0,0xA3,0xAB,0xA2,
0x06,0x0C,0x07,0x01,0x05,0x0F,0x0D,0x08,0x04,0x0A,0x09,0x0E,0x00,0x03,0x0B,0x02,
0x76,0x7C,0x77,0x71,0x75,0x7F,0x7D,0x78,0x74,0x7A,0x79,0x7E,0x70,0x73,0x7B,0x72,
0x26,0x2C,0x27,0x21,0x25,0x2F,0x2D,0x28,0x24,0x2A,0x29,0x2E,0x20,0x23,0x2B,0x22,
0x16,0x1C,0x17,0x11,0x15,0x1F,0x1D,0x18,0x14,0x1A,0x19,0x1E,0x10,0x13,0x1B,0x12,
0xD6,0xDC,0xD7,0xD1,0xD5,0xDF,0xDD,0xD8,0xD4,0xDA,0xD9,0xDE,0xD0,0xD3,0xDB,0xD2,
0x36,0x3C,0x37,0x31,0x35,0x3F,0x3D,0x38,0x34,0x3A,0x39,0x3E,0x30,0x33,0x3B,0x32,
0x66,0x6C,0x67,0x61,0x65,0x6F,0x6D,0x68,0x64,0x6A,0x69,0x6E,0x60,0x63,0x6B,0x62,
0x86,0x8C,0x87,0x81,0x85,0x8F,0x8D,0x88,0x84,0x8A,0x89,0x8E,0x80,0x83,0x8B,0x82,
0x56,0x5C,0x57,0x51,0x55,0x5F,0x5D,0x58,0x54,0x5A,0x59,0x5E,0x50,0x53,0x5B,0x52,
0x96,0x9C,0x97,0x91,0x95,0x9F,0x9D,0x98,0x94,0x9A,0x99,0x9E,0x90,0x93,0x9B,0x92,
0xC6,0xCC,0xC7,0xC1,0xC5,0xCF,0xCD,0xC8,0xC4,0xCA,0xC9,0xCE,0xC0,0xC3,0xCB,0xC2,
0xF6,0xFC,0xF7,0xF1,0xF5,0xFF,0xFD,0xF8,0xF4,0xFA,0xF9,0xFE,0xF0,0xF3,0xFB,0xF2,
0xE6,0xEC,0xE7,0xE1,0xE5,0xEF,0xED,0xE8,0xE4,0xEA,0xE9,0xEE,0xE0,0xE3,0xEB,0xE2,
0x1D,0x1B,0x14,0x11,0x13,0x1F,0x15,0x19,0x10,0x1A,0x1E,0x17,0x16,0x18,0x12,0x1C,
0xFD,0xFB,0xF4,0xF1,0xF3,0xFF,0xF5,0xF9,0xF0,0xFA,0xFE,0xF7,0xF6,0xF8,0xF2,0xFC,
0xDD,0xDB,0xD4,0xD1,0xD3,0xDF,0xD5,0xD9,0xD0,0xDA,0xDE,0xD7,0xD6,0xD8,0xD2,0xDC,
0x0D,0x0B,0x04,0x01,0x03,0x0F,0x05,0x09,0x00,0x0A,0x0E,0x07,0x06,0x08,0x02,0x0C,
0x5D,0x5B,0x54,0x51,0x53,0x5F,0x55,0x59,0x50,0x5A,0x5E,0x57,0x56,0x58,0x52,0x5C,
0x7D,0x7B,0x74,0x71,0x73,0x7F,0x75,0x79,0x70,0x7A,0x7E,0x77,0x76,0x78,0x72,0x7C,
0xAD,0xAB,0xA4,0xA1,0xA3,0xAF,0xA5,0xA9,0xA0,0xAA,0xAE,0xA7,0xA6,0xA8,0xA2,0xAC,
0x4D,0x4B,0x44,0x41,0x43,0x4F,0x45,0x49,0x40,0x4A,0x4E,0x47,0x46,0x48,0x42,0x4C,
0x9D,0x9B,0x94,0x91,0x93,0x9F,0x95,0x99,0x90,0x9A,0x9E,0x97,0x96,0x98,0x92,0x9C,
0x2D,0x2B,0x24,0x21,0x23,0x2F,0x25,0x29,0x20,0x2A,0x2E,0x27,0x26,0x28,0x22,0x2C,
0x3D,0x3B,0x34,0x31,0x33,0x3F,0x35,0x39,0x30,0x3A,0x3E,0x37,0x36,0x38,0x32,0x3C,
0xED,0xEB,0xE4,0xE1,0xE3,0xEF,0xE5,0xE9,0xE0,0xEA,0xEE,0xE7,0xE6,0xE8,0xE2,0xEC,
0x6D,0x6B,0x64,0x61,0x63,0x6F,0x65,0x69,0x60,0x6A,0x6E,0x67,0x66,0x68,0x62,0x6C,
0xBD,0xBB,0xB4,0xB1,0xB3,0xBF,0xB5,0xB9,0xB0,0xBA,0xBE,0xB7,0xB6,0xB8,0xB2,0xBC,
0x8D,0x8B,0x84,0x81,0x83,0x8F,0x85,0x89,0x80,0x8A,0x8E,0x87,0x86,0x88,0x82,0x8C,
0xCD,0xCB,0xC4,0xC1,0xC3,0xCF,0xC5,0xC9,0xC0,0xCA,0xCE,0xC7,0xC6,0xC8,0xC2,0xCC
//------------------Подготовка необходимых файлов-----------------------------------
if ((datastream = fopen( argv[1], "rb")) == NULL){
cout << " Файл " << argv[1] << " не найден .\n";
char extention[4]="crp";extention[3]=NULL;
rout[length+1]=NULL; strcat(rout,extention);
if ((crptstream = fopen (rout,"w+b")) == NULL){
cout << " Файл "<> 21);
fwrite (uk,ostatok,1,decrptstream);
prog_time=((double)(end)-(double)(start))/CLK_TCK; // Определение времени шифрования
//------------------Заполнение файла отчета--------------------------------------
fprintf(keystream," == Исходные данные для шифрации ==\r\r");
fprintf(keystream," 1. Основные: \r\r");
fprintf(keystream," Адрес первого абонента (№ %d):\r\r ",user1);
fprintf(keystream,"%04X",ADRESS1[i][0]);
fprintf(keystream,"\r\r Адрес второго абонента (№ %d):\r\r ",user2);
fprintf(keystream,"%04X",ADRESS2[i][0]);
fprintf(keystream,"\r\r Сеансовые ключи абонентов:\r\r ");
fprintf(keystream,"%08lX",Key_USER1[i]);
fprintf(keystream,"%08lX",Key_USER2[i]);
fprintf(keystream,"\r\r Cинхропосылка :\r\r ");
fprintf(keystream,"%08lX ",SYN[i]);
fprintf(keystream,"\r\r 2. Резервные:\r\r ");
fprintf(keystream,"\r\r Сеансовый ключ:\r\r ");
fprintf(keystream,"%08lX",KEYS[i]);
fprintf(keystream,"\r\r Cинхропосылка :\r\r ");
fprintf(keystream,"%08lX ",SYN[i]);
fprintf(keystream,"\r\r == Характеристикип процесса шифрации ==\r\r");
fprintf(keystream," Размер сообщения (кбайт) - %.3lf \r\r",(double)file_size/1024);
fprintf(keystream," Время шифрации (в секундах) - %.3lf \r\r",prog_time);
fprintf(keystream," Скорость шифрации (кбайт/с) - %.3lf \r\r",(double)file_size/(1024*prog_time));
fprintf(keystream," Обработка велась в ");
fprintf(keystream," резервном режиме. ");
fprintf(keystream," основном режиме. ");
//----------Функция считывания данных из файла с дополнением --------------------
void ADDFILE (FILE *flow,short ost,DWord MES[2]){
times = (short)floor((double)ost/4);
//-------------------Функция определения длины файла --------------------
//--------------------Функция разности двух 512 битовых чисел--------------
void DICRIMENT (Word P[32],Word Q[32],Word RES[32]){
//-------------------Функция умножения двух 256 битовых чисел---------------
void MULTIPLE (Word Mn1[16],Word Mn2[16],Word RES[32],Word R){
Word Previece_ST_part=0,Current_ML_part=0;
W_ptr.BL32=(DWord)Mn1[i]*(DWord)Mn2[j];
BUF=(DWord)CUR_RES[i+j]+(DWord)Current_ML_part+Previece_ST_part;
CUR_RES[i+j]+=Current_ML_part+Previece_ST_part;
Previece_ST_part=W_ptr.BL16[1]+(Word)(BUF>>16);
if((j==15)&&(i==15)) CUR_RES[i+j+1]=Previece_ST_part;
//-----------------------Функция вычисления 256 битового модуля 512 битового числа---------------
void TAKE_MODULE(Word NUMBER[32],Word OST[16],Word MOD[16]){
Word K[16]={0x0,},CUR_MOD[32],CUR_NUM[32];
DICRIMENT (CUR_NUM,CUR_MOD,CUR_NUM);
DICRIMENT (CUR_NUM,CUR_MOD,CUR_NUM);
DICRIMENT (CUR_NUM,CUR_MOD,CUR_NUM);
K[ii-jj-1]=W_ptr.BL32/(DWord)MOD[jj];
DICRIMENT (CUR_NUM,CUR_MOD,CUR_NUM);
//---------------------Функция вычисления 256 битового модуля степени 256 битового числа------------
void X_in_Y_modN (Word a[16],Word r[16],Word MODULE[16],Word RES[16]){
unsigned short bit,cicle,MASK = 0x01;
void SUMMA (Word P[16],Word Q[16],Word RES[16]){
SUMMA=(DWord)P[e]+(DWord)Q[e]+PERENOS;
DWord a_in_P_modN (DWord a, DWord r, DWord N){
A =(unsigned long)(A - floor(A/(long double)N)*(long double)N);
complit_part = pow((long double)A,2);
A =(unsigned long)(complit_part - floor(complit_part/(long double)N)*(long double)N);
complit_part = pow((long double)A,2);
A =(unsigned long)(complit_part - floor(complit_part/(long double)N)*(long double)N);
complit_part = (long double)A*(long double)B;
A =(unsigned long)(complit_part - floor(complit_part/(long double)N)*(long double)N);
Описание компонентов сети конфиденциальной связи. Система распределения ключей на основе линейных преобразований. Описание разработанных программ. Криптостойкость алгоритма распределения ключей. Алгоритм шифрования данных в режиме обратной связи. курсовая работа [98,3 K], добавлен 26.09.2012
Функциональное и эксплуатационное назначение данного изделия. Требования к составу и параметрам технических средств. Описание алгоритма ГОСТ 28147-89 в режиме гаммирования. Технико-экономические показатели разработки. Интерфейс программного продукта. курсовая работа [1,7 M], добавлен 27.02.2015
Симметричные криптосистемы; алгоритмы шифрования и дешифрования данных, их применение в компьютерной технике в системах защиты конфиденциальной и коммерческой информации. Основные режимы работы алгоритма DES, разработка программной реализации ключа. курсовая работа [129,6 K], добавлен 17.02.2011
Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI. курсовая работа [812,6 K], добавлен 27.03.2012
Алгоритм ГОСТ 28147-89 симметричного шифрования на основе сети Фейстеля, основные режимы его работы. Атаки на системы защиты информации. Метод грубой силы. Атаки класса "встреча посередине". Характеристики ГОСТ 28147-89 и американского шифра Rijndael. курсовая работа [510,7 K], добавлен 17.01.2012
Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства. курсовая работа [314,2 K], добавлен 27.01.2015
Формирование ключей для шифрования сообщения. Описание алгоритма RSA: шифрование и дешифрование. Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Сущность цифровой подписи. лабораторная работа [326,0 K], добавлен 04.11.2013
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Разработка программной реализации криптографического алгоритма ГОСТ 28147-89 в режиме гаммирования с обратной связью контрольная работа. Программирование, компьютеры и кибернетика.
Реферат: Методы повышения эффективности управления организацией на примере ООО Галактика сети магази
Андрей Платонович Платонов
Реферат по теме Організація управління в екологічній діяльності
Письмо Сочинение О Лете
Практическая Работа Таблицы 7 Класс
Курсовая работа по теме Психологические особенности мотивации власти
Курсовая работа по теме Роль руководителя организации в управлении конфликтами и стрессами. Руководитель как субъект конфлик...
Дипломная работа по теме Разработка гидравлического привода с тремя цилиндрами, расположенными горизонтально
Сочинение На Тему Барышня
Учебное Пособие На Тему Практикум По Методам Биохимических Исследований
Национальная Безопасность Диссертация
Дипломная Работа На Тему Разработка Проекта По Внедрению Новой Продукции И Его Коммерческая Оценка (На Примере Оао "Петмол")
Контрольная Работа Эволюция Строения
Эсси Ведьмак
Регламент Работы Аттестационной Комиссии
Отчет По Практике Классное Руководство
Сочинение На Тему Люблю Тебя, Мой Край Родной, Астрахань
Отчет по практике: Экономическая характеристика деятельности предприятия "Автотехцентр-сервис"
Книга: Когнитивная наука Основы психологии познания том 1 Величковский Б М
Реферат: Элективные курсы химического профиля
Ветеринарно-санитарная экспертиза с основами технологии, стандартизации и товароведения сырокопченых колбас - Кулинария и продукты питания дипломная работа
Информационные системы в управлении - Менеджмент и трудовые отношения курсовая работа
Расходы федерального бюджета на национальную оборону - Государство и право курсовая работа


Report Page