Загрузил e.228225

metod cripto n

реклама
Федеральное агентство по образованию
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ
УНИВЕРСИТЕТ им. А.И. ГЕРЦЕНА
Факультет математики
Кафедра информатики
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторных работ
по дисциплине
Защита информации в компьютерных сетях
ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА
направление 050200 физико-математическое образование
Квалификация выпускника: Магистр физико-математического образования
Утверждено на заседании Совета факультета
Утверждено на заседании кафедры
Протокол №
от
200 г.
Зав. кафедрой
______________________А.В. Копыльцов
Протокол №
от
200 г.
Председатель Совета
________________________В.Д. Будаев
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
2
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Дисциплина
Защита информации в компьютерных сетях
Направление
540200 - Физико-математическое образование
Магистерская программа «Информационные технологии в физикоматематическом образовании»
Информатика
Курс
Семестр
Форма обучения
очная
Количество кредитных единиц
Из них аудиторных (кр.ед.)
Из них лекций (кр.ед.)
Из них практических занятий (кр.ед.)
Самостоятельная работа (кр.ед.)
Форма отчетности
В настоящем методическом пособии представлены 4 лабораторные работы, помогающие изучению некоторых разделов дисциплины “Защита информации в компьютерных сетях”.
Работа №1 знакомит студентов с использованием булевых преобразований в криптографии. Для изучения работы целесообразно познакомиться с учебным пособием [1] Студент
должен овладеть методами минимизации булевых выражений и уметь находить булевы
функции, связывающие несколько последовательностей одинаковой длины.
Работа №2 является вспомогательной при изучении важного раздела дисциплины
“Теории чисел”, так как в современных криптографических системах именно этот раздел
дискретной математики используется очень широко. Для успешного выполнения работы
можно ознакомиться с учебным пособием [3].
Работа №3 знакомит студентов с методами разделения секрета. Оригинальный подход
к решению этой криптографической задачи изложен в пособии [2].
Работа №4 знакомит студентов с классической системой с открытым распределением
ключей – системой RSA и некоторыми вариантами ее использования. Описание этой системы также имеется в учебном пособии [2].
Кроме того, полезными для изучения различных вопросов оценки криптостойкости
различных систем являются пособия [4,5]
Литература для подготовки к выполнению лабораторных работ.
1. Ерош И.Л. Дискретная математика. Булева алгебра, комбинационные схемы. Преобразование двоичных последовательностей. Учебное пособие СПбГУАП.2001г.
2. Ерош И.Л. Дискретная математика. Математические вопросы криптографии. Учебное пособие СПбГУАП.2001г.
3. Ерош И.Л. Дискретная математика. Теория чисел. Учебное пособие
СПбГУАП.2001г.
4. Ерош И.Л. Дискретная математика. Комбинаторика. Учебное пособие
СПбГУАП.2001г.
5. Ерош И.Л. Элементы теории дискретных групп. Учебное пособие СПбГУАП.
1998г.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
Содержание
1.
2.
3.
4.
Булевы преобразования двоичных последовательностей ............................................….3
Элементы теории чисел ………….................................................................................…...9
Исследование схем разделения секрета ............................................................................11
Исследование криптографической системы RSA ............................................................17
3
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
4
Лабораторная работа №1
Булевы преобразования двоичных последовательностей
Цель работы: Ознакомить студентов с методами преобразования двоичных последовательностей булевыми функциями и использованием этих преобразований для решения некоторых задач защиты информации в компьютерных сетях.
Теоретические пояснения
1.Постановка задачи
Пусть имеются две двоичные последовательности A(a1,a2,…,an) и B(b1,b2,…,bn), При
этом ai,bi  {0,1}, i = 1,2,3,…,n. Элементы последовательности B будем получать булевым
преобразованием последовательности A, при этом bi будет результатом булевого преобразования, зависящего от ai и некоторых элементов из окружения ai. Максимальное число аргументов булевой функции F равно N= 2n-1. Так для n = 3 , N = 5, для n = 4, N = 7, для n = 5, N
= 9. Здесь и далее ai = 0 при 0> i >n-1.
2.Теорема о преобразованиях двоичных последовательностей.
Сформулируем теорему, на основании которой можно строить булевы функции, преобразующие одну последовательность в другую. Эта теорема является аналогом теоремы,
доказанной в [1].
Теорема: Для того, чтобы существовали булевы функции F, преобразующие произвольную последовательность А в произвольную последовательность В необходимо и достаточно, чтобы А была бы ненулевой последовательностью. Число аргументов F не превышает
2n –1.
Необходимость следует из того, что при нулевой последовательности А все элементы
последовательности В будут либо нулями, либо единицами и в этом случае В не может быть
произвольной последовательностью.
Для доказательства достаточности построим часть таблицы истинности функции F , в
которой функция определена:
a1 a2 … an
a1 a2 … an
a1 a2 … an
………………...................
a1 a2 … an+1
b1
b2
b3
....
bn
Если хотя бы один элемент последовательности А не равен 0, то все наборы, на которых функция определена будут различными, поэтому не существует ни одной одинаковой
пары наборов, на которой функция должна принимать одновременно значение 0 и 1.
Пример. Пусть A (101), B(011). Функции F будут зависеть от аргументов F(a i-2,ai1,ai,ai+1,ai+2). Таблица истинности этих функций (точнее только та ее часть, на которой функции определены) будет иметь вид:
ai-2 ai-1 ai ai+1 ai+2 B
1
0
1
0
1
0
1
1
1
0
1
1
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
5
Функции пяти аргументов задается на 32 наборах. Однако эта функция задана в примере всего на трех наборах. На остальных 29 наборах функция неопределена и ее можно доопределить 229 способами. Диаграмма Вейча этой функции будет иметь вид:
ai-2
--------------------------------------------------------------------------------------------------------0
-----------1
---1
------
ai-1
ai
-----
|
|
|
|
ai+2
ai+1
Доопределить и минимизировать данную функцию достаточно просто: F  a i  2 . Действительно, применив булево преобразование F к A, получим B. При длинах векторов A и B
равных n, булева функция будет задаваться на n наборах, а на 2(2n-1) – n наборах функция будет не определена. Доопределение и минимизация булевой функции не однозначны.
Определение. Два набора Ai и Aj длины n будем называть связанными сдвигом, если
при некотором сдвиге одного набора относительно другого у этих наборов совпадают позиции всех единиц. Например, A = 1 0 0 1 0 1 1 0 0 0 и B = 0 0 1 0 0 1 0 1 1 0 – наборы, связанные сдвигом. Из приведенной выше теоремы сформулируем следствия.
Следствие 1. Если Ai, i = 1,2,3,…,k – двоичные векторы не связанные сдвигом и В –
произвольный вектор, то существуют булевы функции F, преобразующие любой вектор A i в
вектор В, т.е. B = F(Ai), i = 1,2,3,…,k.
Пример 1. Пусть A1 = 1011; A2 = 1001; A3 = 0110; B = 0111. Построим часть таблицы
истинности функции F, выписывая только те наборы, на которых функция определена.
a b c d e g h
1 0 1 1
1 0 1 1
1 0 1 1
1 0 1 1
1 0 0 1
1 0 0 1
1 0 0 1
1 0 0 1
0 1 1 0
0 1 1 0
0 1 1 0
0 1 1 0
F
0
1
1
1
0
1
1
1
0
1
1
1
Упражнение. Постройте диаграмму Вейча функции F, и убедитесь в том, что при некотором способе доопределения функция будет иметь вид: F  a  c  e g .
Проверьте, что эта функция из любой приведенной последовательности A i (i = 1,2,3)
строит одну и ту же последовательность В.
Следствие 2. Если Ai и Bi – произвольные векторы, причем Ai не связаны сдвигом, то
существуют булевы функции F, преобразующие каждый вектор Ai в соответствующий ему
вектор Bi.
Пример 2. Пусть требуется найти функцию F, преобразующую векторы
A1 = 1011 в вектор B1 = 0110,
A2 = 0111 в вектор B2 = 1001,
A3 = 0101 в вектор B3 = 1110.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
6
Построим часть таблицы истинности функции F, выписывая только те наборы, на которых функция определена.
a b c d e g h
1 0 1 1
1 0 1 1
1 0 1 1
1 0 1 1
0 1 1 1
0 1 1 1
0 1 1 1
0 1 1 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 1
F
0
1
1
0
1
0
0
1
1
1
1
0
Упражнение. Постройте диаграмму Вейча функции F, и убедитесь в том, что при некотором способе доопределения функция будет иметь вид: F  d  e g h  b c  b e .
Следствие 3. Если Ai, i = 1,2,3,…,k – произвольные двоичные векторы, не связанные
сдвигом, то существуют булевы функции F, преобразующие A1 в любой вектор Ai, т.е.
A2=F(A1), A3 = F(A2), …, Ak = F (Ak-1) и A1 = F(Ak)
Пример 3. Пусть требуется найти булеву функцию F, обеспечивающую следующие
преобразования: A1  A2  A3  A4  A5  A6  A1, где A1 = 1011, A2 = 0110, A3 = 0111,
A4 = 1001, A5= 0101, A6 = 1111.
Упражнение. Используя описанную выше методику, выпишите часть таблицы истинности, постройте диаграмму Вейча и найдите один из вариантов решения (в диаграмме
Вейча в пустых клетках должны стоять прочерки, т.е. на этих наборах функция не определена). Диаграмма Вейча этой функции будет иметь вид:
------------------------------------------- d
------------------------------------------- c
--------------------------------------- b
----------------------------- a
1
0
1
0
1
1
0
0
1
0
0
1
1
1
0
1
|
|
0
1
1
1
1
1
0
1
|
|
e
|
|
|
|
f
|
|
|
|
g
Одно из возможных решений: F = a c e  e g  a b  ac  c d  c d e  b c  e f g.
(знак «» означает унарную операцию отрицания).
Представляет интерес определить количество наборов длины n не связанных сдвигом
и их долю в общем числе двоичных наборов длины n. Расчет произведем для наборов длины
n веса q (т.е. содержащих ровно q единиц). Для этого заметим, что если в младшем (например, левом) разряде поставить 1, а остальные q-1 единиц на оставшихся n- 1 позициях расставить так, чтобы получить разные двоичные коды, то мы получим все наборы, не связан-
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
7
ные сдвигом, содержащие ровно q единиц. Тогда число таких наборов будет равно
S(n, q)  P(n  q, q  1)  Cqn11 . Поскольку общее число наборов длины n веса q равно C qn , то
доля наборов не связанных сдвигом составляет q/n. Так, например, при n = 20, q = 10
S(20,10) = 92378.
3.Минимизация слабо определенных булевых функций
Возьмем теперь произвольный вектор A (1 0 0 1 1 1 0 1 0 0 0 1) и некоторую функцию
F = ai  ai-3  ai+2  ai+5. Применив преобразование F к вектору A, получим вектор:
B (1 1 0 1 0 1 1 1 0 1 0 0). Чтобы найти функцию, которая по вектору B позволила бы восстановить вектор A, можно построить таблицу истинности частично определенной функции 23
аргументов вида:
a
1
b
1
1
c
1
1
0
d
1
1
0
1
e
1
1
0
1
0
f
1
1
0
1
0
1
G h
1
1
0
1
0
1
1
1
1
0
1
0
1
1
1
i
j
k
1
1
0
1
0
1
1
1
0
1
1
0
1
0
1
1
1
0
1
1
1
0
1
0
1
1
1
0
1
0
l
1
1
0
1
0
1
1
1
0
1
0
0
m
1
0
1
0
1
1
1
0
1
0
0
n
0
1
0
1
1
1
0
1
0
0
o
1
0
1
1
1
0
1
0
0
p
0
1
1
1
0
1
0
0
Q
1
1
1
0
1
0
0
r
1
1
0
1
0
0
s
1
0
1
0
0
t
0
1
0
0
u
1
0
0
v
0
0
w A
0 1
0
0
1
1
1
0
1
0
0
0
1
Если из приведенной матрицы выделить минимальный набор столбцов так, чтобы в
матрице, построенной только из этих столбцов строки, на которых элементы вектора A принимают значение 1, отличались бы от строк, на которых элементы вектора A принимают
значение 0, то выделенные столбцы будут составлять минимальный набор аргументов функции F.
Обратная к F функция, которая восстанавливает вектор A по вектору B, определена
всего на 12 наборах аргументов, а на N= 223 – 12 наборах не определена. Следовательно, ее
можно доопределить 2N способами. Это число настолько велико, что задачу однозначного
нахождения обратной к F функции можно считать нереальной.
Поскольку преобразование F является односторонней функцией и нахождение обратной функции неоднозначно, возможно использовать эти преобразования в криптографии.
Упражнение. Докажите еще одно (четвертое) следствие из приведенной теоремы:
Пусть имеются Аi (i = 1,2,…,k1), Bj (j = 1,2,…,k2), Cs(s = 1,2,…,k3)… и произвольные векторы
Y1,Y2,Y3…Тогда существует булева функция F, такая, что F(Ai) = Y1, F(Bj) = Y2, F(Cs) = Y3.
4.Использование булевых преобразований двоичных последовательностей
в криптографии
1. А и В знают булеву функцию F. А передает В некоторую последовательность А 1 и
оба вырабатывают общий ключ F(A1) = A2 = K1, после однократного применения которого
ключ уничтожается. Затем с помощью этой же функции А и В вырабатывают новый ключ K 2
= F(A2) и т.д. Последовательность А1 может быть стандартной, например,
101010101010101… и вообще не передаваться по открытому каналу. (Следствие 3 теоремы.)
2. Булевы преобразования могут использоваться для проверки пароля. Так, если А отправляет В запрос А1, а В отвечает на него В1 = F(A1), то активный перехватчик даже зная А1
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
8
и В1 не может однозначно восстановить функцию F, поэтому маскируясь под «своего» на запрос А2 ответит результатом преобразования другой функцией F’ (A 2)  F(A2). Каждый клиент банка снабжен несколькими паролями. Подписывая свое сообщение любым из них, клиент может быть уверен, что банк определит - от кого пришло сообщение. (Следствие 2 теоремы).
3. Все клиенты банка разбиваются на группы, клиенты каждой группы получают свои
различные пароли. Банк может определить принадлежность клиента к группе. (Следствие 2
теоремы).
Представляется важным найти класс нетривиальных функций F, при которых уравнение F(X) = B разрешимо относительно вектора X(x1,x2,…,xn) при любых значениях элементов
вектора В (b1,b2,…,bn). Снабдив такой функцией F официального получателя сообщений,
можно по исходному тексту B1,B2,B3… вычислять криптотекст x1,x2,x3…, который и передавать по открытому каналу. Официальный получатель, используя функцию F, восстановит
исходное сообщение, так как B1= F(X1), B2= F(X2), B3 = F(X3)…
В качестве примера такой функции для шести разрядных произвольных векторов В
(b1,b2,…,b6) можно взять функцию F = ai-2ai+4ai-4ai+3. Значения элементов вектора X для
этой функции определятся следующим образом:
x1 = b1b2b3b4b6
x2 = b4
x3 = b1b2b3b4b5b6
x4 = b4b6
x5 = b1b4b6
x6 = b1b2b4b6
Для 10 разрядных векторов можно взять функцию F = aiai-6ai+5. В этом случае
элементы вектора X будут вычисляться следующим образом:
x1 = b1b6,
x2 = b1b2b6b7,
x3 = b1b2b3b6b7b8,
x4 = b1b2b3b4b6b7b8b9,
x5 = b1b2b3b4b5b6b7b8b9b10,
x6 = b61,
x7 = b1b6b71,
x8 = b1b2b6b7b81,
x9 = b1b2b3b6b7b8b9b101,
x10 = b1b2b3b4b6b7b8b9b101.
Если исходный текст состоит из последовательности векторов Bi, например,
B1 = 1011100011; B2 = 1111111111; B3 = 0111100011; B4 = 0000000000; B5 = 1011011100;
B6 = 0110001011 ; тогда отправитель сообщений может вычислить соответствующие векторы
Xi криптотекста и передать их по открытому каналу: X1 = 1100010000; X2 = 0000000000;
X3 = 0100011000; X4 = 0000011111; X5 = 0110000101 ; X6 = 0010110110.
Получатель сообщения с помощью функции F = aiai-6ai+5 преобразует векторы Xi в
векторы открытого текста Bi.
Нелегальный перехватчик сообщения, даже зная пары Bi и Xi, не сможет восстановить
функцию F.
Использованные источники
1. Ерош И.Л., Игнатьев М.Б., Москалев Э.С. Адаптивные системы управления промышленными роботами. Учебное пособие для втузов. Л.1985, 144 с.
2. Кузнецов О.П., Адельсон – Вельский Г.М. Дискретная математика для инженера. Москва,
Энергоатомиздат, 1988, 480 с.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
9
Порядок выполнения лабораторной работы
1. Прочитайте теоретический материал и выполните все упражнения.
2. Возьмите любую ненулевую последовательность А, задайтесь некоторой функцией F, получите вручную последовательность В и проверьте результат с использованием программы на компьютере.
3. Возьмите две пятиразрядные двоичные последовательности А1 и А2 и некоторую также
пятиразрядную последовательность В. Найдите функцию F, которая из любой последовательности А1 и А2 строит одну последовательность В. Проверьте результат с использованием компьютера.
4. Возьмите любую ненулевую четырехразрядную последовательность А и задайтесь некоторой функцией F. На компьютере найдите последовательность В = F(A). Используя методику, изложенную в теоретическом разделе, вручную найдите функцию F’, которая из
В восстанавливает А, т.е. A = F(B). Проверьте результат на компьютере.
5. Подсчитайте количество, а затем выпишите все ненулевые не связанные сдвигом последовательности длины 4. Выберите произвольно три из них, например, A1,A2,A3. Найдите
функцию F, которая из последовательности A1 строит последовательность A2, из A2 строит A3, а из A3 опять A1, т.е. A2 = F(A1), A3 = F(A2), A1 = F(A3). Проверьте результат на
компьютере.
6. Предложите 3 варианта использования Теоремы и ее следствий (приведенных в теоретической части) для защиты информации в компьютерных сетях.
7. Оформите отчет. Отчет должен содержать:
a) Титульный лист с указанием университета, кафедры, дисциплины, названия лабораторной работы, № группы, фамилии студента и преподавателя.
b) Все решения, выполненные вручную.
с) Комментарии при проверке решений на компьютере.
d) Описание задач защиты информации, в которых возможно использование булевых
преобразований двоичных последовательностей.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
10
Лабораторная работа №2
Элементы теории чисел
Цель работы: Ознакомить студентов с канонической формой представления чисел,
нахождением количества делителей произвольного числа, нахождением наименьшего общего кратного (НОК) и наибольшего общего делителя (НОД) нескольких чисел, нахождением
евклидовых чисел.
Теоретические пояснения
1.Представление чисел в канонической форме
Любое целое положительное число N может быть представлено в так называемой канонической форме, т.е. в виде произведения некоторых простых чисел в соответствующих
степенях, а именно:
N = p1 n1p2 n2…pk nk,
(1)
где p1,p2,…,pk – простые числа, n1,n2,…,nk – целые положительные числа.
Простым числом p называется целое, которое не имеет никаких делителей кроме 1 и
самого себя. Начальный ряд простых чисел (кроме 1, которое условно также принимается за
простое число): 2,3,5,7,11,13, 17,19,23,29,31,37, 41,43…
Для перевода числа N в каноническую форму можно воспользоваться следующим алгоритмом. Число N делится на наименьшее простое число 2 до тех пор, пока возможно деление без остатка. Затем делится на следующее простое число 3 и т.д. После чего выписывается (1).
Пример. N = 560; 560 : 2 = 280; 280 : 2 = 140; 140 : 2 = 70; 70 : 2 = 35. Число 35 на 2
нацело не делится. На 3 также не делится. Делим на 5; 35 : 5 = 7. Число 7 простое, следовательно, каноническая форма числа 560 = 245171.
2.Нахождение количества делителей числа N
Если N представлено в канонической форме (1), то количество делителей числа N,
обозначим его D(N), вычисляется следующим образом:
D(N) = (n1+1)(n2+1)…(nk+1).
Так, для числа 560 количество делителей D(560) = (4+1)(1+1)(1+1) = 20. Если N = P –
простое число, то количество его делителей равно 2 (1 и само число P).
3.Нахождение НОК и НОД чисел
Пусть два числа N1 и N2 представлены в канонической форме:
N1 = p1 n1p2 n2…pk nk
N2 = p1 s1p2 s2…pk sk
Тогда НОК (N1,N2) = p1 max(n1,s1) p2 max(n2,s2) … pk max(nk,sk), а
НОД (N1,N2) = p1 min(n1,s1) p2 min(n2,s2) … pk min(nk,sk).
Примеры 1. Найти НОК и НОД следующих пар чисел:
a) 575 и 155
b) 840 и 188650
c) 4851 и 29106
d) 975 и 616
Если в каноническом представлении одного из чисел отсутствует какой-либо простой
сомножитель, его можно ввести в нулевой степени. Например, для чисел N1 = 235271 и N2 =
3151112 прежде чем находить НОК и НОД требуется их привести к одинаковой форме, т.е.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
11
сделать так, чтобы в каноническом представлении обоих чисел присутствовали бы одинаковые простые числа в соответствующих степенях, а именно:
N1 = 23305271110;
N2 = 20315170112.
Тогда НОК (N1,N2) = 23315271112 = 508200,
НОД (N1,N2) = 20305170110 = 5.
Примеры 2 . Найти НОК и НОД следующих пар чисел:
a) N1 = 440 ;
N2 = 6050
b) N1 = 234 ;
N2 = 4125
c) N1 = 66550 ;
N2 = 40131
d) N1 =388 ;
N2 = 1647
Приведенный алгоритм легко обобщается на произвольное количество чисел, для которых требуется определить НОК и НОД.
Примеры 3. Найти НОК и НОД для следующих наборов чисел:
a) N1 = 60 ; N2 = 350 ; N3 = 495;
b) N1 =265 ; N2 = 104 ; N3 = 93.
c) N1 = 2100 ; N2 =630 ; N3 = 5880; N4 = 9450;
d) N1 = 700 ; N2 = 495 ; N3 = 104; N1 = 103 ; N2 = 260 ; N3 = 121.
4.Нахождение евклидовых чисел
Если P-1 представляется в виде произведения простых чисел в первых степенях, т.е.
P-1 = p1p2p3…ps., то P-1 называется евклидовым числом. Например, P=23. P-1 = 22 = 21111
Пример. Проверьте, какие из приведенных простых чисел при вычитании 1 являются
евклидовыми: 11,29,31,43,53,59,71.
Порядок выполнения лабораторной работы
1. Запустите программу проверки числа. Эта программа позволяет выделить наименьший
простой сомножитель из любого числа. Так, если Вы ввели число N, то программа представит его в виде N =p*q’, где p – наименьший простой сомножитель числа N. Например,
Вы ввели число 21571. Программа представит его в виде: 11*1961. Если теперь ввести
число 1961, то программа это число представит в виде: 37*53. Таким образом, каноническое представление числа 21571 = 11*37*53. Ознакомьтесь с работой программы и выполните все примеры, приведенные в теоретической части.
2. Найдите 3 трехразрядных евклидовых числа. Для этого возьмите несколько простых чисел, вычтите из каждого 1 и представьте в канонической форме. Если P-1 будет иметь
вид: P-1 = p1p2p3…ps., то P-1 – евклидово число.
3. Оформите отчет. Отчет должен содержать:
a) Титульный лист с указанием университета, кафедры, дисциплины, названия лабораторной работы, № группы, фамилии студента и преподавателя.
b) Описание всех вычислений.
c) Выводы по всем пунктам.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
12
Лабораторная работа N3
Исследование схем разделения секрета
Цель работы: Ознакомить студентов с различными схемами разделения секретных
ключей, которые используются в криптографических системах для предотвращения их несанкционированного использования.
Теоретические пояснения
Рассмотрим случай, когда руководитель банка или какой-либо другой организации не
полностью доверяет своим сотрудникам и хочет подстраховаться при использовании секретного ключа. Он может разделить весь секретный ключ (двоичная или десятичная последовательность символов) на отдельные фрагменты и эти фрагменты раздать нескольким сотрудникам так, чтобы при общем числе сотрудников n полный ключ мог быть ими составлен,
если соберутся вместе не менее h сотрудников.
1. Наиболее просто поставленная задача решается при h = n, т.е. когда ключ раздается
n сотрудникам и требуется наличие всех n фрагментов ключа, чтобы собрать полностью секретный ключ S [1]. Выберем некоторое простое число p, и пусть секретный ключ представляется в виде набора (s1,s2,s3,…,sk) , где все si являются элементами поля Галуа – GF(p) [4].
Разделим секретный ключ на n фрагментов следующим образом. Будем генерировать произвольные случайные числа:
(a11, a12, a13,…., a1k) - фрагмент секретного ключа 1-го сотрудника,
(a21, a22, a23,…., a2k) - фрагмент секретного ключа 2-го сотрудника,
………..
(an-11,an-12,an-13,…, an-1k) - фрагмент секретного ключа n-1 –го сотрудника.
А последнему n-му сотруднику вычислим элементы его фрагмента секретного ключа по следующему правилу:
an1 = (s1 - a11 - a21 - a31 - … - an1) mod p.
an2 = (s2 - a12 - a22 - a32 - … - an2) mod p.
…………………………………………
ank = (sk - a1k - a2k - a3k - … - ank) mod p.
В этом случае только при сложении всех фрагментов ключа по модулю p получим
полный секретный ключ.
Пример. Пусть p = 29 и секретный ключ имеет вид: (26,13,21,8,0,18). Требуется разделить его на 5 фрагментов для раздачи 5 сотрудникам. Для первых четырех из них генератор случайных чисел по модулю 29 пусть выработал фрагменты:
(26, 0, 13, 11, 23, 25)
(2, 7, 15, 12, 27, 6)
(1, 3 , 24, 6, 0, 16)
(12, 2, 7, 0, 7, 0)
Для последнего, пятого сотрудника вычисленный фрагмент имеет вид:
(14, 1, 20, 8, 1, 0).
Легко проверяется, что сложение всех фрагментов (каждый элемент складывается по
модулю 29) дает полный секретный ключ (26,13,21,8,0,18).
Следует заметить, что сложность подбора секретного ключа в рассмотренном случае
зависит только от значения модуля p и числа элементов k и практически не зависит от количества сотрудников n.
2. Рассмотрим случай, когда h  n. Имеется несколько вариантов решения такой пороговой задачи. Приведем алгоритм, описанный в [2]. Он основан на модульной арифметике и
китайской теореме об остатках.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
13
Имеется n участников A1,A2,A3,…,An. Пусть mi, i = 1,2,…n, целые числа, большие 1,
такие, что (mi,mj) = 1 при i j. В данном случае запись (mi,mj) = 1 означает, что числа mi и mj
взаимно простые, т.е. не имеют общих множителей. Например, к взаимно простым числам
относятся все простые числа [4].
Обозначим за М – произведение всех чисел mi, т.е. М = m1m2m3…,mi,…mt. Обозначим
также Mi – произведение всех mj (j = 1,2,…, i-1,i+1,…,n), кроме mi, т.е.Mi = M/mi. Вычислим
значения Ni из условия: MiNi  1 mod mi. Так как (Mi,mi) = 1, то решение всегда существует, и
все Ni будут найдены.
Если имеется n сравнений вида: x  ai mod mi, i = 1,2,…,n, ai – целые, то общее решеn
ние этих сравнений имеет вид: x   a i M i N i
i 1
Кроме того, это решение единственное, т.е. любое другое решение y удовлетворяет
сравнению: y  x mod M.
Пусть теперь k фиксированный порог, 1  k  n. Обозначим через min(k) – наименьшее из k произведений mi, а max(k-1) – наибольшее из k-1 произведений mi. Если выполнены
условия:
min(k) – max(k-1)  3 max(k-1)
(2)
и max(k-1)  c  min(k),
(3)
то множество {a1,a2,…,at}, где ai  c mod mi, образует (k,n) пороговую схему для c [2]. Это
означает, что если c – некоторый секретный ключ, а ai – фрагменты ключа, розданные n
участникам, то любые k из участников смогут восстановить значение c по его фрагментам, а
любые k-1 участников сделать это не смогут (без перебора вариантов). При этом, чем больше
в (2) разность, тем труднее k-1 участникам подобрать секретный ключ по своим фрагментам.
Пример. Пусть n = 5 и m1 = 97; m2 = 98, m3 = 99, m4 = 101, m5 = 103. Возьмем k = 3 и
вычислим min(3) = (97*98*99) = 941094; max(2) = (101*103) = 10403. Неравенство (2) примет
вид: 941094 – 10403 = 930691  3*10403 = 31209.
Секретное число с должно лежать в пределах (3). Пусть оно известно некоторому сотруднику, разделяющему секрет, который вычислил значения ai (i = 1,2,…,5) из условий aic
mod mi и раздал фрагменты секрета пяти участникам: a1 = 62, a2 = 4, a3 = 50, a4 = 50, a5 = 38.
Пусть теперь трое из пяти участников, например, A2,A3 и A4 пытаются восстановить секретный ключ c по своим фрагментам. Поскольку каждый участник знает только свое значение
mi, то они вычисляют: M2’= m3 m4 = 9999; M3’= m2 m4 = 9898; M4’= m2 m3 = 9702, а затем соответствующие значения Ni: N2 = 33, N3 = 49, N4 = 17. После чего находят значение x =
4*9999*33 + 50*9898*49 + 50*9702*17 = 33816668. Секретный ключ вычисляется из сравнения: c  x mod (m2 m3 m4), т.е. c  33816668 mod (98*99*101)  500000 mod 979902.
Если взять любую другую тройку клиентов, например, A1,A4,A5, то они вычислят тот
же секретный ключ с = 500000.
Пусть теперь двое клиентов, например, A2 и A5 пытаются найти секретный ключ с.
Они вычисляют значения y = 4*103*59 + 38*98*41 = 176992  5394  с mod 10094. Они понимают, что истинный секретный ключ находится из условий: 5394 + i 10094, но значения i
не знают. Количество значений i определяется как целая часть дроби:
 min(k)  max(k  1)  1


max(k  1)


Для рассматриваемого примера целая часть дроби равна 89, т.е. двум участникам потребуется перебрать 89 вариантов ключа. В реальных условиях количество вариантов может
быть сделано существенно большим.
3. Рассмотрим еще один пример разделения секретного ключа, описанный в [4]. Пусть
к приему сообщения допущено n сотрудников, из которых не все могут оказаться на месте во
время приема. Фрагменты ключа распределяются между сотрудниками по определенному
правилу, причем так, что ни один сотрудник не имеет полного набора фрагментов ключа.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
14
Сообщение может быть расшифровано, если соберутся h или более сотрудников (т.е. h сотрудников должны иметь полный набор фрагментов), при этом 1 h  n. В дальнейшем слова
“фрагмент ключа” будем заменять на слово “фрагмент, имея в виду, что это фрагмент общего секретного ключа.
Требуется по заданным параметрам n и h определить число фрагментов k и дать правило распределения этих фрагментов между сотрудниками.
Сначала рассмотрим случай, когда n – нечетное число и h = (n+1)/2.
1. Мажоритарный принцип.
Замечание 1. Известно, что n - разрядными равновесными кодами веса q называют
двоичные n- разрядные комбинации, содержащие ровно q единиц и n - q нулей. Полным равновесным кодом длины n веса q будем называть набор всех кодов, отвечающих данным
условиям и обозначать R(n,q).
Замечание 2. P( a,b ) - обозначают количество перестановок из a объектов 1-го вида и
b объектов второго, это число равно:
(a  b)!
P(a, b) 
 C a(a  b)  C (ab  b)
