Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Квантовые вычисления. Теория и практика. Учебник
.pdf
8.1. Асимметричное шифрование
быстра задача для классического компьютера. Так что пользователь, создавший ключ, может не беспокоиться о сохранности посланной ему информации – даже если злоумышленники перехватят зашифрованные сообщения и публичный
ключ, они не смогут разложить ключ на множители за разумное время (меньшее чем тысячи лет), а значит, и не смогут
прочитать сообщение, посланное пользователю.
Публичный
Пользователь Собеседник
Зашифрованное сообщение
Рис. 8.1. Пользователь и собеседник
ключ
С полной уверенностью пользователь может считать, оба
множителя известны только ему, так как их перемножение,
в результате которого был получен публичный ключ, происходило на его стороне и множители никто кроме него не видел. Правда, это справедливо только до тех пор, пока в дело
не вступят квантовые компьютеры. Тогда злоумышленники, перехватившие публичный ключ, смогут разложить его
на простые множители и расшифровать сообщение.
Прежде чем перейти непосредственно к алгоритму Шора,
разберемся, каким образом простые числа помогают расшифровке сообщения. Рассмотрим один из самых популярных алгоритмов асимметричного шифрования – RSA.
Представим, что у нас есть некоторое сообщение, которое необходимо отправить в зашифрованном виде. Запишем это сообщение в виде двоичного числа m (сокращение от message).
Далее, для того чтобы зашифровать сообщение, возведем его
в степень e. Это некоторое целое число, как его выбрать, разберем позже. Затем найдем остаток от деления на N:
131

Глава 8. Алгоритм Шора
e
.
mmN
encoded
()
Итак, мы зашифровали сообщение, использовав числа
e и N, которые являются открытым ключом, то есть это тот
ключ, который пользователь отправил своему собеседнику –
автору сообщения.
После того как пользователь получает это зашифрованное
сообщение, он может расшифровать его с помощью закрытого ключа – чисел N и d. Если число N является также и частью открытого ключа и его могут узнать все, кому удалось
перехватить трафик, то число d хранится в тайне и находится
только на компьютере пользователя, не попадая в сеть. Расшифровка сообщения производится аналогичным способом:
d
mmNm
decoded encoded
()
.
Мы получили первоначальное сообщение, но у нас получилось это сделать только потому, что числа d и e выбраны особым образом. К числу N также есть требования: оно
должно быть больше числа m, иначе нахождение остатка
от деления на N не позволит получить первоначальное сообщение. Также важно, чтобы N являлось произведением двух
простых множителей.
Здесь у нас появляется необходимость использовать некоторые сведения из теории колец, а также знать простейшие
правила арифметики остатков. Мы узнаем, как связаны числа e, d и N, а также поймем, почему, найдя простые множители числа N, мы довольно быстро сможем найти и число d.
Будем считать, что у нас есть некоторое большое число
N, но не будем рассматривать многозначные числа, как в реальном алгоритме, чтобы не приводить объемные расчеты,
а возьмем число 15, полученное как произведение двух разных простых чисел:
N = pq,
где N = 15; p = 3; q = 5.
132

