ハッシュの崩壊はビットコインの崩壊?【仮想通貨技術解説】

さて、今日はビットコイン、あるいは多くの類縁の仮想通貨の崩壊の可能性についてです。

仮想通貨は英語でCrypto Currency…
直訳すると暗号通貨です。

公開鍵暗号やハッシュといった、暗号の領域の技術が多く使われており、安全性の基盤にもなっているから、Crypto Currencyなのでしょう。

となると、私のようなセキュリティ界隈の人間はすぐ思ってしまうのです。

そのうち、暗号技術に穴が見つかっちゃうんじゃ…

そしたら、ビットコインは大暴落

仮想通貨業界、大混乱…

だってね…、過去の経験から言うとね…

破れない暗号ってないから!!

世界のどこかで何人もの天才が、今まさに使われている暗号技術を破ろうとしています。
彼らが、自らが発見した穴をネットや学会で発表したとたん、その暗号技術は脅威にさらされます。
簡単な応急処置が見つからなければ、その時から、もう使えない過去の技術として消え去る道をたどることになります。

今、仮想通貨を支えている暗号技術たちも例外ではありません。
人が作った技術ですから、完全なものなどないのです。

 

今日は、世界中のマイナーが毎日死ぬまでほど繰り返しているハッシュが破れてしまう可能性について、考えてみます。

ビットコインをはじめとする多くの暗号通貨は、ハッシュの安全性に大きく依存しています。
でも、ハッシュの安全性が崩壊したら…

ハッシュってどんな計算?

ハッシュは、入力されたデータをもとに計算をし、一定の長さの短いデータを出力する計算です。

入力するデータはどんな長さのものでも構いません。
たとえばビットコインで使われているSHA256は、必ず256bitのデータを出力します。
ハッシュの結果、出力されるデータをハッシュ値といいます。

参考)適当に入力したデータに対して、SHA256のハッシュを計算できるサイトがあります。

参考 SHA256ハッシュ生成ツールみるくあいらんどっ!

暗号に関する領域で使われるハッシュは、以下のような特徴を持ってます。

  • 同じ入力データに対しては、同じハッシュ値が出力される。
  • 入力データからハッシュ値を計算するのは簡単だか、その逆はとてつもなく難しい【現像計算困難性
  • 同じハッシュ値を出力する、異なる入力データのペアを見つけるのは、とてつもなく難しい。【衝突耐性

ビットコインのブロックチェーンの安全性は、このハッシュの特性をうまく利用して保たれています。

ハッシュはブロックチェーンのどこで使われてる?

ビットコインのブロックチェーンは、ビットコインの取引履歴が格納されたブロックをチェーン状に連結したものです。

ブロックチェーンとマイニングの概念図

チェーンを連結する作業がマイニング。

マイナーは、チェーンを連結するためにハッシュを使います。

マイニングとハッシュの概念図

ハッシュの入力データは、ブロックです。

ブロックの中には以下のデータが入っています。

  • ビットコインの取引の履歴
  • 一つ前のブロックのハッシュ値
  • Nonce:Number used onece

ブロックのハッシュ値が決まってしまうと、ブロックの中の取引履歴を変えることができなくなります。
ハッシュの特性に、現像計算困難性とか衝突耐性とかありましたね。
この特性のおかげで、ハッシュ値が同じだけど内容の異なるブロックを作るのは、とてつもなく難しい

同じ理由で、ブロックのハッシュ値が決まってしまうと、さらにその前のブロックとのチェーンも、変えられません。
ブロックに含まれる、さらに前のブロックのハッシュ値を変えることが、とてつもなく難しいからです。

Nonceは、「Number used onece」の略。
ブロックのハッシュ値の調整ように使われるデータですが、これについては別途。

ハッシュの持つ現像計算困難性とか衝突耐性といった特性のおかげで、ビットコインの履歴や、ブロックのチェーンの安全性は守られています。

ビットコインに仕組みが近い他の多くの仮想通貨も、同様です。

ハッシュに穴があったらビットコインはどうなる?

ハッシュに深刻な問題が見つかったら、どうなるのでしょう。

すでにチェーンに組み込まれているブロック内の取引履歴が修正されるかもしれません。チェーンの一部を丸ごと組み替えることもできるでしょう。

ブロックチェーンのデータは、世界中のノードが同じものをコピーして持っています。
ノードは世界中にこんな感じで広がっています。

世界中に広がるノード

この情報は、以下のサイトでみることができます。
参考 Global Bitcoin Nodes DistributionBitnodes

書き換えられたチェーンが出現すると、もともとの正しいチェーンとを持つノードと、そうでないノードが混在することになります。

どちらのチェーンが正しいかを決める方法は、ありません。
すべてのノードは、上下関係はなくフラット。
何かを判断する中央集権的な存在を否定するのがビットコインですから。

