Лаб_1_ОИБ

Лабораторная работа № 1

ст.гр.БСитС-11-1 Кот Леонида

Тема: Методы и средства генерации случайных и псевдослучайных последовательностей. Исследование их криптостойкости.

Цель: получение знаний и навыков по генерации случайных и псевдослучайных последовательностей, а также определение возможности их применения в криптографических преобразованиях.

Задание:

Вариант – 13

Вид генератора – генератор Геффа

Полиномы обратной связи для LFSR: (54,8,6,3,0); (18,7,0); (47,5,0)

Описание работы генератора:

В этом генераторе используются три LFSR, объединенные нелинейным образом.

Два LFSR являются входами мультиплексора, а третий LFSR управляет выходом мультиплексора. Если а1, а2, а3 – выходы трех LFSR, выход генератора Геффа можно описать так:

Согласно заданию была создана программа на языке С, реализующая работу генератора Геффа. Ниже представлена схема алгоритма программы.

Схема алгоритма программы Geffe.exe

Код программы:

#include «stdafx.h»

#include

#include

#include

#include

using namespace std;

// Реализация LSFR1

int LSFR1()

{

static unsigned long shiftregister = 1;

shiftregister = ((((shiftregister>>53)^(shiftregister>>7)^(shiftregister>>5)^(shiftregister>>2)^shiftregister) & 0×00000001)>1);

return shiftregister & 0×00000001;

}

// Реализация LSFR2

int LSFR2()

{

static unsigned long shiftregister = 1;

shiftregister = ((((shiftregister>>46)^(shiftregister>>4)^shiftregister) & 0×00000001)>1);

return shiftregister & 0×00000001;

}

// Реализация LSFR3

int LSFR3()

{

static unsigned long shiftregister = 1;

shiftregister = ((((shiftregister>>17)^(shiftregister>>6)^shiftregister) & 0×00000001)>1);

return shiftregister & 0×00000001;

}

// Функция преобразования в символ

int BinToChar(int *BinMas)

