Лабораторные и практики / 07_ЛР / 7_ЛР
.pdfМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
_____________________________________________________________________________
Кафедра информационной безопасности телекоммуникационных систем Дисциплина «Основы криптографии с открытыми ключами»
Практическое задание 7
«Изучение квантового алгоритма Шора факторизации модуля криптосистемы РША»
Выполнила: |
студ. гр. |
|
. |
. .
Проверил: |
проф. Яковлев В.А.. |
Санкт-Петербург
2021
Цель работы
Ознакомление с квантовым алгоритмом факторизации Шора и основами квантовых вычислений, наблюдение принципа работы квантового алгоритма в симуляции. Изучение способа факторизации модуля методом поиска периода для взлома криптосистем РША.
Программное обеспечение
Для работы используются программы QuantumSimulator.exe и ContFrac.exe из учебного каталога.
1. Найти период функции
a |
x |
|
Задание
mod M , где x
1,2,3...
, методом простого
перебора. Использовать найденный период для факторизации модуля M . Параметры a и M заданы в соответствии с вариантом из таблицы 1
2.Ознакомиться с квантовой частью алгоритма Шора и выполнить вручную процесс квантового возведения в степень в виде записи
состояния регистров для двух периодов. Выбрать любое значение |
y |
и |
составить для него суперпозицию состояний регистра x .
3. Рассчитать непрерывную дробь вида |
m |
, где |
N |
– двузначный номер |
|
NG |
|
|
студента в журнале (для номеров 01–09 взять 31–39), |
G |
– двузначный |
номер группы, а m – сгенерированное на основе полученного знаменателя NG в программе ContFrac.exe число.
4.Ознакомиться с выполнением квантового алгоритма Шора с помощью программы-симулятора QuantumSimulator.exe, проанализировать полученные результаты и сделать выводы.
Таблица 1. Вариант задания для выполнения лабораторной работы.
№ |
a |
M |
|
|
|
6 |
6 |
21 |
|
|
|
Выбор |
2 |
21 |
|
|
|
Так как gcd(a,M) = gcd(6,21)=3 ≠ 1,
выберем а=2, тогда gcd(a,M) = gcd(2,21) =1 – условие соблюдается.
1. Найдем период функции перебора.
a x
Ход работы
mod M , где x
1,2,3...
, методом простого
НОД(2,21)=1, рассмотрим функцию
Таблица 2. Функция |
2 |
x |
mod 21 |
|
||||||||||||||||
|
|
|||||||||||||||||||
х |
|
|
|
0 |
|
|
1 |
|
|
2 |
|
|
|
3 |
|
|
4 |
|
|
5 |
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
|
|
20 |
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
mod 21 |
|
1 |
|
|
2 |
|
|
4 |
|
|
|
8 |
|
|
16 |
|
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f |
|
(x) a |
x |
mod M |
f |
|
(x) 2 |
x |
mod 21 |
|||||||||||
a |
|
2 |
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
… |
|||
|
|
|
|
|
|
|
|
|
||||||||||||
|
26 |
|
27 |
|
28 |
|
29 |
|
210 |
|
211 |
|
212 |
|
213 |
|
… |
|||
|
1 |
|
2 |
|
4 |
|
8 |
|
16 |
|
11 |
|
1 |
|
2 |
|
… |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
период r = 6 период r = 6
Из таблицы 2 видно, что период повторения функции r = 6. Поскольку r – четное, то его можно представить как r = 2k. Тогда получим a r a 2k 1mod M → 26 = 22∙3 21 = 1 Тогда, используя формулу разности квадратов, запишем
|
|
(26)2 = (26 − 1)(26 + 1) → (26 − 1)(26 + 1) 21 = 0 |
||
С помощью алгоритма |
Евклида мы можем найти числа p и q как |
|||
НОД (a |
k |
1, M ) p и НОД (a |
k |
1, M ) q . |
|
|
Для r = 6:
p q
НОД ((2 |
3 |
|
|
НОД ((2 |
3 |
|
1),21) 1),21)
НОД НОД
(8 (8
1,21) 1,21)
НОД (7,21) НОД (9,21)
7, 3.
Проверяем:
p q 3 7 21 M
2. Выполним квантовое возведение в степень для двух Для y 4 составить суперпозицию состояний регистра
периодов. x .
Для данного варианта М=21, М2=441. Тогда |
N |
|||||||
состояние 2 |
будет иметь вид: |
|
|
|
||||
512 |
|
|
|
|
|
|
||
2 |
1 |
x |
2 x mod 21 |
1 |
[ 0 |
1 1 2 |
2 4 |
|
|
|
|||||||
|
32 x 0 |
32 |
|
|
|
|
2 |
n |
M |
2 |
N 512 2 |
9 |
|
|
|
3 8 416 511
, а
61
7 2 8 4 ... 29 1 22x 1 mod M ] .
Тогда каждому фиксированному состоянию регистра последовательность значений регистра x (Таблица 3):
y
, соответствует
01
61
…
241
…
5061
Таблица 3. Состояния регистров
1 2 |
|
2 |
4 |
3 |
8 |
|
4 16 |
||
7 |
2 |
8 |
4 |
|
9 |
8 |
|
10 16 |
|
… |
|
|
… |
|
|
… |
|
|
… |
25 |
|
2 |
26 |
|
4 |
27 |
8 |
28 16 |
|
… |
|
|
… |
|
|
… |
|
|
… |
507 |
2 |
508 |
4 |
509 |
8 |
510 16 |
x y
511
1111
…
2911
…
51111
После измерения состояния регистра
y
в соответствии с заданием мы
получили фиксированное состояние последовательность значений х вида:
y |
4 |
, которому соответствует
|
|
1 |
|
2 |
|
... 508 4 |
1 |
|
A 1 |
|||
2 |
|
|
8 26 |
|
r j l 4 , |
|||||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|||||||
|
|
|
А |
|
|
|
|
A j 0 |
||||
|
|
Таким образом, |
было рассмотрено состояние регистров на этапе |
выполнения квантового возведения в степень и получена суперпозиция состояний в регистре x , соответствующих фиксированному состоянию
регистра
y
–
y
4
.
3. Рассчитаем непрерывную дробь вида
m NNGG
, где
NN
– номер студента по
варианту (для номеров 01–09 взять 31–39), |
GG – номер группы, а m – |
|
сгенерированное на основе полученного знаменателя |
NNGG в программе |
|
CoutFrac.exe число. |
|
|
Номер студента из группы №84 по журналу 06, то есть в соответствии с заданием для данного варианта знаменатель непрерывной дроби имеет вид 3684. Запустим программу CountFrac.exe и выберем вариант «Сгенерировать числитель»:
Рис. 1. Ввод знаменателя NNGG.
Рис. 2. Генерация числителя m. Сгенерировали m= 861 и получили дробь 18893684
Разложение полученной непрерывной дроби:
_ |
3684 |
|
1889 |
|
|
|
1889 |
= 0 |
+ |
|
|
|
1 |
|
|
|
|
1889 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
3684 |
|
|
|
1 |
|
|
|||||
|
1795 |
|
|
|
|
|
|
|
|
1 + |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
||
_ |
1889 |
|
1795 |
_ |
9 |
|
4 |
|
|
1 + |
|
|
|
|||
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|||||||||
|
1795 |
|
1 |
|
|
|
19+ |
|
1 |
|
||||||
|
94 |
|
|
|
8 |
|
2 |
|
|
|
1 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
10 + |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
_ |
1795 |
|
|
|
|
|
|
|
|
|
|
|
2 + |
1 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
94 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
1786 |
|
19 |
_ |
4 |
|
1 |
|
|
|
|
|
|
|
4 |
|
|
9 |
|
|
|
4 |
|
4 |
|
|
|
|
|
|
|
|
|
_ |
94 |
|
9 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
90 |
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проверка разложения дроби в программе CoutFrac.exe
Рис. 3. Ввод последнего полученного знаменателя.
Результат разложения непрерывной дроби с вычислением промежуточных дробей
Рис. 4. Разложение дроби в программе.
Разложение непрерывной дроби, полученной в соответствии с вариантом, было осуществлено верно, что подтверждают результаты выполнения программы ContFrac.exe.
4. Ознакомление с выполнением квантового алгоритма Шора с помощью программы-симулятора QuantumSimulator.exe, анализ полученных результатов.
Рассмотрим процесс симуляции выполнения квантового алгоритма Шора для модуля = 21.
Рис. 6. Запуск программы-симулятора.
Программой было выбрано целое число = 2 , количество кубит, необходимое для задания размера квантовых регистров = 9 и, соответственно, в этом случае количество состояний каждого регистра = 512.
Рис. 7. Вычисленные программой справочные данные.
Проверим: 2 = 212 = 441 < 512 = = 29 = 2 – верное,
НОД( , ) = НОД(2; 21) = 1 – верное.
В результате выполнения квантового возведения в степень для функции 2 21 для всех состояний регистра | , в регистре | были получены следующие значения:
{1; 2; 4; 8; 11; 16}
Рис. 8. Квантовое возведение в степень.
В результате измерения состояния регистра | было получено фиксированное значение = 16 , которому соответствует суперпозиция периодических последовательностей состояний в регистре | ,
Рис. 9. Измерение состояния квантового регистра | .
В результате применения для суперпозиции, содержащейся в регистре | , квантового преобразования Фурье, были получены следующие значения
{0; 86 - 95; 171 - 224; 342 - 351; 427 - 480}:
Рис. 10. Квантовое преобразование Фурье над регистром | .
В результате измерения состояния регистра | было выбрано фиксированное значение = 427:
Рис. 11. Измерение состояния квантового регистра | .
Дробь вида = 427512 передана на постобработку, которая выполняется на классическом компьютере. Произведено разложение непрерывной дроби
|
= |
427 |
= 0 + |
1 |
|
|
||
|
512 |
1+ |
|
|
1 |
|
||
|
|
|
|
1 |
|
|||
|
|
|
|
5+ |
|
|
||
|
|
|
|
|
1 |
|||
|
|
|
|
|
|
|
||
|
|
|
|
42+2 |
и получены числа, которые могут рассматриваться как периоды: {1; 1; 6; 253}. Проведена попытка восстановить период.
Рис. 12. Разложение непрерывной дроби в симуляторе квантовых вычислений.
Рассчитанный период = 6; Степень k = r/2 = 3.
Расчет коэффициентов разложения = 21:
= НОД((23 + 1),21) = НОД(8 + 1,21) = НОД(7,21) = 3= НОД((23 − 1),21) = НОД(8 − 1,21) = НОД(3,21) = 7.
Факторизация была произведена успешно. Проверяем:
= 3 7 = 21 = .
Рис. 13. Факторизация модуля М = 21.
Следовательно, значение модуля = 21 успешно факторизовано, значит, криптосистема может быть взломана.
Таким образом, был исследован принцип работы квантового алгоритма Шора, рассмотрены отдельные этапы его выполнения и сделаны соответствующие выводы.
Вывод:
В ходе выполнения данной лабораторной работы ознакомились с квантовым алгоритмом факторизации Шора и основами квантовых вычислений, наблюдение принципа работы квантового алгоритма в симуляции.