Скачиваний:
35
Добавлен:
29.06.2022
Размер:
1.08 Mб
Скачать

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

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

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

_____________________________________________________________________________

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

Практическое задание 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 успешно факторизовано, значит, криптосистема может быть взломана.

Таким образом, был исследован принцип работы квантового алгоритма Шора, рассмотрены отдельные этапы его выполнения и сделаны соответствующие выводы.

Вывод:

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

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