(4)
a!b!
Для R(n,q) число комбинаций равно P(n-q,q).
Рассмотрим поставленную задачу в случае, когда n - нечетное число, а порог
h = (n+1)/2.
Теорема 1: Если n - нечетное число и порог h = (n+1)/2, тогда количество фрагментов
ключа k равно числу n разрядных двоичных кодов веса h, а именно
n!
 n  1 n 1 
,
k  P
,

2  (( n  1) 2)!(( n  1) 2)!
 2
а правило распределения ключей между сотрудниками соответствует столбцам полного равновесного кода R(n,q).
Доказательство необходимости и достаточности приведено ниже.
Пример 1. Пусть n = 5 и h = 3. Построим таблицу равновесных 5 -и разрядных кодов
веса 3 , т.е. R (5,3)
Таблица 1
1 2 3 4 5
---------------------1) 1 1 1 0 0
2) 1 1 0 1 0
3) 1 1 0 0 1
4) 1 0 1 1 0
5) 1 0 1 0 1
6) 1 0 0 1 1
7) 0 1 1 1 0
8) 0 1 1 0 1
9) 0 1 0 1 1
10) 0 0 1 1 1
В таблице цифрами 1,2,3,4,5 обозначены члены приемной команды, а 1),2),3),... обозначены номера фрагментов. Возьмем для примера 3-го члена команды. Он имеет фрагменты
с номерами 1),4),5),7),8),10). Любая тройка членов приемной команды имеет полный набор
фрагментов и может составить полный секретный ключ S. При этом никакие пары членов
приемной команды не имеют полного набора. Количество фрагментов в данном примере
равно 10. Единицы в вертикальном коде соответствуют номерам фрагментов, которые имеет
данный член команды.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
15
2.Принцип с произвольным порогом
В некоторых случаях может оказаться более удобным принцип, основанный на произвольном пороге h. Для этого сформулируем и докажем следующую теорему.
Теорема 2: Если максимальное число людей, имеющих ключи равно n (здесь уже n любое целое положительное число) и требуется обеспечить решение при пороге h, то количество фрагментов равно числу кодовых комбинаций в R(n, n-h+1)
n!
.
k  P(h  1, n  h  1) 
(h  1)!(n  h  1)!
Пример 2. Пусть n = 6, h = 2. Построим равновесный двоичный код R(6,5)
Таблица 2.
1 2 3 4 5 6
------------------1) 1 1 1 1 1 0
2) 1 1 1 1 0 1
3) 1 1 1 0 1 1
4) 1 1 0 1 1 1
5) 1 0 1 1 1 1
6) 0 1 1 1 1 1
Дизъюнкция любых двух столбцов дает код, содержащий все единицы.
Доказательство необходимости и достаточности приведено ниже.
Теорема 2 является обобщением теоремы 1. Действительно, если положить в теореме
2 значение h = (n +1)/2, то получим R(n,(n +1)/2).
Обе теоремы являются конструктивными, так как дают правило распределения ключей между членами принимающей команды.
Доказательство. Возьмем i -й столбец из R(n,h) и обозначим его r(i). Его вес будем
определять как число единиц в коде и обозначать r(i) Определим операцию дизъюнкции
столбцов r(i) и r(j) в виде результирующего вектора той же размерности, все компоненты которого получены путем дизъюнкции соответствующих компонентов векторов r(i) и
r(j).Аналогично введем операцию дизъюнкции "v" над s векторами: r(i1) v r(i2) v r(i3) v...v r(is).
Возьмем полную таблицу кодов длины n веса q, которую мы обозначали R(n,q). Из
этой таблицы выберем произвольный столбец с номером i, т.е. r(i). Определим его вес. Легко
q 1
видеть, что при любом i. r(i)  P(n  q, q  1)  C
.
n q
Вес кода дизъюнкции любых s столбцов с номерами i1,i2,i3,...is при 1 < s < n-q+1
q 1
q 1
q 1
q 1
(5)
r(i )  r(i )  r(i )  ...  r(i )  C
C
C
 ...  C
