Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 13
Spis treści 19 Algorytmy kwantowe 3 19.1 Bit kwantowy kubit (qubit)........... 3 19. Twierdzenie o nieklonowaniu............ 5 19.3 Bramki logiczne................... 7 19.4 Problem Deutscha................. 13 19.5 Kwantowy paralelizm................ 16 19.6 Algorytm Shora................... 19 19.7 Kwantowa transformata Fouriera.......... 3
19 Algorytmy kwantowe 19.1 Bit kwantowy kubit (qubit) Klasyczny bit może przyjmować dwie wartości {0, 1}. Układ kwantowy, który ma dwa możliwe stany { 0, 1 } może się znajdować w każdym z nich, ale także w stanie będącym syperpozycją stanów bazowych i taki stan nazywamy kubitem. Ψ = a 0 + b 1 Oznacza to, że z prawdopodobieństwem p 0 = a układ znajduje się w stanie 0 i z prawdopodobieństwem p 1 = b w stanie 1, oczywiście p 0 + p 1 = 1. Stan układu kwantowego możemy przedstawić jako wektor na sferze Blocha
19 Algorytmy kwantowe 19.1 Bit kwantowy kubit (qubit) Klasyczny bit może przyjmować dwie wartości {0, 1}. Układ kwantowy, który ma dwa możliwe stany { 0, 1 } może się znajdować w każdym z nich, ale także w stanie będącym syperpozycją stanów bazowych i taki stan nazywamy kubitem. Ψ = a 0 + b 1 Oznacza to, że z prawdopodobieństwem p 0 = a układ znajduje się w stanie 0 i z prawdopodobieństwem p 1 = b w stanie 1, oczywiście p 0 + p 1 = 1. Stan układu kwantowego możemy przedstawić jako wektor na sferze Blocha
19 Algorytmy kwantowe 19.1 Bit kwantowy kubit (qubit) Klasyczny bit może przyjmować dwie wartości {0, 1}. Układ kwantowy, który ma dwa możliwe stany { 0, 1 } może się znajdować w każdym z nich, ale także w stanie będącym syperpozycją stanów bazowych i taki stan nazywamy kubitem. Ψ = a 0 + b 1 Oznacza to, że z prawdopodobieństwem p 0 = a układ znajduje się w stanie 0 i z prawdopodobieństwem p 1 = b w stanie 1, oczywiście p 0 + p 1 = 1. Stan układu kwantowego możemy przedstawić jako wektor na sferze Blocha
19 Algorytmy kwantowe 19.1 Bit kwantowy kubit (qubit) Klasyczny bit może przyjmować dwie wartości {0, 1}. Układ kwantowy, który ma dwa możliwe stany { 0, 1 } może się znajdować w każdym z nich, ale także w stanie będącym syperpozycją stanów bazowych i taki stan nazywamy kubitem. Ψ = a 0 + b 1 Oznacza to, że z prawdopodobieństwem p 0 = a układ znajduje się w stanie 0 i z prawdopodobieństwem p 1 = b w stanie 1, oczywiście p 0 + p 1 = 1. Stan układu kwantowego możemy przedstawić jako wektor na sferze Blocha
1 Ψ 0 Kubit na sferze Blocha
19. Twierdzenie o nieklonowaniu Nie istnieje transformacja unitarna U taka, że dla dowolnego Ψ. U Ψ 0 = Ψ Ψ Dowód: Przypuśćmy, że istnieje U takie, że dla dowolnych Ψ i Φ. U Ψ 0 = Ψ Ψ U Φ 0 = Φ Φ Transformacja U reprezentowała by maszynę klonującą, gdyby taka istniała.
19. Twierdzenie o nieklonowaniu Nie istnieje transformacja unitarna U taka, że dla dowolnego Ψ. U Ψ 0 = Ψ Ψ Dowód: Przypuśćmy, że istnieje U takie, że dla dowolnych Ψ i Φ. U Ψ 0 = Ψ Ψ U Φ 0 = Φ Φ Transformacja U reprezentowała by maszynę klonującą, gdyby taka istniała.
19. Twierdzenie o nieklonowaniu Nie istnieje transformacja unitarna U taka, że dla dowolnego Ψ. U Ψ 0 = Ψ Ψ Dowód: Przypuśćmy, że istnieje U takie, że dla dowolnych Ψ i Φ. U Ψ 0 = Ψ Ψ U Φ 0 = Φ Φ Transformacja U reprezentowała by maszynę klonującą, gdyby taka istniała.
19. Twierdzenie o nieklonowaniu Nie istnieje transformacja unitarna U taka, że dla dowolnego Ψ. U Ψ 0 = Ψ Ψ Dowód: Przypuśćmy, że istnieje U takie, że dla dowolnych Ψ i Φ. U Ψ 0 = Ψ Ψ U Φ 0 = Φ Φ Transformacja U reprezentowała by maszynę klonującą, gdyby taka istniała.
Z unitarności U wynika jednak, że Ψ 0 U U Φ 0 = Ψ Φ Ψ Φ Ψ Φ 0 0 = Ψ Φ Ψ Φ co nie jest prawdziwe dla dowolnych Ψ i Φ, natomiast może zachodzić dla stanów ortogonalnych Ψ Φ = {0, 1}. Stany ortogonalne (klasyczne bity) mogą być kopiowane, natomiast dowolne stany kwantowe nie.
Z unitarności U wynika jednak, że Ψ 0 U U Φ 0 = Ψ Φ Ψ Φ Ψ Φ 0 0 = Ψ Φ Ψ Φ co nie jest prawdziwe dla dowolnych Ψ i Φ, natomiast może zachodzić dla stanów ortogonalnych Ψ Φ = {0, 1}. Stany ortogonalne (klasyczne bity) mogą być kopiowane, natomiast dowolne stany kwantowe nie.
19.3 Bramki logiczne klasyczne kwantowe a 0 + b 1 a 1 + b 0 x x a 0 + b 1 S a 0 b 1 1 R 1 ( 0 + 1 ) Jednobitowe bramki logiczne
klasyczne kwantowe x y x y x x x y x y y CNOT x y Dwubitowe bramki logiczne
W bazie stanów { 0, 1 }, mamy 0 1 0, 1 0 1 Wtedy operacje na stanach kwantowych mają reprezentację macierzową, i tak na przykład U NOT = 0 1 1 0 U NOT 0 = 0 1 1 0 1 0 = 0 1 1
W bazie stanów { 0, 1 }, mamy 0 1 0, 1 0 1 Wtedy operacje na stanach kwantowych mają reprezentację macierzową, i tak na przykład U NOT = 0 1 1 0 U NOT 0 = 0 1 1 0 1 0 = 0 1 1
Operacja przesunięcia fazy, która nie zmienia stanu 0 zaś stan 1 zmienia na 1, ma postać U S = 1 0 0 1 Operacja Hadamarda, czasem nazywana pierwiastkiem kwadratowym z NOT ( NOT), ma postać H = 1 1 1 1 1
Operacja przesunięcia fazy, która nie zmienia stanu 0 zaś stan 1 zmienia na 1, ma postać U S = 1 0 0 1 Operacja Hadamarda, czasem nazywana pierwiastkiem kwadratowym z NOT ( NOT), ma postać H = 1 1 1 1 1
Istnieje nieskończenie wiele bramek kwantowych generowanych przez rotacje o kąt θ U R (θ) = cos θ sin θ sin θ cos θ oraz przesunięcia faz U P (ϕ 1, ϕ ) = eiϕ 1 0 0 e iϕ
Istnieje nieskończenie wiele bramek kwantowych generowanych przez rotacje o kąt θ U R (θ) = cos θ sin θ sin θ cos θ oraz przesunięcia faz U P (ϕ 1, ϕ ) = eiϕ 1 0 0 e iϕ
Operacja CNOT (kontrolowane NOT) na dwóch kubitach ma postać 1 0 0 0 0 1 0 0 U CN = 0 0 0 1 0 0 1 0
19.4 Problem Deutscha Przypuśćmy, że mamy kwantową czarną skrzynkę obliczającą funkcję f(x), tzn. wykonującą transformację unitarną na dwóch kubitach przedstawioną poniżej x? f(x) f : {0, 1} {0, 1} U f : x y x y f(x) Pytanie: Czy po jednym przebiegu kwantowego komputera możemy stwierdzić, że f(0) = f(1)?
19.4 Problem Deutscha Przypuśćmy, że mamy kwantową czarną skrzynkę obliczającą funkcję f(x), tzn. wykonującą transformację unitarną na dwóch kubitach przedstawioną poniżej x? f(x) f : {0, 1} {0, 1} U f : x y x y f(x) Pytanie: Czy po jednym przebiegu kwantowego komputera możemy stwierdzić, że f(0) = f(1)?
19.4 Problem Deutscha Przypuśćmy, że mamy kwantową czarną skrzynkę obliczającą funkcję f(x), tzn. wykonującą transformację unitarną na dwóch kubitach przedstawioną poniżej x? f(x) f : {0, 1} {0, 1} U f : x y x y f(x) Pytanie: Czy po jednym przebiegu kwantowego komputera możemy stwierdzić, że f(0) = f(1)?
19.4 Problem Deutscha Przypuśćmy, że mamy kwantową czarną skrzynkę obliczającą funkcję f(x), tzn. wykonującą transformację unitarną na dwóch kubitach przedstawioną poniżej x? f(x) f : {0, 1} {0, 1} U f : x y x y f(x) Pytanie: Czy po jednym przebiegu kwantowego komputera możemy stwierdzić, że f(0) = f(1)?
Weźmy następujący obwód kwantowy 0 H H Pomiar 1 H U f gdzie H jest kwantową bramką Hadamarda.
Weźmy następujący obwód kwantowy 0 H H Pomiar 1 H U f gdzie H jest kwantową bramką Hadamarda.
19.4.1 Działanie obwodu H : 0 1 ( 0 + 1 ), 1 1 ( 0 1 )
19.4.1 Działanie obwodu H : 0 1 ( 0 + 1 ), 1 1 ( 0 1 ) 0 1 1 ( 0 + 1 )( 0 1 )
19.4.1 Działanie obwodu H : 0 1 ( 0 + 1 ), 1 1 ( 0 1 ) 0 1 1 ( 0 + 1 )( 0 1 ) 1 ( ) ( 1) f(0) 0 + ( 1) f(1) 1 ( 0 1 )
19.4.1 Działanie obwodu H : 0 1 ( 0 + 1 ), 1 1 ( 0 1 ) 0 1 1 ( 0 + 1 )( 0 1 ) 1 ( ) ( 1) f(0) 0 + ( 1) f(1) 1 ( 0 1 ) 1 [ ( ( 1) f(0) + ( 1) f(1)) 0 + ( ( 1) f(0) ( 1) f(1)) ] 1 1 ( 0 1 )
19.4.1 Działanie obwodu H : 0 1 ( 0 + 1 ), 1 1 ( 0 1 ) 0 1 1 ( 0 + 1 )( 0 1 ) 1 ( ) ( 1) f(0) 0 + ( 1) f(1) 1 ( 0 1 ) 1 [ ( ( 1) f(0) + ( 1) f(1)) 0 m = + ( ( 1) f(0) ( 1) f(1)) ] 1 1 ( 0 1 ) ± 0 dla f(0) = f(1) ± 1 dla f(0) f(1)
19.5 Kwantowy paralelizm Przypuśćmy, że mamy funkcję działającą na N bitów o N możliwych wartościach. Aby obliczyć tablicę funkcji f(x) musielibyśmy policzyć wartość funkcji N razy (dla N = 100 10 30 )! Na komputerze kwantowym działającym zgodnie z U f : x 0 x f(x) możemy wybrać stan początkowy (kwantowy rejestr) w postaci ψ 0 = [ ] N 1 ( 0 + 1 ) = 1 N/ N 1 x=0 x
19.5 Kwantowy paralelizm Przypuśćmy, że mamy funkcję działającą na N bitów o N możliwych wartościach. Aby obliczyć tablicę funkcji f(x) musielibyśmy policzyć wartość funkcji N razy (dla N = 100 10 30 )! Na komputerze kwantowym działającym zgodnie z U f : x 0 x f(x) możemy wybrać stan początkowy (kwantowy rejestr) w postaci ψ 0 = [ ] N 1 ( 0 + 1 ) = 1 N/ N 1 x=0 x
19.5 Kwantowy paralelizm Przypuśćmy, że mamy funkcję działającą na N bitów o N możliwych wartościach. Aby obliczyć tablicę funkcji f(x) musielibyśmy policzyć wartość funkcji N razy (dla N = 100 10 30 )! Na komputerze kwantowym działającym zgodnie z U f : x 0 x f(x) możemy wybrać stan początkowy (kwantowy rejestr) w postaci ψ 0 = [ ] N 1 ( 0 + 1 ) = 1 N/ N 1 x=0 x
i obliczając f(x) tylko raz otrzymujemy stan ψ = 1 N/ N 1 x=0 x f(x) Stan ten jest superpozycją wartości funkcji dla wszystkich wartości jej argumentów. Mamy tu do czynienia z kwantowym paralelizmem.
i obliczając f(x) tylko raz otrzymujemy stan ψ = 1 N/ N 1 x=0 x f(x) Stan ten jest superpozycją wartości funkcji dla wszystkich wartości jej argumentów. Mamy tu do czynienia z kwantowym paralelizmem.
Na przykład, dla N =, stan początkowy może mieć postać ψ 0 = 1 ( 00 + 01 + 10 + 11 ) 00 0 01 1 10 11 3 ψ 0 = 1 ( 0 + 1 + + 3 ) Otrzymujemy superpozycję czterech liczb, na których komputer kwantowy wykonuje operacje w jednym kroku!
Na przykład, dla N =, stan początkowy może mieć postać ψ 0 = 1 ( 00 + 01 + 10 + 11 ) 00 0 01 1 10 11 3 ψ 0 = 1 ( 0 + 1 + + 3 ) Otrzymujemy superpozycję czterech liczb, na których komputer kwantowy wykonuje operacje w jednym kroku!
19.6 Algorytm Shora Rejestr A Rejestr B 0 0 1 0 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 1 0 13 0 14 0 15 0 Etap 1. Przygotowujemy rejestr A komputera kwantowego w superpozycji wszystkich możliwych stanów
19.6 Algorytm Shora Rejestr A Rejestr B 0 1 1 4 3 8 4 1 5 6 4 7 8 8 1 9 10 4 11 8 1 1 13 14 4 15 8 Etap 1. Przygotowujemy rejestr A komputera kwantowego w superpozycji wszystkich możliwych stanów Etap. Liczba, którą chcemy sfaktoryzować jest N, N = 15. Wybieramy liczbę losową X, 1 < X < N 1, X =. Wykonujemy operację B = X A (mod N) np. dla X = mamy wyniki przedstawione w tabelce
19.6 Algorytm Shora Rejestr A Rejestr B 0 1 1 4 3 8 4 1 5 6 4 7 8 Etap 1. Przygotowujemy rejestr A komputera kwantowego w superpozycji wszystkich możliwych stanów Etap. Liczba, którą chcemy sfaktoryzować jest N, N = 15. Wybieramy liczbę losową X, 1 < X < N 1, X =. Wykonujemy operację B = X A (mod N) np. dla X = mamy wyniki przedstawione w tabelce 8 1 9 10 4 11 8 1 1 13 14 4 15 8 Etap 3. Obliczamy P = X f/ 1; f = 4 i sprawdzamy czy P jest dzielnikiem N w naszym przypadku P = 4/ 1 = 3, P = 4/ + 1 = 5;
19.6 Algorytm Shora Rejestr A Rejestr B 0 1 1 4 3 8 4 1 5 6 4 7 8 Etap 1. Przygotowujemy rejestr A komputera kwantowego w superpozycji wszystkich możliwych stanów Etap. Liczba, którą chcemy sfaktoryzować jest N, N = 15. Wybieramy liczbę losową X, 1 < X < N 1, X =. Wykonujemy operację B = X A (mod N) np. dla X = mamy wyniki przedstawione w tabelce 8 1 9 10 4 11 8 1 1 13 14 4 15 8 Etap 3. Obliczamy P = X f/ 1; f = 4 i sprawdzamy czy P jest dzielnikiem N w naszym przypadku P = 4/ 1 = 3, P = 4/ + 1 = 5; Hurra!!! 15/3 = 5 15/5 = 3
19.7 Kwantowa transformata Fouriera gdzie q = N QF T : x 1 q q 1 y=0 e πixy/q y
19.7 Kwantowa transformata Fouriera gdzie q = N QF T : x 1 q q 1 y=0 e πixy/q y
19.7.1 Okres funkcji Przygotowujemy stan ψ 0 = 1 q 1 q x=0 x f(x) Mierzymy drugi rejestr dostając f(x 0 ), co powoduje, że pierwszy rejestr staje się superpozycją wszystkich stanów, które dają wartość f(x 0 ) (funkcja jest okresowa z okresem r) 1 a 1 a j=0 x 0 + jr, a 1 < q r < a + 1
19.7.1 Okres funkcji Przygotowujemy stan ψ 0 = 1 q 1 q x=0 x f(x) Mierzymy drugi rejestr dostając f(x 0 ), co powoduje, że pierwszy rejestr staje się superpozycją wszystkich stanów, które dają wartość f(x 0 ) (funkcja jest okresowa z okresem r) 1 a 1 a j=0 x 0 + jr, a 1 < q r < a + 1
19.7.1 Okres funkcji Przygotowujemy stan ψ 0 = 1 q 1 q x=0 x f(x) Mierzymy drugi rejestr dostając f(x 0 ), co powoduje, że pierwszy rejestr staje się superpozycją wszystkich stanów, które dają wartość f(x 0 ) (funkcja jest okresowa z okresem r) 1 a 1 a j=0 x 0 + jr, a 1 < q r < a + 1
Stosujemy QT F 1 q 1 qa y=0 e πix 0y a 1 j=0 e πijry/q y Prob(y) = a q 1 a a 1 j=0 e πijry/q Jeśli q/r jest całkowite (q/r = a), to Prob(y) = 1 a 1 a a 1 j=0 e πijy/q = 1 r y = a integer 0 otherwise
Stosujemy QT F 1 q 1 qa y=0 e πix 0y a 1 j=0 e πijry/q y Prob(y) = a q 1 a a 1 j=0 e πijry/q Jeśli q/r jest całkowite (q/r = a), to Prob(y) = 1 a 1 a a 1 j=0 e πijy/q = 1 r y = a integer 0 otherwise