8.1. Асимметричное шифрование
Теперь обратим внимание на числа меньше N. Среди них
найдется q – 1 чисел, делящихся на p так, что они не будут
взаимно простыми с N. Аналогично есть p – 1 чисел, деля-
щихся на q так, что они также не будут взаимно простыми
с N. Среди чисел меньше N не будет таких, которые делятся
и на p, и на q, так как N = pq. Отсюда можно найти количество чисел от 1 до N – 1 включительно, являющихся взаимно
простыми с N:
(N) = N – 1 – (p – 1) – (q – 1),
где (N) – функция Эйлера, которая как раз и показывает
количество взаимно простых чисел.
В данном случае таких чисел будет 8. Если заменить N
на pq, то можно получить более компактный вид выражения:
(N) = pq – 1 – (p – 1) – (q – 1) = pq – p – q + 1 = (p – 1) (q – 1).
Согласно теореме Эйлера из теории чисел, если взять некоторое число s, которое является взаимно простым с числом
N, то будет соблюдаться следующее равенство:
(N)
= 1(N).
s
Другими словами, любое такое число s, возведенное в степень (N), при делении на N даст остаток 1. Если взять s,
равное 2, то получим число 256, которое действительно дает
остаток 1 при делении на 15. А если взять s = 4, то получим
65 536 – число, которое также дает остаток 1. Теорема Эйлера пригодится, когда нужно будет понять, как раскрыть число d, зная (N).
Вернемся к шифрованию. Нам нужно выбрать такое число e, чтобы оно было взаимно простым не только с N, но и
с (N), так что наименьшее подходящее число – это 7. Также
понадобится правильно выбрать число d. Это число должно
быть меньше N, а также должно соблюдаться условие
133

Глава 8. Алгоритм Шора
ed = 1((N)),
то есть ed при делении на значение функции Эйлера должно
давать в остатке единицу. Зная, что e = 7 и (N) = 8, можно
подобрать одно из возможных подходящих значений для d.
Подходит только d = 7. Но недопустимо, чтобы d было равно
числу e, иначе при совпадении этих чисел пропадает смысл
закрытого ключа, так как закрытый ключ будет совпадать
с открытым. А вот если взять число e = 11, то для него подойдет d = 3. Остаток от деления 33 на 8 равен единице, так что
это как раз то, что нужно.
Теперь мы можем взять сообщение m, взаимно простое
с N, а также меньше чем N. Числа e и N, как и ранее, мы будем считать открытым ключом, а числа d и N – закрытым.
Рассмотрим конкретный пример. Пусть нужно зашифровать сообщение, равное 8. Обозначим зашифрованное сообщение как m
mmN .
encoded
и посчитаем его значение:
encoded
e
( ) 8 (15) 8 589 934 592(15) 2
11
А теперь расшифруем, используя знание секретного числа d:
d
mm N.
()2(15)8
encoded
3
При большом числе N злоумышленник не сможет за разумное время расшифровать сообщение. Но если знать простые множители p и q числа N, то задача значительно упрощается: сначала можно легко найти (N) как произведение
(p – 1) и (q – 1), а затем и число d, являющееся частью закрытого ключа, которое как раз и требуется злоумышленнику
для расшифровки.
Рассмотрим, как можно найти число d. Для начала проследим весь процесс изменения сообщения – от его шифрования до восстановления в первоначальном виде:
ed ed
( ())() ()
mmN NmN.
134

8.1. Асимметричное шифрование
В то же время, зная теорему Эйлера, можно заметить такой факт:
() ()1
kN kN
mm N mm N m N
1( ) ( ) ( ),
где k – целое число.
Зная простые множители числа N, мы сразу можем найти (N), а далее, использовав два предыдущих тождества,
получить следующее:
()1ed k N .
Зная числа e и (N) (k при этом неизвестно), можно, используя алгоритм Евклида, достаточно быстро (а точнее,
за полиномиальное время) найти число d, необходимое для
расшифровки сообщения. Мы увидели, что, узнав простые
числа, являющиеся множителями числа N, мы достаточно
легко узнаем также и сообщение в незашифрованном виде.
Как найти простые множители (далее будем называть их
p и q) числа N? Представим, что у нас есть некоторая периодическая функция f(x) с периодом r. Эта функция равна
x
остатку от деления a
на N:
() ( ),
fx a N
x
где a – некоторое взаимно простое с N число меньше N.
При этом r – это наименьшее натуральное число, для которого соблюдается условие
r
1( )
aN .
Этот период r квантовый компьютер и помогает найти,
причем это число должно быть четным. Тогда можно перейти от полученного из предыдущего условия выражения
r
1
aNk
к выражению
/2 /2
rr
11
aa Nk.
135

