№1 БУЛЕВЫ ПРЕОБРАЗОВАНИЯ ДВОИЧНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
.docМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра ИС
отчет
по лабораторной работе №1
по дисциплине «Конструирование программ»
Тема: Булевы преобразования двоичных последовательностей.
Студент гр. 0375 |
|
Яблоков В.А. |
Преподаватель |
|
Копыльцов А. В. |
Санкт-Петербург
2022
Цель работы:
Ознакомиться с методами преобразования двоичных последовательностей булевыми функциями и использованием этих преобразований для решения некоторых задач защиты информации в компьютерных сетях.
Ход работы:
1. A1 = 101101, F = a[i + 2] ˄ a[i] ˅ !a[i + 1]. Найдем последовательность B:
b[1] = a[3] ˄ a[1] ˅ !a[2] = 1 ˄ 1 ˅ 1 = 1.
b[2] = a[4] ˄ a[2] ˅ !a[3] = 1 ˄ 0 ˅ 0 = 0.
b[3] = a[5] ˄ a[3] ˅ !a[4] = 0 ˄ 1 ˅ 0 = 0.
b[4] = a[6] ˄ a[4] ˅ !a[5] = 1 ˄ 1 ˅ 1 = 1.
b[5] = a[7] ˄ a[5] ˅ !a[6] = 0 ˅ 0 = 0.
b[6] = a[8] ˄ a[6] ˅ !a[7] = 1 = 1.
Таким образом, B = 100101. Проверка на компьютере:
Получена та же самая последовательность.
2. A1 = 10001, A2 = 11001, B = 01000.
F = a[i - 2] ˄ a[i] XOR a[i + 3].
Проверка на компьютере:
То есть, из двух разных последовательностей, не связанных сдвигом, была получена одна и та же последовательность B.
3. A = 1001, F = a[i - 2] a[i] ˄ a[i + 2], B = 1011. Построим таблицу истинности частично определенной функции, доопределив ее нулями на пустых клетках:
a[i - 3] |
a[i - 2] |
a[i - 1] |
a[i] |
a[i + 1] |
a[i + 2] |
a[i + 3] |
A |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Выберем из таблицы первый, третий, пятый и шестой столбцы, получим:
a[i - 3] |
a[i - 1] |
a[i + 1] |
a[i + 2] |
A |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
Получим функцию: F* = !a[i - 3] * !a[i - 1] * !a[i + 1] * a[i + 2] + a[i - 3] * a[i - 1] * !a[i + 1] * !a[i + 2]. Проверка на компьютере:
Получена исходная последовательность B, значит, F* найдена правильно.
4. Описание задач защиты информации, в которых возможно использование булевых преобразований двоичных последовательностей.
1. А и В знают булеву функцию F. А передает В некоторую последовательность А1 и оба вырабатывают общий ключ F(A1) = A2 = K1, после однократного применения которого ключ уничтожается. Затем с помощью этой же функции А и В вырабатывают новый ключ K2 = F(A2) и т.д. Последовательность А1 может быть стандартной, например, 101010101010101… и вообще не передаваться по открытому каналу. (Следствие 3 теоремы.)
2. Булевы преобразования могут использоваться для проверки пароля. Так, если А отправляет В запрос А1, а В отвечает на него В1 = F(A1), то активный перехватчик даже зная А1 и В1 не может однозначно восстановить функцию F, поэтому маскируясь под «своего» на запрос А2 ответит результатом преобразования другой функцией F’ (A2) F(A2). Каждый клиент банка снабжен несколькими паролями. Подписывая свое сообщение любым из них, клиент может быть уверен, что банк определит - от кого пришло сообщение. (Следствие 2 теоремы).
3. Все клиенты банка разбиваются на группы, клиенты каждой группы получают свои различные пароли. Банк может определить принадлежность клиента к группе. (Следствие 2 теоремы).
Выводы:
В работе были продемонстрированы некоторые методы перобразования двоичных последовательностей, применяемые в криптографии.