Komputery kwantowe zagrożeniem dla Bitcoina?

Często słyszałem argument, że komputery kwantowe ostatecznie zakończą krótki żywot Bitcoina i innych kryptowalut. Nie wiemy, kiedy się pojawią, choć są przecieki , że amerykańska NSA od jakiegoś czasu nad nim pracuje. Powstanie pierwszego komputera kwantowego przewiduje za ok. 30-40 lat, choć optymistyczne prognozy mówią o 10 latach.

Istnieje już wprawdzie komputery D-Wave, lecz po pierwsze naukowcy nie są zgodni, co do tego czy to rzeczywiście komputery kwantowe, a po drugie są jeszcze bardzo wolne. D-Wave Two ma szybkość porównywalną do laptopa, w D-Wave 2X jest szybszy i w zależności od rodzaju obliczeń jest szybszy 15-30 razy od zwykłego 1 rdzeniowego procesora (choć jeden algorytm optymalizacji został obliczony w kilka sekund, a przy pomocy jednordzeniowego komputera potrwałoby to ok. 10 000 lat).

Postaram się krótko i, mam nadzieję, zrozumiale przedstawić fakty i odnieść je do Bitcoina.
Zwykły komputer może wykonać tylko jedno działanie na bitach w danym czasie. Komputer kwantowy może równocześnie wykonać miliony obliczeń. Jednak istnieje ograniczenie związane ze zużyciem energii. Każda zmiana stanu bita pochłania pewną energię. Można obliczyć, że atak typu brute-force na klucz 256 bitowy wymagałby niewyobrażalnej na skalę kosmiczną energii.
A więc można wykluczyć taki rodzaj ataku, a co z innymi? Peter Shor zaproponował efektywny algorytm, który zastosowany w komputerze kwantowym łamie kryptografię opartą na kluczu publicznym (asymetryczną), ale nie zagraża szyfrowaniu symetrycznemu.

Bitcoin używa kilku algorytmów kryptograficznych: ECDSA, SHA-256 oraz RIPEMD160. Komputer kwantowy rozprawiłby się z ECDSA, natomiast dwa pozostałe algorytmy są bezpieczne. ECDSA jest używany do generowania klucza publicznego na podstawie klucza prywatnego. A więc komputer kwantowy mógłby znając klucz publiczny obliczyć klucz prywatny. Katastrofa? Okazuje się, że nie. Otóż klucz publiczny nie jest początkowo znany publicznie. Znany jest adres bitcoinowy, który powstaje z klucza publicznego poprzez hashowanie przez funkcje kryptograficzne  SHA-256 oraz RIPEMD160. Funkcja hashująca jest nieodwracalna – tzn. nie można na podstawie wyjścia funkcji obliczyć jej wejścia. A więc nie można z adresu Bitcoina wywnioskować, jaki jest klucz publiczny nawet posiadając komputer kwantowy, ponieważ zarówno SHA-256 jak i RIPEMD160 są odporne na jego działanie.

Jednakże dokonując transakcji w sieci Bitcoin przesyłamy klucz publiczny od adresu, z którego wydajemy Bitcoiny, ponieważ służy on do weryfikacji czy nasz podpis kluczem prywatnym jest prawidłowy. I w tym momencie komputer kwantowy mógłbym obliczyć nasz klucz prywatny. Dlatego, gdyby komputery kwantowe zaczęły działać od jutra to każdego adresu powinniśmy używać tylko raz (już teraz zaleca się to, aby chronić prywatność) najlepiej używać któregoś z portfeli HD – wtedy reszta z transakcji wędruje na nasz nowy, świeżutki adres z nieujawnionym kluczem publicznym.

Algorytm ECDSA zostanie zmieniony na inny, bezpieczny algorytm – odporny na obliczenia kwantowe (jest już sporo kandydatów). Aktualnie zmiana ECDSA byłaby kłopotliwa, ponieważ nowsze algorytmy generują bardzo długie klucze i wielkość transakcji także musiałaby się powiększyć wielokrotnie, a co za tym idzie Blockchain zajmowałby o wiele więcej miejsca. To już problem skalowania Bitcoina.

Opracowałem na podstawie świetnego artykułu http://www.bitcoinnotbombs.com/bitcoin-vs-the-nsas-quantum-computer/