{

int sym = 0;

for(int i=8; i>=0; i—)

{

if (BinMas[i]

{

BinMas[i]=0;

}

if (BinMas[i] == 1)

{

sym = sym + (pow(2.0,i));

}

}

return sym;

}

void main()

{

setlocale (LC_ALL, «Russian»);

int razmer;

printf («Введите размер последовательности (кб)\n»);

scanf («%d», & razmer );

FILE *Out; // файл для символов

FILE *Out2; // файл для двоичных кодов

Out = fopen («D:\Geffe.dat», «a+»);

Out2 = fopen («D:\GeffeBin.bin», «a+»);

if (fopen («D:\Geffe.dat», «a+»)==NULL)

{

printf («\nОшибка! Проверьте путь к файлу\n»);

}

int Mas[8];

printf(«Генератор Геффа работает …\n»);

for(int i = 0; i

{

int lsfr1 =LSFR1();

int lsfr2 =LSFR2();

int lsfr3 =LSFR3();

Mas[i%8] = (lsfr1 * lsfr2)^((!lsfr1) * lsfr3);

fprintf(Out2,»%d»,Mas[i%8]);

if((i%8)==0)

{

int Sym = BinToChar(Mas);

fprintf(Out,»%c», Sym);

}

}

fclose (Out);

fclose (Out2);

printf(«\nПоследовательность символов сгенерирована и находится в файле D:\\Geffe.txt.»);

printf(«\nПоследовательность двоичных кодов сгенерирована и находится в файле D:\\Geffe.txt.»);

getch();

}

Рис.1. Скриншот работы программы Geffe.exe

Двоичная последовательность, сгенерированная программой Geffe.exe

00000000000000000111111110101111111110110011111011111110110000111100011110100010010001111110111010111101100100111011110001111111110001100100110111001111011011001000011101111111000100101110101101010001101100110011001001111001000010011001111010011001001001110001101111000101101101000011101000100110111101110010000000110110001010101110001110110100111001001110010101010001001111000000000101100111001001111000111000010110010010111011101101000001111000001111011100001010001011110011001111111101000110100100100111010111110110110011101110101001101101100101111110000010011011000010011011101110101111100000000101010101000111011111101010000000000110100011111101110010101101001101101001101101000000111101101001101011010001101100011110000111011010100010011000101000100011011101011100101000111110111011000110100010010111111000101000010101010001101110011011001101011101000100010010011101011110000011111101101110000110111110110001000010111111000001101100000011011010001101110001011000001101100010100110110101011000011110101011101000110111001001100010110011110001010001011111101100111110000101101011101111101001010000001001101011001000110001110101100001110010010010100001101010111011010101000001100111001000001100001000001111100100100111001010110000110000011001000111010011100011010000001010100101110111011100111100011110011000100000100011100000000011000010000100011011000001100010100010101100001010010101111000011001001110011010110111111101101101000000100010111110011110011101010101001001010010001001110100101101001101101011111011011010001100101001000010100000010000101000011000010011111111000101001001100011000110001100011001100110011000000111010001001010010010000111010001111101111010000100011011111010111011001000000001001100010000110111111101110110110011011001111110111111011010011110000100010101001001111111011100010100011010010101011000101000101000010001110110001111000101011111111100001110100010111111001001101000011000111100000100111111101001000100110100100110100000110010110100101111000111101010101111100011011110110100000000011111101010000101000111001100011000111101111100100100100001100000000000001011101100011100000100111011001001011011110010101000111101000111101111111001011011111000000101000010000110000110011011011000110011111100001110010100110011100000101011010100011100100000111110010100010001010100110110001010101011111011010011000000011000010100111000111100000100010111110010010100000101001010101100110101101001010010100010000010101101010011000000100000010001011100110011010100111000010101100011000011001001111000010100000110001111110111000011110110111110101010100010001010110001001111110000101111010101011001000100100001011011000100000110100101000000001110011000101000010100011001010100011010101100111101110000100101001110001000100101000101010010110011000011011010010101110010101001011111001000111000001100100111101111111010100110110101100000010001011110010000101011101010001010010000110000000111111110000110010011111101100001011101100100001111011010100001100001111010001101000000010011011101001110111010001001101001000001110110010101100001011101001000100110000100111101100001100010010011011101001110000101000001000110101110111010001100011001011011001011000100100100010110101001001010111010011000000001001001111001001000000111000100111011110000011101110111001110001000110110101101001000100110000110001011111111001001001000110001100001011101000011101011010100101101111100010000100001010100011101000101000011001111000000101111011111101011011011001100100110110101011100011101001110101110100010011111101000101110100101111011100100010111110100000111111011000001010011101110101100001011110011110111110001110000001011000010100100011001000000001010110110001010010100010100011011011111111001010101111110100001101111001010100011001110010000011011101010000101011110011010111100011001010011110011001100011100001110111110010011010101101100100010111110011101000101100010100111110110000011100110100010100100000001101011111101001101010100100110011011011100011011001001010111011010101111110000011010011011100010111010000110010000110101010110111011111100001000001100111001001100101100010011010001011101011010101001010010111010100111101010010101100000011010011100100100000101001001001001101001101110000001011110000101010000101011110111001010100011001111111010100110110010010001110101010100101001110011001101101110100110100001111100000111110000101111110111010011010001101100000010001001110000000110001000100100101111001000101010000110111100100010011110010100001000100001111010000101111100101100100111011000101110101010111110000110010111110011010101000001001011100001101110001010011100011101111101011101100001100000100010010011000011001001101001110011111001111000000111010001010100010000110100010110100110010101011111000000010110000100100001111010110000011001101000111000000101010100001000001010111001110000110000110100110110000000101100100001010111100111110000001001111110100101100010011001110001110110110100010101001100000001111110111100101100010000001101110101111000001011010001010110000100011011110001100111100011001111100101000000011101000100010000110010000010101100100001101000010101001110000011001001111111011011100100101000110001000111000011111011110101001100100010001111000101100110001101111101110011110011010101010101000111110000000110010110001001110001100000100001100011011101110101010111110100010000101100110100001110000100101010000000001111110000111010011011110001000000001111011101101000110100101001111101001100110010100100011001000001110000000100100001110111000000011110110011100010001100111001101000100111001111001001001000001110100110010101011010101001011001001101111011001101011001111010000001000011100100110101100110111110111110110011000100111110010100101011101101100100010111011000001010001000110100101000000101000001110010001101000101010110000000001101000011101110000011000001101011101111101000000001100000101011111010011101101000110100111010111011010111011100000100011110001001100000001110110011010011010101010010101011100001001011101100001101100111111110000011101100101000000011111011111010110111011101110010011111011011001100010011100000000101111110011010101001011010011010001011000111010110000111111100011110010101011111000111110001001011010100110100001100000000101110001111000011101100011101111110001110010011010011111010100110101000101001101000010101010000001100001111101100001010001000110010010000101110111111110100110000111011111110011101000011111001100000000000101110000101110101011100011111100000001011011110000110000100001000101100001110010110010010011111111101001000111010111110010010111011010011101001000011010011100111101100100010011000000111110011110001110001001101101010011111111010100110001000111100011110111010000000101000010111011000000111101110111011000000001111101000001011101011100101110011011010001000100001001100001110111001010000101100010101001110101110010010110011011100111111011001000100010000100011010010101101110010111111101011101100101101110011100110101000000110101001110011011011111111100000110010011001000101111101111010111000010001111000111010101111100111100111010100011010010001001011011011001110100111110001101101111011101100001100010110110111110101011110010111011000100100111011011111111000000111110101010000011011111001100010100110111101110001000110111000001100000011000111010100100000100101001001101101101101010101000000001100011101110111111000011100000000100011010000010010010000001011111011001001001111111110000110011110011011111011001011000000001011111110011110011110000110010100111101010110101000010001001000011110000110100111001111100100011111000010111100101010010111110010111100001010101001011000010110111101001001011101010010001011010001010110100111011011111001011000001101010101101010000001110000100110101101011110000111011111001100001000011100101101001011111000101000000110100000010001001011110010100111000100101001000001010011010000001000100010001011010011110110000111100110100100100001000111100100001001001011010110011100111101110010111001101110011010100111100111100001000100101001011001110100110100111000111011101010000010100111101111000101100110

Символьная последовательность, преобразованная из двоичной программой Geffe.exe

яхЮ}ГгDгwЅЙША:l•¬‡W;Нўй7[ч¤@ЦДё‡’W¶

жBсHOѓ‰Л°AҐ»тxF0„Ш`4”zќµї,|џЄ’ёґm}ZMC`Й>JЖbf.R.їc_72Вюoіщь—†Ёео(–j„№р©юqСNЗ‚э$ІeАґфyХЖЮщ‹2Зъ%`СЌ‚ЬҐ=.ЯћчЂBgуГ)rQ*Nс(ўіQх-†rф«€„6ѓ¤f‹ЁYН:¤ђўТZкTъЕАеэ•­ЂйuEя`у»o…бДіЛ\enjит‡ђмr(‰uЪ4’i%u!x8sоП[Jdэ’Дєq¬µЋ*.тAпЦ7“¬ЏЛu‘^uйњй

sЦСт>4”µPЉcы¦ы…=rѓ] џфтМ8Э’«Lхёh•np$aьІJg:7©[ьaЩС…Єw>r3Њ,єW)]y¤—’ %XvЎ†фOДэ•LвЄ•3Ыeбѓь/‹DђфE…=‘¦б„?LnuХ‡йІ

УaG8пк‡@%Вe9џ.*ВЈd«hHygp AќВ°lAлш@hdЏЪў2бц4єґ© ц™Ж|

ё€1ALXЁLюvRЊ8}®LЕЈъПІЄг§‘bЖо«.CІpIсГeЋоKш3RbѓоЃ7FНXд=Hqk”’{ІзГИ›}ЮЊ|KЬ&»AKЂѓЉjv0YчХ—Z-Ч­:‰FЬ-ЄSУ›~qRБчµ»“o2rЂ~WiX4ЇбЏ¦ъшI+t

DEЛџ% ћђґжЅУЩYx#Ґё-З]AyЋ

Статистический тест:

Тест распределения:

Тест Мауэра