Глава 8. Алгоритм Шора
Число (a
r/2
– 1) не делится нацело на N, иначе было бы
справедливо
/2
r
1( ),
aN
что не может быть верным, ведь r/2 не может быть периодом
функции, так как мы исходим из того, что периодом явля-
r/2
ется r. Также мы полагаемся на то, что (a
+ 1) не делится
на N без остатка. Учтя все вышеприведенное, можно утверждать, что простые числа p и q, произведение которых дает
N, не являются одновременно делителями какой-то одной
из скобок, а как бы распределены между ними: одна из скобок делится нацело на p, а другая – на q. Таким образом, найдя период функции f(x), то есть число r, при заданном числе
a, мы уже находимся достаточно близко к нашей цели – разложению числа N на простые множители. Все, что нам осталось сделать, – найти наибольший общий делитель (НОД) N
с одной из скобок, а затем – второй множитель путем деления N на найденное число.
Разумеется, такой способ решения сработает только в том
случае, если у случайно выбранного числа a период функции
r будет четным, но вероятность такого везения должна наблюдаться не менее чем в половине случаев.
Прежде чем рассмотреть подробности квантового алгоритма, соберем все необходимые шаги, необходимые для поиска простых множителей, в единый план, выделив отдельно действия, которые будут производиться на классическом
компьютере, и действия, которые предназначены для квантового компьютера.
Сначала на классическом компьютере нужно выбрать некоторое случайное число a, которое меньше N, и убедиться,
что НОД чисел a и N равен 1. При этом есть какая-то небольшая вероятность, что a – простой множитель числа N, но
тогда a окажется равным p или q, так что не придется проделывать остальные шаги. Если же НОД для a и N все-таки
136

8.2. Квантовое преобразование Фурье
равен 1, то в дело вступает квантовый компьютер, на кото-
x
ром мы будем вычислять период функции f(x) = a
(N). После нахождения периода r возвращаемся обратно к классическому компьютеру, проверяем это число. Если r нечетное, то
придется вернуться к первому шагу и выбрать другое a. Если
же r четное, то нужно сделать еще одну проверку: удостове-
r/2
риться, что (a
+ 1) не делится на N без остатка. Если делится, то возвращаемся в начало и выбираем другое a, а если
не делится, то вычисляем НОД(a
r/2
– 1, N) или НОД(a
r/2
+ 1,
N), находя тем самым простые числа p и q, являющиеся множителями числа N.
Итак, наша задача поиска простых множителей свелась
к поиску периода некоторого произвольно выбранного нами
числа. Пришло время рассмотреть, чем здесь может помочь
квантовый компьютер.
8.2. Квантовое преобразование Фурье
Квантовое преобразование Фурье (далее будем называть
его QFT – сокращение от Quantum Fourier Transform), являющееся квантовым аналогом быстрого преобразования
Фурье, помимо того, что может использоваться как самостоятельный алгоритм, входит также в состав алгоритма Шора,
помогающего найти период функции. Преобразование Фурье
может применяться в классических вычислениях, например
для преобразования звуковых колебаний в спектр, то есть
в набор звуковых частот с разными амплитудами. Если применить обратное преобразование Фурье, то можно на основе
спектра восстановить первоначальный звуковой сигнал. Такие преобразования можно использовать при сжатии звукового сигнала (или другой подобной информации), преобразовании аналоговых сигналов в цифровые и наоборот.
Нас интересует дискретное преобразование Фурье, которое
является удобным для практических целей. Функция, для которой нужно найти спектр, представляется в виде отдельных
137