おそらくは、ブロックチェーンの信頼性を保つことができなくなり、ビットコインは大暴落。
同様の方式を使っている仮想通貨もみな同じ。
仮想通貨業界まるごと崩壊となるかもしれません。

仮想通貨は、ハッシュの安全性にとてつもなく大きく依存しているのです。

ハッシュの安全性は永遠じゃない!!

ビットコインで使われているハッシュは、SHA256です。
SHAはSecure Hash Algorithmの略。
アメリカ国立標準技術研究所 (NIST)がハッシュの標準的な規格として定めています。

参考 FIPS 180-2 Secure Hash StandardNIST Computer Security Resource Center

計算方式の詳細は、以下で説明されています。
※ 投稿者のかたの苦労がしのばれる情報です。
参考 ビットコインで使われているSHA-256の仕様と実装についてそろそろちゃんとやります

SHA256は、現在主流で使われているハッシュで、今のところ安全である、とされています。

でもね、少し前までは、SHA-1ってのが主流だったんです!!

SHA-1は、160bitのハッシュ値を出力する計算方式で、アルゴリズムの技術的なアイデアは、SHA256と同系統のものです。

さっき出てきたNISTもちゃんと標準規格として採用していたので、み~んな使ってたんです。

参考 FIPS 180-4 Secure Hash Standard(SHS)NIST Web Site

2000年代に使われていた公開鍵証明書のデジタル署名には、ほとんどSHA-1が使われていました。

ところが…

2005年に暗号技術の国際学会Crypto2005で、WangによるSHA-1に対する攻撃法が発表されました。

参考 Finding Collisions in the Full SHA-1Springer Link

当時、暗号の学会筋では結構な話題だったのを記憶しています。

この論文の内容は、即座にSHA-1が使えなくなることを意味してはいませんでした。
ですが、新しい攻撃のヒントがあれば、そこからよってたかって穴を探すのが暗号業界です。
それからしばらくは、学会があるたびにSHA-1の攻撃に関する論文が出されていました。

また、同時期にNISTが、米政府で使用する標準暗号方式を2010年末をもって切り替える方針を出しました。

2010年問題というやつです。
記憶している方も多いでしょう。

参考 暗号の2010年問題日系XTECH

このときNISTは、

  • 共通鍵暗号DESをAESに切り替え
  • RSA公開鍵暗号/署名の鍵の長さを2048bit以上に

といったものとともに

  • SHA-1からSHA256への切り替え

という方針を出しました。

この動きを受けて、2008年には、日本の総務省も、SHA-1からSHA256に乗り換えることを推奨しています。

参考 SHA1およびRSA1024の安全性評価について総務省

この動きに伴い、徐々にSHA-1は使われなくなり、SHA256に切り替えられていったのです。

Satoshi Nakamotoが、ビットコインの最初のコードをプログラミングしていたであろう2008年頃、すでにSHA-1の危険性は十分認知されていました。
Satoshi Nakamotoが、SHA256を採用したのは、当然の流れだったわけです。

最近になって、SHA-1が完全に破れたというニュースが上がってきました。

参考 SHA-1衝突攻撃がついに現実に Google発表ITメディア エンタープライズ

しかし、これはセキュリティ業界内では、そのうち来るだろうという共通認識で、たいして驚きませんでした。

ここからわかることは、

暗号技術は、いつ穴が見つかってもおかしくない

ということです。
そして、ビットコインが頼り切っているハッシュSHA256は、今のところ誰も穴を見つけていないだけで、

突然、穴が見つかって、安全じゃなくなるかもしれない

ことを、理解する必要があります。

消えていったハッシュは、SHA-1だけではないのです。
SHA-1の前身であるSHA-0、
公開鍵暗号のスタンダードRSAの発明者の一人であるRivestが設計したMD5、
それ以外にもたくさんのハッシュが、穴を見つけられ、消え去っていったのです。

ハッシュの崩壊はビットコインの崩壊?

では、SHA256の崩壊は、即ビットコインの崩壊なのでしょうか?

セキュリティ業界の人々は、ハッシュをはじめとする暗号技術が入れ替わっていくことには、慣れっこになっています。
「暗号技術ってそういうもんだから、前もって準備をしておこう」、というのが定着しています。

ハッシュに対しては、SHA256に対してより安全性の高いSHA-3がNISTの標準規格として採用されています。

参考 SHA-3 StandardizationNIST Web Site

SHA256が危ない、となったときに乗り換えることができる選択肢も、すでに用意されているのです。

また、皆さんが日ごろ使っているインターネット上の通信セキュリティを守っているSSL/TLSは、これまでたくさんの暗号技術上の問題に対処してきた歴史があります。

参考 SSL/TLS 20年の歩みと動向日本ネットワークインフォメーションセンター

これなんかは、仮想通貨が生き残っていくために、とてもためになる例なんじゃないかと思います。