量子コンピュータとモナコイン (2)

はじめに

みなさんこんにちは。

VIPPOOL でエンジニアをやっています、星月です。

前回は、量子コンピュータについて基本的なお話と、
モナコインの公開鍵から、秘密鍵を計算できてしまう。
というお話をしました。
今回はその対策について考えてみましょう。

マイニングについて

まずは PoW の根幹をなしているハッシュ関数
これについては、量子コンピュータでも効率的な計算方法は見つかっていません。

つまり、量子コンピュータが実用化されても、データの改ざんは簡単にはできないことを意味します。

まずはブロックチェインとしての基礎は大丈夫そうですね。

送金について

次に、問題となる秘密鍵が計算できてしまう問題について、
こちらは、もう使っている人はいないと思いますが、
P2PK で送金してはいけません。

f:id:y-hoshizuki:20190912153531p:plain

このように、scriptPubKey に、公開鍵 xG が書かれているので、
ここから秘密鍵 x を計算して資産を盗まれてしまいます。

今、主流となっている P2PKH だとどうでしょう?

f:id:y-hoshizuki:20190912153554p:plain

scriptPubKey に書かれているのは、公開鍵のハッシュ、
ripemd160(sha256(xG)) です。ripemd160 も sha256 も、
量子コンピュータで逆算する効率のいい方法はまだ見つかっていません。
つまり、これなら安全。

……と思うでしょう?

f:id:y-hoshizuki:20190912153605p:plain

P2PKH は、UTXO をアンロックするときに公開鍵 xG を scriptSig に書いてしまうんですよね。

ということは……?

f:id:y-hoshizuki:20190912153617p:plain

そう、UTXO をそのままアンロックすることはできないけれども、
同じコインアドレスを使っている UTXO があれば、そちらをアンロックすることは
できてしまうのです。

つまり、
秘密鍵(コインアドレス)は使い捨て
・必ず毎回、すべての UTXO を使い切るように運用する
必要があります。

f:id:y-hoshizuki:20190912153630p:plain

さて、これで大丈夫でしょうか?

ところが、モナコインを含む暗号資産には、
「承認数」=「ブロックチェインに取り込まれてから掘られたブロックの高さ」
が増えるほどにトランザクションの改ざんが難しくなる。
という特徴があります。

言い換えれば、承認数が少なければ、例えば承認直後であれば、
トランザクションの改ざんは簡単に行うことができます。
つまり...

f:id:y-hoshizuki:20190926153349p:plain

このように、攻撃対象のアカウントから送金が行われたことを見つけ次第、
量子コンピュータ秘密鍵を割り出し、その秘密鍵で自分宛てに送金。
そしてそのトランザクションを含ませたブロックチェインを伸ばせば、
暗号資産を奪取することができてしまいます。

一度、元のチェインを追い越してしまえば、そちらが分岐と判断され破棄されます。
そして暗号資産を奪った方のチェインが正式なものとして扱われるようになります。

残念ながらこの対策は、現状できません。

まとめ

今回は、量子コンピュータが実用化された後、
どうすればモナコインを安全に使い続ける方法について考察しました。

P2PK でも P2PKH でも、暗号資産を奪われてしまいます。これは大変。

実用化が近くなれば、また BIP などで改善されることでしょう。
それに、256bit の楕円曲線暗号の計算ができるには、
まだまだ時間がかかりそうですので、しばらくは安心してもいいと思います。

米国 NIST の公開している資料 SP800-57 でも、量子コンピュータの実用化まで
含めて検討した上で、楕円曲線暗号 256bit は、2030 年以降も安心して使えると報告されています。

今回はここまで。
ご質問、ご意見等ありましたらお気軽にリプライください。