Глава 8. Алгоритм Шора
значений, как правило, с определенным шагом. Спектр также
представляется в виде дискретных значений. Для такого преобразования существуют способы ускорения расчетов, применяемые в быстром преобразовании Фурье. Квантовое преобразование Фурье аналогично этому методу, за исключением
того, что это не классический, а квантовый алгоритм, созданный для расчета дискретного преобразования Фурье с помощью квантового компьютера. Так как при поиске периода
функции при применении алгоритма Шора требуется работать
с целыми числами, то применение дискретного преобразования является не только удобным, но и естественным.
Мы рассмотрим QFT отдельно, в виде самостоятельного
унитарного многокубитного квантового оператора, состоящего из нескольких одно- и двухкубитных операторов. Сначала рассмотрим математические основы преобразования
Фурье, а затем перейдем к реализации с использованием
кубитов и применим эффекты, характерные для квантовых
компьютеров – суперпозицию и квантовую запутанность.
Преобразование Фурье переводит состояние из вычислительного базиса в базис, который мы можем назвать базисом
Фурье – это базис, образованный векторами |+ и |– (уже знакомый нам базис Адамара). В случае одного кубита оператор
преобразования Фурье максимально прост – это оператор
Адамара:
11
1
H
11
2
.
В случае многокубитной системы, к которой применяется оператор QFT, из начального базисного вектора этой системы будут получаться новые векторы состояния, располагающиеся на сфере Блоха в плоскости xy (обратите внимание
на то, что в этой главе x и y также используются и для других целей – для обозначения входных и выходных значений
кубитов в схеме квантового преобразования Фурье).
138

8.2. Квантовое преобразование Фурье
Таким образом, если начальное базисное состояние кубитов можно представить в виде последовательности нулей и
единиц, то после применения QFT результирующее состояние будет определяться поворотом вектора состояния каждого кубита на определенный угол относительно состояния |+
в плоскости xy сферы Блоха, то есть фазой :
1
ye
k
2
i
k
01,
где |y k – состояние одного из выходных кубитов.
Квантовое преобразование Фурье можно представить
в виде формулы
1
N
QFT x e y
1
N
y
0
2/
ixy N
,
где N = 2n, то есть количество базисных состояний
n-кубитной системы; |x – значение n-кубитной системы
на входе оператора QFT; |y – значение системы кубитов, отвечающее за вывод результата после применения преобразования Фурье.
Таким образом, пользуясь данной формулой, можно узнать амплитуды всех возможных состояний одно- или многокубитной системы |y, если на вход QFT поступило одно
из базисных состояний n-кубитной системы |x. Для состояний кубитных систем, обозначаемых в формуле как x и y,
особенно если они применяются в качестве множителей,
удобно использовать десятеричное представление, а там, где
они записаны в кет-векторах, можно применять и двоичную
запись, то есть так, как мы обычно и делаем, обозначая состояния кубитов. При этом, например, такая
или такая
7x
4y
139

Глава 8. Алгоритм Шора
запись не должна вас смущать, так как означают они соответственно следующее:
111x ;
100y
при условии, что речь идет о трехкубитной системе. Если же
кубитов больше, то нужное количество нулей можно дописать внутри кет-вектора с левой стороны.
Для перехода от десятичного числа к состоянию системы
кубитов мы можем сначала представить это состояние как
последовательность буквенных выражений с нижним индексом, обозначающим номер кубита:
,xxxx
123
а далее разложить число на слагаемые, являющиеся степенями двойки с показателями от 0 до n – 1:
210
7222xxx.
12 3
Отсюда получаем
7 111 .
Если ознакомиться с тем, как получить оператор QFT
для однокубитной системы, то можно увидеть особенность,
которая будет соблюдаться и для систем с большим количеством кубитов. Эта особенность состоит в том, что амплитуда при состоянии 0 всегда будет действительным числом
(это в какой-то мере упрощает восприятие данной формулы),
чего нельзя сказать об амплитуде при состоянии 1 – ее фаза
здесь будет меняться, что и обеспечит разные углы поворота
вектора состояния отдельного кубита в плоскости xy сферы
Блоха:
1
11 1
2/2 0
QFT x e y e e
22 2
140
ixy ix x
0
y
01 0(1)1.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
