Kvantový počítač je podobná věc jako matematický koprocesor, ale poněkud paralelnější.
Na prolomení šifry RSA není potřeba kvantový počítač, dá se to udělat i tužkou na papíře. Bezpečnost téhle šifry spočívá
ve víře, že není veřejně známá rychlá metoda faktorizace velkých čísel - dělení je prostě pomalá operace. Problém je, že vhodných prvočísel není zase tak moc a jejich hledání je dost obtížné, takže časem dochází k jejich opakování... Což je zásadní kryptografická chyba.
Takže pokud nashromáždíš dostatečný počet veřejných klíčů, nevyhnutelně dojdeš k takovým, ve kterých je použito stejné prvočíslo. Následně uplatníš prehistorický
Euklidův algoritmus (asi z roku 300 př.n.l.) a vhodnou kalkulačku, například konzolový kalkulátor
bc (z roku 1975), kam zadáš dvojici klíčů a třeba takovýhle
narychlo naprasený vzorec:
Kód: Vybrat vše
a=8726527800050577527
b=15428789580148737593
while(1) if(a>b)a%=b else if(b>a)b%=a
Runtime error (func=(main), adr=17): Modulo by zero
Dělení nulou znamená že byl nalezen společný dělitel. Vypíšeš obsah proměnných a v jedné z nich bude hledané prvočíslo:
Potom oba veřejné klíče vydělíš tím prvočíslem a získáš druhá prvočísla k němu:
Kód: Vybrat vše
8726527800050577527/a
2368747987
15428789580148737593/a
4188024733
A z nich si vypočítáš soukromé klíče obou dotyčných.
Skutečné klíče jsou poněkud delší, takže to nebude otázka pěti sekund jako tohle ale spíš desítek minut.
V reálu to samozřejmě nebudeš dělat ručně, napíšeš si program který ty miliony klíčů porovná každý s každým za tebe a za pár dní budeš mít určitou část soukromých klíčů ve svých rukou. Zbytek zatím prolomit nejde, musíš sbírat dál, ale máš to ulehčené o to že už znáš některá použitá prvočísla, a ta následně použiješ pro porovnání jako první. Urychlí ti to "práci".
No, a
správně použitou Vernamovu šifru neprolomí ani kvantový počítač velikosti celého Vesmíru.