
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
_____________________________________________________________________________
Кафедра информационной безопасности телекоммуникационных систем
Дисциплина «Основы криптографии с открытыми ключами»
Практическое задание 7
«Изучение квантового алгоритма Шора факторизации модуля криптосистемы РША»
Выполнила: студ. гр. .
. .
Проверил: проф. Яковлев В.А..
Санкт-Петербург
2021
Цель работы
Ознакомление с квантовым алгоритмом факторизации Шора и основами квантовых вычислений, наблюдение принципа работы квантового алгоритма в симуляции. Изучение способа факторизации модуля методом поиска периода для взлома криптосистем РША.
Программное обеспечение
Для работы используются программы QuantumSimulator.exe и ContFrac.exe из учебного каталога.
Задание
Найти период функции
, где
, методом простого перебора. Использовать найденный период для факторизации модуля
. Параметры
и заданы в соответствии с вариантом из таблицы
Ознакомиться с квантовой частью алгоритма Шора и выполнить вручную процесс квантового возведения в степень в виде записи состояния регистров для двух периодов. Выбрать любое значение
и составить для него суперпозицию состояний регистра
.
Рассчитать непрерывную дробь вида
, где
– двузначный номер студента в журнале (для номеров 01–09 взять 31–39),
– двузначный номер группы, а
– сгенерированное на основе полученного знаменателя
в программе ContFrac.exe число.
Ознакомиться с выполнением квантового алгоритма Шора с помощью программы-симулятора QuantumSimulator.exe, проанализировать полученные результаты и сделать выводы.
Таблица 1. Вариант задания для выполнения лабораторной работы.
№ |
|
|
6 |
6 |
21 |
Выбор |
2 |
21 |
Так как gcd(a,M) = gcd(6,21)=3 ≠ 1,
выберем а=2, тогда gcd(a,M) = gcd(2,21) =1 – условие соблюдается.
Ход работы
Найдем период функции , где , методом простого перебора.
НОД(2,21)=1,
рассмотрим
функцию
Таблица
2. Функция
х |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
… |
|
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
210 |
211 |
212 |
213 |
… |
|
1 |
2 |
4 |
8 |
16 |
11 |
1 |
2 |
4 |
8 |
16 |
11 |
1 |
2 |
… |
Из таблицы видно, что период повторения функции r = 6.
Поскольку r – четное, то его можно представить как r = 2k.
Тогда
получим
→
Тогда, используя формулу разности квадратов, запишем
→
С
помощью алгоритма Евклида мы можем
найти числа p и q как
и
.
Для r = 6:
Проверяем:
Выполним квантовое возведение в степень для двух периодов.
Для
составить суперпозицию состояний
регистра
.
Для
данного варианта М=21,
М2=441.
Тогда
,
а
состояние
будет иметь вид:
.
Тогда
каждому фиксированному состоянию
регистра
,
соответствует последовательность
значений регистра
(Таблица 3):
Таблица 3. Состояния регистров
|
|
|
|
|
|
|
|
|
|
|
|
… |
… |
… |
… |
… |
… |
|
|
|
|
|
|
… |
… |
… |
… |
… |
… |
|
|
|
|
|
|
После
измерения состояния регистра
в соответствии с заданием мы получили
фиксированное состояние
,
которому соответствует
последовательность
значений х
вида:
,
Таким образом, было рассмотрено состояние регистров на этапе выполнения квантового возведения в степень и получена суперпозиция состояний в регистре , соответствующих фиксированному состоянию регистра – .
Рассчитаем непрерывную дробь вида
, где
– номер студента по варианту (для номеров 01–09 взять 31–39),
– номер группы, а – сгенерированное на основе полученного знаменателя
в программе CoutFrac.exe число.
Номер студента из группы №84 по журналу 06, то есть в соответствии с заданием для данного варианта знаменатель непрерывной дроби имеет вид 3684. Запустим программу CountFrac.exe и выберем вариант «Сгенерировать числитель»: