Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Квантовые вычисления. Теория и практика. Учебник

.pdf
Скачиваний:
3
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
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) = pqpq + 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.
