Файл: Р. Р. Фактиева должность, уч степень, звание подпись, дата инициалы, фамилия отчёт о лабораторной работе 2 шифр гаммирования по дисциплине Защита информации.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 37

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА № 43

ОТЧЁТ
ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

кандидат тех. наук., доц.










Р. Р. Фактиева




должность, уч. степень, звание




подпись, дата




инициалы, фамилия




ОТЧЁТ О ЛАБОРАТОРНОЙ РАБОТЕ № 2

ШИФР ГАММИРОВАНИЯ

по дисциплине: Защита информации



РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР.

4931




09.04.2023




Д.С. Беляев










подпись, дата




инициалы, фамилия



















Санкт-Петербург


  1. Цель работы:


Освоение принципов шифрования гаммированием, изучение свойств
генератора псевдослучайных чисел, программная реализация метода гаммирования.

Задание на лабораторную работу

1. Выбрать в таблице 2.1 параметры генератора ПСЧ: A, C, T0, b в соответствии с

вариантом.

2. Разработать программу шифрования и дешифрования текста.

3. Произвести шифрование исходного текста
, получить шифрограмму, осуществить ее

дешифрование и сравнение с исходным текстом. Рекомендуется для представления

символов исходного текста использовать стандартную кодировку символов.

4. Произвести изменение одного или несколько параметров генератора случайных

чисел, осуществить получение шифрограммы и сравнение ее с предыдущим вариантом.

5. Результаты работы оформить в виде отчета.

Вариант 5

Номер варианта

Вид генератора ПСЧ

Количество разрядов b

5

Линейные конгруэнтные датчики ПС

7
  1. Описание используемого метода


Чтобы получить линейные последовательности элементов гаммы, длина которых не

превышает размер шифруемых данных, используют датчики ПСЧ. Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением



где A, C, M - константы, T0 - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.

Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом

повторения, зависящим от выбранных значений A и C. Значение M обычно устанавливается

равным 2b , где b -длина машинного слова в битах. Необходимо выбирать числа A и C так,

чтобы период M был максимальным.

Как показано Д.Кнуттом, линейный конгруэнтный датчик имеет максимальную длину

M тогда, когда C нечетное и A mod 4 = 1.

В качестве примера использования линейного конгруэнтного датчика ПСЧ рассмотрим процесс шифрования исходного текста «абв». Пусть b = 5, т.е. для представления буквы исходного текста используется 5 двоичных разрядов. В соответствии с номером в алфавите буква «а» имеет двоичный код 00001; буква «б» имеет двоичный код 00010; буква «в» имеет двоичный код 00011. Исходный текст будет представлен в виде последовательности 00001 00010 00011.



Для формирования гаммы шифра выберем параметры датчика ПСЧ: A=5; C=3; T(0)=7; M=2b; b=5; M=25=32. Сформируем три псевдослучайных числа:

T(1) = (5*7+3) mod 32 = 6 (00110);

T(2) = (5*6+3) mod 32 = 1 (00001);

T(3) = (5*1+3) mod 32 = 8 (01000).

Полученная гамма шифра 00110 00001 01000. Зашифрованный текст получается путем наложения гаммы шифра на исходный текст (путем сложения по модулю 2):



что соответствует шифрограмме «жвк», «ж» (седьмая буква в алфавите) имеет код 00111,

«в» (третья буква в алфавите) имеет код 00011, «к» (одиннадцатая буква в алфавите) имеет код 01011.

Дешифрование производится путем наложения той же гаммы на зашифрованный

текст с помощью операции сложения по модулю 2. В результате получаем исходный текст «абв».


  1. Описание исходных данных


Параметры для программы

A = 5, C = 3, T0 = 7, b = 11, M = 2b= 128

На вход поступает строка, например: «Hello world!»
  1. Текст программы


#ПО ВАРИАНТУ
# формировалие гаммы шифра
T = 7
A = 5
C = 3
# М это два в степени b=7
M = 128

#ЗАШИФРУЕМ
# входное слово
input_str = input("Введите слово на английском:\n")
print("Введённое слово:\n", input_str)

# массив для кодирования
mas_cod = []
for word in input_str:
mas_cod.append('{0:08b}'.format(ord(word)))
# номера букв в английском алфавите в двоичном коде

print("Двочный код букв в соответствии с их номером в таблице ASCII\n", mas_cod)

# массив гамма шифра
mas_gamma = []

for n in range(len(mas_cod)):
T = (A * T + C) % M
mas_gamma.append('{0:08b}'.format(T))

print("Сформированнный гамма шифр\n",mas_gamma)
mas = []

for n in range(len(mas_cod)):
a = mas_cod[n]
b = mas_gamma[n]

max_len = len(a)

res = ''

# Traverse the string
for i in range(max_len):

if a[i] == "1" and b[i] == "1":
res += "0"

if a[i] == "0" and b[i] == "0":
res += "0"

if a[i] == "1" and b[i] == "0":
res += "1"

if a[i] == "0" and b[i] == "1":
res += "1"

mas.append(res)

print("после наложения гамма шифра на исходный текст\n", mas)

output_str = ""
mas_res = []
for x in range(len(mas)):
mas_res.append(chr(int(mas[x], 2)))

output_str = ''.join(mas_res)
print("Шифрограмма:\n",output_str)

#РАСШИФРУЕМ
print("РАСШИФРУЕМ")

new_mas = []
for n in range(len(mas_cod)):
a = mas[n]
b = mas_gamma[n]

max_len = len(a)

res = ''

# Traverse the string
for i in range(max_len):

if a[i] == "1" and b[i] == "1":
res += "0"

if a[i] == "0" and b[i] == "0":

res += "0"

if a[i] == "1" and b[i] == "0":
res += "1"

if a[i] == "0" and b[i] == "1":
res += "1"

new_mas.append(res)
print("после наложения гамма шифра на зашифрованный текст\n", new_mas)

des_str = ""
mas_res = []
for x in range(len(new_mas)):
mas_res.append(chr(int(new_mas[x], 2)))

des_str = ''.join(mas_res)
print("Получаем исходный текст:\n",des_str)
  1. Результат работы программы




  1. Анализ результатов


Запустим для параметров A = 5, C = 3, T0 = 7, b = 11, M = 2b= 128



Запустим для параметров A = 9, C = 4 , T0 = 3, b = 5, M = 2b= 32



Шифрограмма изменилась в соответствии с изменением параметров модели при запуске, но это не повлияло на корректность работы программы.
  1. Выводы


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