Скачиваний:
29
Добавлен:
29.06.2022
Размер:
892.16 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

_____________________________________________________________________________

Кафедра информационной безопасности телекоммуникационных систем Дисциплина «Основы криптографии с открытыми ключами»

Лабораторная работа 12

«Изучение криптопротокола с разделением секретных данных между пользователями »

Выполнила:

студ. гр.

 

.

. .

Проверил:

проф. Яковлев В.А..

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

2021

Цель лабораторной работы

Закрепить знания, полученные на лекциях дисциплин “Основы криптографии с открытым ключом“ и “Криптографические протоколы” по теме «протоколы разделения секрета».

Исходные данные

Вариант №6

Таблица 1. Исходные данные для части 1.

№ вар

Секрет k

a1

a2

 

 

 

 

6

12

14

9

 

 

 

 

Ход работы

Часть 1. Моделирование пороговой (n,m)-схемы разделения секретов

Провести моделирование (n,m)-схемы разделения секретов с заданными параметрами: (n=5, m=3, p=17) и параметрами в таблице 1.

Пороговой (n, m)-схемой называется такой алгоритм формирования частных секретов ,   = 1,  2, . . . ,   (теней) по основному секрету k, что при объединении m или более таких теней существует алгоритм, позволяющий восстановить в точности основной секрет, тогда как объединение менее чем m теней не дает абсолютно никакой информации об основном секрете k.

Используем способ построения пороговой схемы, известный как схема разделения секрета на основе интерполяции полиномов над конечными полями (схема Шамира).

Для построения данной схемы должно выполняться условие ( ).

Запишем полином h(x):

( ) = −1 −1 + −2 −2 + + 1 + 01, … ,  −1 ( )

0 =( ) = 92 + 14 + 12

2

Частные

секреты (тени)

вычисляются

по

формуле

 

= ( ), =

1, 2, … , , ( ), < ,

 

 

 

 

 

 

 

где, в частности, можно взять

= .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найдем тени

 

= ( ), где

= (1, 2, 3, 4, 5):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 = (1) = (9 + 14 + 12) mod 17 = 1

 

 

 

 

 

 

2 = (2) = (9 4 + 14 2

+ 12) mod 17 = 8

 

 

 

 

 

3

= (3) = (9 9 + 14 3

+ 12) mod 17 = 16

 

 

 

 

4

= (4) = (9 16 + 14 4 + 12) mod 17 = 8

 

 

 

 

5

= (5) = (9 25 + 14 5 + 12) mod 17 = 1

 

 

 

 

Затем

передаются каждому из n пользователей по секретным каналам.

Если

m

(или

более)

пользователей

, 

, . . . , 

объединят

свои

 

 

 

 

 

 

 

1

2

 

 

 

 

 

индивидуальные секреты 1,  2, . . . ,  , то они смогут восстановить полином, используя интерполяционную формулу Лагранжа:

 

 

 

 

 

 

 

 

 

 

( ) = ∑

 

 

 

mod

 

 

 

=1

 

=1

 

 

 

 

 

 

 

 

Тогда основной секрет легко может быть найден как:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 0

= (0) = ∑

 

 

 

 

 

 

 

mod

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=1

 

 

 

=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Восстановим секрет по теням 2, 3, 4 (четный вариант):

 

1 = 2, 2 = 3, 3 = 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

= ,

 

=

 

 

,

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

 

 

 

 

3

 

 

3

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 2

 

3

 

 

 

 

 

 

 

4

 

 

+ 3

 

 

 

2

 

 

 

 

 

 

4

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

3

 

 

 

2

 

 

 

4

 

 

 

 

3

 

2

 

 

 

3

 

4

 

 

 

+ 4

 

2

 

 

 

 

 

 

 

3

 

 

 

mod

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

2

 

 

 

4

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= (8

 

3

 

 

 

 

 

 

 

4

 

+ 16

 

2

 

 

 

 

4

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 − 3

2 − 4

3 − 2

3 − 4

 

 

 

 

 

+8

 

2

 

 

 

 

3

 

 

 

) mod 17 = (48 − 128 + 24) mod 17 = 12

4 − 2

 

4 − 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Видим, что получили исходный основной ключ = 12 – вычисления проведены верно.

3

Часть 2. Разделение сеансового ключа

Шифруем файл Primer.txt одной из модификаций алгоритма DES с использованием случайно сгенерированного ключа. Для этого используем программу «DivisionSecret». Ключ при этом сохраняем в отдельном файле:

Рис. 1. Шифрование файла.

Ключ: 2478000792053669

Выберем произвольным образом параметры (n,m) схемы разделения секретов, n<10, m<4:

= 9

= 4

Модуль p генерируется программой:

Рис. 2. Генерация модуля p.

4

Выполним разделение секретов:

Рис. 3. Вычисление теней.

Восстановим основной ключ по произвольно выбранным m теням. Возьмем следующие тени:

5 = 14695903158091796 = 27697929005832647 = 32099622137955608 = 494070129617634

5

Рис. 4. Восстановление основного ключа.

Видим, что восстановленный ключ совпадает с исходным. Сохраняем его в отдельный файл.

Восстановим файл Primer.txt, используя восстановленный ключ:

Рис. 5. Дешифрование файла Primer.cry.

Сохраняем восстановленный файл как Primer_decrypt.txt. Проверяем правильность дешифрования путем непосредственного сравнения восстановленного файла с исходным файлом:

Рис. 6. Сравнение восстановленного и исходного файлов.

6

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

5 = 14 95903158091796 = 7697929005832647 = 320996 2137955608 = 49407012961763

Рис. 7. Восстановление основного ключа. Видим, что восстановленный ключ отличается от исходного:

= 2478000792053669

′ = 226936647343534

7

Выполняем дешифрование и сравниваем файлы:

Рис. 8. Сравнение восстановленного и исходного файлов. Видим, что дешифрование выполнено неправильно.

Вывод:

В ходе лабораторной работы мы закрепили знания, полученные на лекциях дисциплин “Основы криптографии с открытым ключом“ и “Криптографические протоколы” по теме «протоколы разделения секрета».

8

Соседние файлы в папке 12_ЛР