Jak bylo uvedeno, klasická kryptografie je vzhledem k možnostem počítačů
v této chvíli bezpečnou formou zabezpečení přenosu dat. Jak si ale s problémem
prolomení metody RSA poradí kvantový počítač? Má jednu velkou výhodu -
může totiž využít kvantového paralelismu. Algoritmus Petera Shora na
faktorizaci velkých celých čísel právě tuto vlastnost kvantových systémů
využívá. Na kvantovém počítači tento algoritmus běží v asymptotickém čase
, kde je
počet bitů faktorizovaného čísla. Vidíme, že čas je omezen shora polynomem.
Místo, aby algoritmus hledal přímo jednotlivé součinitele,
je spíše založen na poznatku, že problém faktorizace čísel se dá převést na
problém hledání periody určité periodické funkce. Je-li dáno číslo ,
které chceme faktorizovat, je potřeba vytvořit periodickou funkci
Příklad: Řekněme, že chceme faktorizovat číslo 21 na součin jeho prvočinitelů. Pokud je , pak si musíme zvolit takové, že . Odpovídající množina čísel je {2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}. Z ní si náhodně zvolíme například . Nyní chceme zjistit periodu funkce . Vidíme, že funkční hodnoty pro celé jsou . To znamená, že tato funkce má periodu 6. Tato perioda je sudá a nevrací triviální faktory (Jestliže , pak chceme ověřit, zda . To neplatí, protože a . Pokud by se tak stalo, museli bychom zvolit jiné .). Na závěr nalezneme faktory pomocí a . Všimněme si, že pro algoritmus neuspěje, protože perioda . Zajímá nás tedy, zda a vidíme, že .
Nyní nám zbývá jediný problém - jak vypočítat efektivně periodu dané funkce. Tento problém není klasicky řešitelný v polynomiálním čase. Shor ale ukázal, že na kvantovém počítači periodu efektivně nalézt lze. Toho dosáhl využitím kvantového paralelismu. Připravme si kvantový registr, který bude mít 2 části nazvané a , a jehož stav budeme zapisovat .
krok 1: Zvolíme si náhodně , které je nesoudělné s . Dále si vybereme
takové, že
.
krok 2: Připravíme kvantový registr do superpozice čísel
tak, že v máme superpozici čísel 0 až , a v samé nuly. Registr
tak přejde do stavu
|
Zdá se, že k odhadu periody z těchto stavů bylo by potřeba první tři kroky několikrát opakovat ke změření několika hodnot. Bohužel to není možné v důsledku různého počátečního offsetu periody u každého výsledku měření. Tento offset nám neumožňuje mít při opakovaných měřeních jistotu, že dosáhneme stejného výsledku a budeme moci periodu určit jednoznačně. To proto, že pravděpodobnosti změření všech 6 výsledků jsou (přibližně10) stejné. Aby bylo možné periodu správně určit, je zapotřebí ji nějakým způsobem zvýraznit tak, aby nebyla závislá na počátečním offsetu.
krok 5: Proto nyní provedeme kvantovou Fourierovu transformaci na
a výsledek vrátíme tamtéž.
krok 6: Nyní registr změříme s výsledkem . Abychom byli schopni určit periodu, je nutné kroky 2 - 6 opakovat do chvíle, než máme k dispozici dostatek vzorků, které jsou s velkou pravděpodobností v okolí různých násobků převrácené periody a které jednoznačně umožňují určit periodu. Pokud tyto násobky označíme , pak je nějakým násobkem výrazu , tj. . Po úpravě dostaneme , pro . Odhad, jaký násobek byl naměřen, se provádí rozvojem do řetězcového zlomku.
krok 7: Když je známa hodnota , jsou již klasicky Eucleidovým algoritmem vypočteny největší společné dělitele a .
Protože je tento algoritmus pravděpodobnostní povahy, není zaručeno, že na konci dostaneme dva užitečné faktory, které nás zajímají. Například špatná volba v prvním bodě algoritmu může vést k dosažení triviálních řešení rovnice Vidíme, že Shorův algoritmus je vlastně kombinací dvou metod. Jednak hledání periody funkce na kvantovém počítači, a jednak hledání největších společných dělitelů dvou čísel na klasickém počítači. Běžící časy obou metod se asymptoticky sčítají pouze na polynomiální složitost. Je možné zhruba odhadnout, že pokud je složitost řádu , pak například faktorizace 768 bitového čísla by při délce jednoho výpočetního kroku kolem 100 cyklů trvalo na 100 MHz kvantovém počítači řádově jednotky sekund. Je jasné, že pokud by se podařilo takový algoritmus použít na skutečném kvantovém počítači, dostali bychom do rukou nástroj na prolamování většiny dnes používaných kryptoschémat. Není divu, že se již několik let o postup ve vývoji kvantových počítačů zajímají instituce, jejichž bezpečnostní systémy jsou založeny na složitosti problémů, jako je faktorizace. O tom, v jakém stádiu se vývoj kvantových počítačů nachází a o tom, jaké překážky klade vědcům vlastní implementace kvantového počítače se zmíníme v závěrečné kapitole. Nyní si ale představme, že žijeme v době, kdy již není kvantový počítač jen na papíře a uvědomme si, jak by se asi změnila kryptografie jakou známe s existencí kvantových počítačů. Běžně by bylo možné výše popsaná kryptoschémata prolomit. Pak by nám nezbývalo nic jiného, než se pokusit kvantových systémů využít k vytvoření nových bezpečných komunikačních schémat, která by byla schopná vzdorovat pokusům o jejich prolomení. Proto zvládnutí kvantové mechaniky pro řešení problémů faktorizace neznamená konec kryptografie. Pouze to určitým způsobem mění podstatu používaných mechanizmů. S jedním z nich se seznámíme dále.