1
2
3
s
n 1
n2
n 3
n s
n!
Если s = n-q+1, то сумма (5) точно равна количеству кодов в R(n,q), C qn 
q!(n  q)!
Действительно, последний член в (5) равен 1.
Если число членов s ряда (5) меньше n-q+1, то сумма (5) меньше значения (4), что доказывает теорему, так как никакие члены команды, если их меньше, чем n-q+1 не имеют
полного набора ключей. В частном случае, если q = (n+1)/2, имеем, что при s = (n+1)/2 в совокупности имеется полный набор ключей для расшифровки сообщения.
Приведенный алгоритм распределения фрагментов общего секретного ключа достаточно прост и позволяет найти распределения секрета при любых значениях n и любых h (1 
h  n ). Это является достоинством приведенного алгоритма. Этот алгоритм имеет существенный недостаток, если общий ключ просто разделять на отдельные участки: чем больше
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
16
соберется сотрудников (хотя их может быть и меньше h), тем легче им будет подобрать значения недостающих фрагментов. Например, если общий ключ представлял собой 20 разрядное десятичное число и его разделить на фрагменты по 2 разряда, то когда соберутся любые
2 сотрудника, им достаточно будет подобрать значения двух недостающих разрядов, т.е.
проверить всего 102 вариантов.
Секретность приведенного алгоритма можно существенно усилить, если формировать
фрагменты также как формировались фрагменты в первом примере (при h = n).
Пример 3. Пусть секретный ключ S (S1,S2,S3) имеет вид S = (23,8,11), т.е. представляет собой совокупность трех элементов, где каждый элемент – произвольное положительное
целое меньшее некоторого простого числа p.
Девять из десяти фрагментов получим с помощью генератора случайных чисел, при
этом совершенно необязательно, чтобы элементы находились в пределах 0 – p-1. Например,
1) ( 5,32,18)
2) (0,19,3)
3) (36,7,16)
4) (9,11,35)
5) (16,1,28)
6) (25,39,46)
7) (3,0,21)
8) (15,14,2)
9) (35,20,20)
А десятый фрагмент (a10,b10,c10) получим по следующему правилу:
a10 = (S1 – a1 – a2 - … - a9) mod p
b10 = (S2 – b1 – b2 - … - b9) mod p
c10 = (S3 – c1 – c2 - … - с9) mod p
Для рассматриваемого примера получаем:
10) (24,10,25)
Если соберутся вместе любые три или больше сотрудников, то ключ S легко восстанавливается сложением соответствующих элементов всех десяти фрагментов по модулю 29.
Если соберется вместе менее трех сотрудников, то на подбор ключа S им потребуется столько же усилий, сколько требуется любому одному сотруднику.
В общем случае при заданных n и h число фрагментов ключей равно
n!
P(h  1, n  h  1) 
(h  1)!(n  h  1)!
Криптостойкость ключа не зависит от числа сотрудников, если их меньше h и ключ
легко собирается, если число сотрудников равно или больше h.
Приведенный метод позволяет производить разделение секрета при различных степенях доверия к сотрудникам. Так, если разделяющий секрет доверяет какому-то лицу больше,
чем остальным, он может выделить ему две или даже три “квоты” ключа. Порог, как и ранее
можно выбирать любой (но не менее, чем число “квот”, выданных наиболее доверенному
сотруднику). Естественно, число сотрудников в такой схеме соответственно уменьшается.
Использованные источники
1. Arto Salomaa Public-Key Criptography. Springer-Verlag. 1990. Berlin Heidelberg New York
London Paris Tokyo Hong Kong Barselona.(Перевод на русский).
2. Нечаев В.И. Элементы криптографии. Основы теории защиты информации. М. Высшая
школа. 1999, 110 стр.
3. Шеннон К. Работы по теории информации и кибернетике, М, ИЛ, 1963.
4. Ерош И.Л. Дискретная математика. Математические вопросы криптографии. Учебное пособие. СПбГУАП. 2001 г.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
17
Порядок выполнения лабораторной работы
1. Прочитайте теоретическую часть и запустите программу на компьютере.
2. Для схемы разделение секрета среди n участников при пороге также равном n. Введите
число участников - n, сам разделяемый секрет из 3-х произвольных чисел и модуль P –
некоторое простое число. Автоматически для n-1 участника получите произвольные
фрагменты секрета, а для n-го участника - вычисленные по методике, описанной в теоретической части. Нажмите кнопку «Собрать», сравните результат, который выдаст компьютер, с исходным ключом и в случае неверного ответа найти свою ошибку. Повторите
операцию для других фрагментов ключа.
3. Разделение секрета среди n участников при произвольном пороге k, основанное на китайской «Теореме об остатках». Введите число участников, необходимых для сборки ключа
– k (общее число участников – n = 5). Для каждого участника выберите и введите числа
mi (i= 1,…,5), автоматически получите ограничения на значения ключа. В соответствии с
ними выберите и введите ключ. Для каждого участника автоматически получите число а i,
вычисленное по методике, описанной в теоретической части. Выберите k произвольных
участников (укажите их номера «галочкой») и убедитесь в том, что секретный ключ будет собран правильно. Повторите последнее действие при всех возможных сочетаниях
участников по k из n.Выберите число участников больше k, укажите их номера и убедитесь в том, что ключ собран правильно. Выберите число участников меньше k и укажите
их номера. Проанализируйте составленный в этом случае ключ. Изменяя значения чисел
mi, получите ограничения ключа. Проанализируйте защищенность.
4. Разделение секрета среди n участников при пороге k, основанное на свойствах равновесных кодов. Выберите и введите число участников n и порог k. Выберите секретный ключ
и получите его компоненты по методике, изложенной выше. Для каждого участника
сформируйте и введите распределение фрагментов ключа. Выберите номера участников,
собирающих ключ, укажите их номера и убедитесь в том, что ключ собран правильно.
Повторите последнее действие при всех возможных сочетаниях участников по k из
n.Убедиться в том, что если число участников больше или равно k, то ключ собирается
правильно, а если меньше, то ключ вообще не может быть собран.
5. Оформите отчет. Отчет должен содержать:
a) Титульный лист с указанием университета, кафедры, дисциплины, названия лабораторной работы, № группы, фамилии студента и преподавателя.
b) Все решения, выполненные вручную.
с) Комментарии при проверке решений на компьютере.
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
18
Лабораторная работа №4
Исследование криптографической системы RSA
Цель работы: Ознакомить студентов с классической криптосистемой с открытым
ключом RSA и вариантами ее использования.
Теоретические пояснения
1. Идея криптосистемы RSA
Наиболее широко распространенной системой с открытым ключом является криптосистема RSA (Rivest, Shamir, Adleman). Идея системы состоит в том, что очень сложно разложить произведение двух простых чисел на сомножители, т.е. найти эти сомножители. Сама
же идея системы RSA исключительно проста.
Пусть p и q – два случайно выбранных простых числа (каждое примерно по 100 десятичных разрядов). Обозначим: n = pq и (n) = (p-1)(q-1), где  (n) – функция Эйлера от n.
Случайно выбирается большое число d 1, такое, что (d, (n)) = 1, и вычисляется e,
1  e  (n), удовлетворяющее сравнению: ed  1 mod (n).
Числа n, e и d называются соответственно модулем, экспонентой зашифрования и
экспонентой расшифрования.
Числа n и e образуют открытый ключ, а p,q, (n) и d секретную лазейку. При этом
секретная лазейка включает в себя взаимозависимые величины. Так, если известно p (и, конечно, n и e), то остальные числа лазейки вычисляются просто:
q = n/p; (n) = (p-1)(q-1); d находится из условия: ed  1 mod (n).
Зашифрование обеспечивается возведением числового фрагмента текста S в степень e
по модулю n. Расшифрование достигается возведением результата предыдущего шага в степень d.
При зашифровании получаем Se  C mod n. Здесь C – зашифрованный фрагмент текста. При расшифровании Cd = Sed = S1+(n)k = S(n)k S  S mod n.
(6)
Справедливость (6) легко видна, так как из сравнения ed  1 mod (n) следует, что
ed = 1 + (n)k, где k – некоторое целое.
Пример. Пусть p = 11, q = 13. Тогда n = 143, (n) = 120.
Выберем d из условия: ( d, (n)) = 1, например, d = 37, тогда из сравнения: ed  1 mod (n)
находим e = 13. Действительно, 13*37 = 481  1 mod 120.
Для зашифрования возьмем фрагмент текста, который закодирован, например, числом
S = 42. 4213  3 mod 143, т.е. шифр фрагмента C = 3.
Для расшифрования возведем число 3 в степень 37: 337  42 mod 143. Таким образом,
легальный получатель вычисляет значение исходного кода фрагмента.
2.Использование систем с открытым распределением ключей для абонентских
сетей
Рассмотрим несколько близких задач, в которых абоненты обмениваются секретной
информацией по открытому каналу.
1). Пусть несколько абонентов A, B, C, договорились об обмене информацией. Они
могут выбрать некоторое общее простое число p, такое, что p-1 раскладывается на простые
сомножители в первой степени. Число вида N = p1p2p3…pk называется эвклидовым числом.
Каждый из участников выбирает два числа меньших и взаимно простых с p-1 так, чтобы:
a1a2  b1b2  c1c2  1 mod (p-1).
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
19
Пусть абонент A хочет передать сообщение S абоненту B. Он кодирует свое сообщение возведением в степень a1: Sa1  S1 mod p и передает его B. Тот в свою очередь кодирует
полученное сообщение возведением в степень b1 : S1b1  S2 mod p и возвращает его A. A возводит его в степень a2 и передает его B: S2a2  S3 mod p. B возводит его в степень b2 и читает
сообщение. Справедливость результата следует из сравнения: a1b1a2b2  1 mod (p – 1).
Пример. Пусть абоненты A, B и C выбрали число p = 103. Это число простое, причем
103-1 = 102 – эвклидово число, так как представляется в виде произведения простых чисел в
первых степенях: 102 = 2*3*17. Каждый из участников выбирает пару секретных ключей:
A: a1 = 25, a2 = 49,
B: b1 = 19 , b2 = 43,
C: c1 = 35, c2 = 35.
Пусть теперь A посылает к B сообщение S = 67. Он возводит его в степень 25 и находит остаток по модулю 103: 6725  86 mod 103. B возводит его в степень b2 = 19 и отправляет
результат к A: 8619  96 mod 103. A возводит полученное сообщение в степень 49 и передает
его B: 9649  21 mod 103. B получив сообщение, возводит его в степень 43 и читает исходный
текст: 2143  67 mod 103. Таким образом, S = 67.
Открытым ключом в этой системе является модуль p. Недостатком такой системы является большое число передач от одного абонента к другому.
2). Пусть имеется абонентская сеть и требуется обеспечить связь между любой парой
пользователей. Если из одного центра заранее передать открытые ключи g и p каждому пользователю, то они могут выработать общий ключ следующим образом. Пусть абонент A сам
придумал ключ k1, а абонент B ключ k2 (это индивидуальные секретные ключи абонентов). A
посылает к B сообщение gk1 mod p, а B посылает к A сообщение gk2 mod p. B возводит полученное сообщение в степень k2, а А в степень k1. В результате они выработают одинаковый
общий ключ: gk1k2 = gk2k1  K mod p, после чего возможен обмен информацией по открытому
каналу с использованием любой классической (симметричной) криптосистемы.
3.Криптографические протоколы
В традиционных (классических) криптографических системах предполагалось, что два
лица, которые обмениваются секретной информацией, полностью доверяют друг другу и пытаются защитить свои сообщения от третьих лиц (перехватчиков, криптоаналитиков).
Криптография с открытым ключом значительно расширила класс задач, решаемых с
помощью криптографических методов. В результате появилась необходимость в интерактивных , многоразовых двусторонних обменах сообщениями между участниками, которые
не всегда доверяют друг другу, в передаче информации между несколькими участниками.
Последовательность действий участников обмена информацией, использующих криптографические приемы для решения нетрадиционных задач, называют криптографическими протоколами.
4.Банки и клиенты
Рассмотрим задачу, в которой клиенты банка v1,v2,…vk передают шифрованное распоряжение ответственному работнику банка B (банкиру). При этом кроме конфиденциальности должна обеспечиваться узнаваемость клиента, чтобы по полученному сообщению банкир
B сумел идентифицировать автора сообщения и выполнить именно его распоряжение.
Банкир B выбирает некоторое число N = PQ, где P и Q – большие простые числа.
Каждый из клиентов vi (i = 1,2,3,…,k) также выбирают свои значения ni = piqi, причем желательно, чтобы N  ni. Затем как банкир, так и клиенты находят значения  (N) – банкир и 
(ni) – все клиенты.
После чего каждый выбирает свой открытый ключ D - ,банкир и di – клиенты из условий:
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
20
0  D   (N) , ( D,  (N) ) = 1 – банкир и
0  di   (ni), (di,  (ni))= 1 – клиенты.
Затем банкир и клиенты находят свои секретные ключи T и ti из сравнений:
DT  1 mod  (N), 0  T   (N) – банкир,
dt  1 mod  (ni), 0  t   (ni) – клиенты.
После этих операций открыто публикуется телефонная книга с открытыми ключами:
B: N, D
vi: ni, di.
Пусть теперь некоторый клиент vi хочет передать распоряжение m банкиру B. Он
шифрует его сначала своим секретным ключом (возводя m в степень ti по mod ni, а затем открытым ключом банкира: m1  mti mod ni, m2  m1D mod N. Сообщение m2 передается по открытому каналу связи. Банкир, получив сообщение m2 сначала расшифровывает его своим
секретным ключом T, а затем открытым ключом di клиенты vi. В результате получает:
m3  m2T mod N, m4  m3di mod ni. При этом m4 = m, т.е. банкир B расшифровывает переданное ему распоряжение, при этом заодно и идентифицирует (узнает) клиента. Это похоже на
проверку подписи клиента и иногда называется “электронная подпись”. Если клиент из открытой телефонной книги узнает, что банкир выбрал число N  ni, то изменив порядок шифровки получит тот же результат, если банкир также изменит порядок расшифровки.
Пример. Пусть банкир выбрал простые числа P = 23, Q = 11; клиент v: p = 13, q = 7.
После чего и банкир и клиент вычисляют сначала функции Эйлера: (23*11) = 220;  (13*7)
= 72, затем выбирают открытые и вычисляют секретные ключи, например: D = 71, T = 31; d
= 29, t = 5. Открыто публикуются числа: P*Q = 253, p*q = 91, D = 71, d = 29. Секретным ключом банкира является число T = 31, а секретным ключом клиента t = 5.
Пусть клиент решил дать секретное поручение банкиру в виде числа m = 41. Он шифрует его своим секретным ключом t, а затем открытым ключом банкира D:
415  6 mod 91, 671  94 mod 253. Это сообщение (число 94) по открытому каналу передается
банкиру. Банкир расшифровывает сообщение сначала своим секретным ключом T, а затем
открытым ключом клиента d: 94 31  6 mod 253, 629  41 mod 77. Банкир принимает указание
клиента в виде числа 41.
Использованные источники
1. Ерош И.Л., Дискретная математика. Математические вопросы криптографии. Учебное
пособие. СПбГУАП. 2001г.
2. Ерош И.Л. Дискретная математика. Теория чисел. Учебное пособие. СПбГУАП.2001г.
Порядок выполнения лабораторной работы
1. Прочитайте теоретический материал и рассмотрите отдельно каждый вариант применения RSA, запустите программу на компьютере.
2. Общий ключ для двух пользователей. Выберите некоторое простое число p и число g –
примитивный корень по модулю p. Примитивным корнем g по модулю p называется число, все степени которого g1,g2,…gn-1 различны. Придумайте некоторые произвольные
числа k1 и k2 (ключи). Выполните на компьютере последовательность действий, обеспечивающих выработку общего ключа k для двух пользователей. Вручную проверьте правильность вычислений.
3. Передача шифрованных сообщений. Возьмите два простых числа p и q, найдите их произведение n= pq и функцию Эйлера (n), выберите d из условия (d, (n)) = 1. Введите эти
данные в компьютер и посмотрите, какой закрытый ключ будет вычислен. Для абонента
А, имеющего только открытую информацию введите некоторый символ и автоматически
получите его ASCII-код. Нажмите кнопку «Зашифровать» и запишите полученное сооб-
курс лабораторных работ по дисциплине “Защита информации в компьютерных сетях”
21
щение. Передайте это сообщение абоненту В, нажмите кнопку «Расшифровать» и убедитесь, что расшифрование выполнено правильно. При ошибках (Ваших) в выборе простых
чисел и вычислении (n) и d зашифрование будет невозможным. В этом случае проанализируйте свои ошибки.
4. Сообщение от клиентов банку. Представив себя банкиром B, выберите простые числа P и
Q; затем представив себя клиентами vi , выберите несколько пар простых чисел pi и qi ,
вычислите и за банкира и за клиентов значения функций Эйлера и все открытые ключи.
Введите полученные данные в компьютер. Выберите номер клиента и некоторый символ
и введите их в компьютер, автоматически получив ASCII-код. Зашифруйте его и передайте банку, получите протокол с этапами зашифрования и расшифрования. Проанализируйте этот протокол и запишите, какие действия выполняются согласно этому протоколу.
Если результат положительный, то Вам будет предложено использовать сформированные
Вами данные для посимвольной передачи неизвестного Вам сообщения от выбранного
Вами клиента банку. Запишите полученное после расшифровки сообщение. Представив
себя клиентом, выдающим банку себя за другого, воспользуйтесь открытой информацией
и попытайтесь передать сообщение банку. Проанализируйте результат.
5. Оформите отчет. Отчет должен содержать:
a) Титульный лист с указанием университета, кафедры, дисциплины, названия лабораторной работы, № группы, фамилии студента и преподавателя.
b) Все решения, выполненные вручную.
с) Комментарии при проверке решений на компьютере.
Скачать