
1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
Дисциплина Криптографические протоколы
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №1
ОСНОВЫ ТЕОРИИ ЧИСЕЛ
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Выполнил студент 3 курса:
Травкина Е.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Преподаватель:
д.т.н., проф. Яковлев В.А.
(Ф.И.О., № группы) (подпись)
Лабораторная работа 1. ОСНОВЫ ТЕОРИИ ЧИСЕЛ
Цель работы
Закрепить знания, полученные на лекциях дисциплин «Криптографические методы защиты информации», «Криптонрафические протоколы» и приобрести навыки вычислений по блоку занятий «Математический базис криптосистем с открытым ключем».
Порядок
Установкить пакета программ “Maxima”
1.Перейти к пакету “Maxima”(M), выбрав в нем функцию integerp.
.Задавшись не менее, чем тремя произвольными пятиразрядными числами n и d проверить, являются ли числа d делителями n, используя следующие команды:
integerp(n/d)
2. Используя функцию divisors(n) в пакете (М) найти делители не менее чем трех пятиразрядных чисел при помощи следующей команды:
divisors(n)
Убедиться в правильности расчетов “вручную”.
3.Используя функцию gcd(a,b) пакета (М) найти gcd одной пары четырех разрядных чисел и не менее чем четырех пар пятизначных чисел, одна из которых соответствует взаимно простым числам, при помощи следующей команды:
gcd(a,b)
Убедиться в правильности расчетов “вручную” (на бумаге), выполнив следующее задание
Вариант №19 → НОД(4848,1220)
4848 = 1220*3+1188
1220 = 1188*1+32
1188 = 32*37+4
32=4*8
НОД(4848,1220) = 4
4. Для найденных в п.3 пяти gcd(a,b), найти их канонические представления при помощи расширенного алгоритма Евклида при помощи следующей команды:
gcdex(a,b)
Проверим правильность канонических представлений для всех случаев. Если функция отображает верный результат, то должно соблюдаться равенство (z1*a+z2*b)mod(b)= c, где z1, z2 - коэффициент перед большим числом a и коэффициент перед меньшим числом b соответственно, c равно НОД(a, b).
z1 |
z2 |
(z1*a+z2*b)mod(b) |
c |
Равенство |
3511 |
-1430 |
(3511*3251 - 1430*7982) mod 7982=1 |
1 |
соблюдается |
973 |
-453 |
(33894*973 – 72801*453) mod 72801=9 |
9 |
соблюдается |
10928 |
-9421 |
(38720*10928-44923*9421) mod 44923=1 |
1 |
соблюдается |
-3858 |
3683 |
(-78290*3858+82010*3683) mod 82010=10 |
10 |
соблюдается |
-19593 |
10750 |
(-38293*19593+69793*10750) mod 69793=11 |
1 |
соблюдается |
5.Для одного четырехразрядного числа и не менее чем для четырех произвольно выбранных пятизначных чисел a сделать их приведение по модулям произвольных меньших чисел m при помощи команды:
mod(a,m)
Убедиться в правильности расчетов для первого числа “вручную”.
2222 mod 2000 = (2000*1+222) mod 2000 = 222 mod 2000 = 222
6. .Найти мультипликативно обратные элементы к одному двухразрядному числу и не менее чем к четырем 9-ти значным числам a по простым двузначным модулям m при помощи следующей команды:
power_mod(a,-1,m)
Убедиться в правильности расчетов “вручную”, выполнив следующее задание:
Вариант №19 → a=103, b=157
103-1 mod 157?
157=103*1+54 → 54 = 157-103
103 = 54*1+49 → 49 = 103-54
54 = 49*1+5→ 5 = 54-49
49 = 5*9+4 → 4 = 49-5*9
5 = 4*1+1 → 1 = 5-4
1 = 5-4=(54-49)-(49-5*9)=(157-103-103+157-103)-(103-(157-103)-9*(157-103-103+157-103)) = -32*103 +21*157
103-1 mod 157 = 125
7.Рассчитать функцию Эйлера для одного двухразрядного числа не менее чем четырех четырехзначных чисел m, используя команду:
totient(m)
Убедиться в правильности расчетов для первого числа “вручную”.
φ(41) = 41-1 = 40
8.Для двух пар произвольных четырехзначных, но взаимно простых чисел a и m, проверить справедливость теоремы Эйлера при помощи следующей команды:
mod(a^ totient(m),m)
9.Произвести возведение 5-значного произвольного числаaв степень произвольного 15-значного числа bпо произвольному 4-х значному модулю m, используя команду:
power_mod(a,b,m)
Используя алгоритм быстрого возведения в степень, вычислить вручную:
Вариант №9 → 5119 mod 7
119 = 26+25+24+22 +21+20=64+32+16+4+2+1
5119mod 7 = 564+32+16+2+1 mod 7 = 564∙532∙516∙54 ∙52∙51mod 7
51 mod 7 = 5
52 mod 7 = 4
54 mod 7 = 52 ∙ 52 mod 7 =4 ∙ 4 mod 7 =2
58 mod7 = 54 ∙ 54mod7 = 2 ∙ 2 mod 7 = 4
516 mod7 = 58 ∙ 58mod7 = 4 ∙ 4 mod 7 = 2
532 mod7 = 58 ∙ 58 ∙ 58 ∙ 58 mod7 = 4 ∙ 4 ∙ 4 ∙ 4 mod 7 = 4
564 mod7 = 532 ∙ 532 mod7 = 4 ∙ 4 mod 7 = 2
5119mod7 = 564 ∙ 532 ∙ 516 ∙ 54 ∙52∙51 mod 7 = 2 ∙ 4 ∙ 2 ∙ 2*4 ∙ 5 mod 7 = 3
5119 mod 7 = 3
10. Решить систему уравнений на основе использования китайской теоремы об остатках.
,
№ Варианта |
ai |
mi |
|
19 |
3,9,6 |
11,5,13 |
|
Найдем x0 |
по формуле x0 = (M1y1a1 + M2y2a2 + M3y3a3) mod M |
M = 11*5*13 = 715
M1 = M/m1 = 715/11 = 65
M2 = M/m2 = 715/5 = 143
M3 = M/m3 = 715/13 = 55
M1y1 = 1 mod m1 → 65y1 = 1 mod 11 → 10y1 = 1 mod 11 → y1=10-1 mod 11 = 10
M2y2 = 1 mod m2 → 143y2 = 1 mod 5 → 3y2 = 1 mod 5 → y2=3-1 mod 5 = 2
M3y3 = 1 mod m3 → 55y3 = 1 mod 13 → 3y3 = 1 mod 13 → y3=3-1 mod 13 = 9
x0 =(3*65*10+9*2*143+6*55*9) mod 715 = 344
Ответ: x = 344
Разложите в цепную дробь числа: P/Q. Найдите подходящие дроби для k=1,2,3,4
-799 = 1368*(-1)+569
1368= 569*2+230
569 = 230*2+109
230 = 109*2+12
109=12*9+1
12=1*12
Найдите подходящие дроби для k=1,2,3,4
A[-1;2,2,2,9,12]
K |
0 |
1 |
2 |
3 |
4 |
5 |
qk |
q=-1 |
q=2 |
q=2 |
q=2 |
q=9 |
q=12 |
Pk |
-1 |
-1 |
-3 |
-7 |
-66 |
-799 |
Qk |
1 |
2 |
5 |
12 |
113 |
1368 |
A0=-1,
A1=
,
A2
=
,
A3
=
,
A4
=
,
A5
=
12. Решить контрольный пример.
K=37, b= 29-1 mod 37, a=29
29-1 mod 37?
37 = 29*1+8 → 8 = 37-29
29 = 8*3+5 → 5 = 29-8*3
8 = 5*1+3 → 3 = 8-5
5 = 3*1+2 → 2 = 5-3
3 = 2*1+1 → 1 = 3-2
1 = 3-2 = (37-29-(29-(37-29)*3))-((29-(37-29)*3)-( (29-(37-29)*3)- (37-29 -(29-(37-29)*3) )) = -14*29+11*37
29-1 mod 37 = 23
6-1 mod 37 = 31 → 3111 mod 37
11 =8+2+1= 23+21+20
3111 mod 37 = 318*312*311 mod 37
31 mod 37 =31 312 mod 37 =31*31 mod 37 = 36
318 mod 37 = 312*312*312*312 mod 37 = 36*36*36*36 mod 37 = 1
3111 mod 37 = 1*36*31 mod 37 = 6
Вывод
В ходе лабораторной работы мы закрепили знания, полученные на лекциях дисциплин «Основы криптографии», «Криптографические методы защиты информации» и приобрели навыки вычислений по блоку занятий «Математический базис криптосистем с открытым ключом».
Санкт-Петербург
2024