仮想通貨IOTA(アイオタ)の弱点 新しい技術とその脆弱性への警告

独自の暗号アルゴリズムを持つプロジェクトは十分な調査が必要である
IOTAにもDAO事件のようになりかねない重大な欠陥が発見された
技術の安全性を評価するにはどうすればいいのか
第三者の審査が必要であり有名企業や有名人の参画は評価する基準にならない
仮想通貨 IOTA(アイオタ)とは?〜IoTの未来を変える革新的技術Tangle(タングル)に注目!!〜
IOTAは、海外の取引所Bitfinexに上場した初日に時価総額6位にランクインした注目度の高い仮想通貨です。Tangleという革新的な技術を用いてIoTサービスの未来を変えるかもしれません。詳しく解説しているので参考にどうぞ!

先月、Neha Narula氏はEthan Heilman氏、Tadge Dryja氏、Madars Virza氏と共にIOTAに注目し、その時点(9月7日参照)では時価総額19億ドルを記録し、世界上位8位の規模の仮想通貨となっていました。

しかしGithubの情報を元に、彼女たちは深刻な弱点を発見しました。それはIOTAの開発者が独自でハッシュ関数(通称Curl)を書いたため、インプットが同じ値のアウトプットにハッシュする際に衝突が起きてしまうという点です。

試しに私たちが攻撃を仕掛けたところ、コモディティハードウェアを使って衝突を特定することができ、IOTA支払いの際に偽造の署名を作ることに成功しました。

この致命的な結果をIOTA開発者に通告したところ、彼らは直ちにシステムを修正しました。現バージョンのIOTAで弱点は見つかっていませんが、これがどのように引き起こされ、また現在仮想通貨にもたらす影響に対してさらに言及できることがあるでしょう。

Bruce Schneier氏は以下のように言います。

2017年、暗号アルゴリズムを差分解読法によって攻撃されやすくすることは初歩的な過ちです。これは誰もシステムを分析せず、そのシステムを安全にするための修復作業をする見込みがないということの証拠になる。

仮想通貨技術を審査する責任はだれにあるのか?

仮想通貨市場は盛り上がりをみせ、Protocol LabsはFilecoinで2億ドル、Tezosは2.32億ドルの集金に成功しました。

一部の者はこれは新しい資金調達の方法だとして、分散型ネットワークおよびアプリケーションを使った新しい収益方法であると考えます。私はこの技術にとても熱狂的な関心を持っていますが、ICO関連には警戒すべきだと思います。SECはすでに警告を与え、トークンを使って従来の取引をすることに規制をし、これによりある一社はICO中止を余儀なくされました。

技術自体はとても興味深いですが、安全な投資の保証は技術の人気のペースに追い付いていません。金融的なリスクは別として、開発者や投資家がこれらのシステムを全面的に評価しているとは思いません。

多くの投資家は合図を頼りにしていますーもし名の知れた大学や大企業が投資家やアドバイザーとしてある技術に署名をした場合、そのプロジェクトやソフトウェアが承認されたと誤った認識>をしてしまうのです。

問題なのはこれらの技術には大きな難点があり、大企業や有名人でも徹底的に調査することに必要な時間や財源を費やしておらず、さらにはその調査報告を共有する意志もないのです。仮想通貨市場には未だこれらの事業を評価する方法が存在しないのです。

最近の事例をとりあげると、DAOで起きた事件がよい一例になります。Slock.itはウェブサイト上に投資案を承認する管理者を載せました。

有名なイーサリアム研究者であるVitalik Buterin氏、Gavin Wood氏およびVlad Zamfir氏を含む その管理者らがあたかもそのコードとシステムを裏で支えているように見えましたが、実際はそうではありませんでした。

しかも管理者はこの利用者の思い違いに気づいていませんでした。後にDAOには大きなセキュリティ問題があると発覚し、集まった資金の3分の1以上が盗み取られ、利用者のトークンはイーサリアムファウンデーションが介入するまで損失するという事態が発生したのです。

IOTAは数億ドルの価値があり、Microsoft、University College London、Innogy、Bosch、BNY Mellon、Cisco、Foxconnなどの大手機関と連携があるため弱点のない仮想通貨だと思い込んでいるかもしれませんが、残念ながらそうではありません。

Neha Narula氏らがIOTAのシステムに注目したところ、重大な弱点と安全でないコードを発見したのです。

有名な技術者であるBruce Schneier氏は私たちのIOTA攻撃を踏まえ、再度このように述べました。

「2017年、暗号アルゴリズムを差分解読法を用いて攻撃されやすくすることは初歩的な過ちです。これは誰もシステムを分析せず、そのシステムを安全にするための修復作業をする見込みがないということの証拠になる。」

IOTAの弱点とは

Neha Narula氏らはGitHubを使いシステムのコードを調査したところ、IOTAの弱点を発見しました。この発見したことをIOTAチームに7月14日に公表し、さらに新しい問題を発見する中、彼らと連絡を取り合っていました。

IOTAはNeha Narula氏らが8月7日に発見した弱点のプログラム修正を行い、それからというものIOTAに問題は発見されていません。Neha Narula氏らが行った攻撃についてさらに詳しく知りたい方は、報告と攻撃例を参考にしてください。

Neha Narula氏らすでにこの報告の草稿をIOTAチームに共有しており、今日共有予定の彼らのフィードバックを受け取ることもできました。IOTAチームはこの報告に異議があり、この弱点はそもそも考慮する必要があるのかと反論します。

Please don’t roll your own crypto (独自で仮想通貨のアルゴリズムや暗号化方式を書くな)

暗号のハッシュ関数は気まぐれな量をインプットし、一定のサイズで予想不可能のアウトプット値を産出します。 アウトプットを考慮すると、そのアウトプット値に繋がるインプットを見つけ出すことは非常に困難であり、またインプットとアウトプットの両方を考慮すると、同じアウトプットに繋がる他のインプットを見つけることはとても困難です。また二つの別のインプットが同じアウトプットに繋がることを”衝突”と呼び、衝突を容易に特定できるということは暗号のハッシュ関数に問題があることを示します。

暗号ハッシュ関数は取引が承認される前に復元不可能なハッシュ値にする役割があるためとても大切な存在なのです。よって、もしあなたがハッシュ関数を改ざんできるということは、承認を改ざんすることも可能になるということであり、さらにそれは正式な取引や、支払い判断をする仕組みを破壊することになるのです。 つまり仮想通貨がもつ数学的合理性は安全性の関係によって定められています。

暗号システムの黄金律は『don’t roll your own crypto(独自で仮想通貨のアルゴリズムや暗号化方式を書くなと言う意味)』 です。どのセキュリティ研究者も、システムを作るときはよく理解され試された暗号プリミティブを使えと助言するはずです。特に暗号ハッシュ関数は主要のソフトウェアとして使用されるまで、幾度の試験が行われます。一例をあげると、SHA-3大会は2006年から2015年までの9年間にわたり行われ、最終的にKeccakが最も適した暗号候補として選ばれました。

この理由から、IOTA開発者が独自でハッシュ関数を書いたことを知ったとき、私たちは危険を感じました。むしろIOTAに関連してる人みなさんが危機感を持つべきです。

IOTAハッシュ関数の問題

Neha Narula氏らはIOTA独自のハッシュ関数”Curl”は有名なハッシュ関数を破壊することのできる”差分解読法”と呼ばれるテクニックに弱いことを発見しました。

彼女らはこの方法を使いIOTA上に同じハッシュ値を持つ二つの異なる支払い(彼女らはこれをバンドルと呼ぶ)を生成することに成功しました。この方法を使えば、悪人は利用者の資金を奪い取ることが可能だったはずです。

コードが一般公開されていなかったために、IOTA上で調査できなかった一部はトラステッド・コーディネーター(TC)です。

現在、IOTA開発者が運営し将来取り除くことが予定されるTCは、最新のシステム安定状態を知らせる機能を持ちます。コーディネーターは取引衝突から発生する問題を防ぐ可能性もありますが、それなしではハッカーがIOTAを二つの調和しないものに”フォーク(分裂)”させることができた可能性もあります。

しかし我々はコーディネーターが利用者の資金を保護しているとは思いません、なぜなら本来の取引はネットワークに伝達されないため、コーディネーターが取引衝突があったのか判断できるわけがないのです。

Neha Narula氏らが行ったIOTA資金を盗むことができた攻撃の詳細はこの保管所にあります。この弱点を発見し、IOTAの開発者に報告したところ、彼らは有名なSHA3ベースである新しいハッシュ関数に変更しました。

コードを迅速に変更させ、システムのハードフォークに軌道修正をし、さらに全ての利用者のアドレスを変更しました。現在、Neha Narula氏ら特定の攻撃は対策されましたが、彼女らはIOTAがかつてのCurlハッシュ関数をソフトウェアのどこかで未だに使用中だということは言及し難いことです。

彼女らはIOTAが公表しているGitHubにある保管所やIOTAフォーラムにある投稿を含む資料を通して弱点に気づきました。IOTAが公表している2進数コードを使い弱点を証明し、このバンドルをIOTA開発者にメールで送信しました。

まずTadge Dryja氏が初めにCurlハッシュ関数が怪しいことに気付き、Ethan Heilman氏が莫大な量の差分解読法を行い衝突の作成方法を見つけ出しました。

そしてNeha Narula氏が実行可能な攻撃を実行し、Madars Virza氏が数学的テクニックによりハッシュ関数を直接逆にする試みを独自の分析で行いました(これは未だ成功していません)。もちろん我々は一度も衝突された取引をIOTAネットワークに流していません。

彼女はIOTA開発者がこの問題を真剣に受け入れてないことを今一度強調する必要があると思っています。彼女らの報告にはなぜ彼女らが心配しているか詳しい情報が載っています。

3進法および他の危険性

まだ他にも危険性は存在しますーあなたのパソコンやスマートフォンを動かすプログラム(2進法)と違い、IOTAは3進法を活用しています。

全てのパソコンは2進法を使うため、IOTAの3進法は非効率的でさらに困難なのです。この難点はIOTAを、2進法で設計されたセキュリティツールから利得することを妨げ、コードの読解をさらに困難にさせます。またIOTAの取引は10KB(ビットコインの取引は600B)なので、これもまた非効率的な点です。

つまり容量に限りがあり、IoTなどによく使われる機器には向いていないです。現在のIOTAは信用されたコーディネーターを要します。

現バージョンは完全に非許可型分散型システムとして機能するにはまだ向いていないということを示します。他の者はIOTAのTCの使用について執筆し、そもそもこのシステムの利用者がTangleに集まる動機があるのかを問いかけました。

結論

仮想通貨市場はまだ新しいもので、Neha Narula氏らはさらに丈夫で使い易くより採用に向いた技術が開発されることに自信を持っています。

しかし2億ドル相当のIOTAのパートナーがこの弱点を問題視していないという事実はとても気にかかります。ブロックチェーンの最も大事な機能の一つは信頼のある第三者を除くという点です。

大多数の人はソフトウェアを徹底的に調査する時間や経験を持っていません。つまり信頼性が必須にもかかわらず、信頼性は事業の開発者またはソフトウェアを審査できる誰かに委ねるという状況にあります。

彼女はみなさんがこの調査を知ることがとても大事なことだと強調します。適切な注意とともにさらに大きな主張が必要とされる中、今のところそれは十分に起こなわれていません。

しっかりと調査もしたこともない技術に大企業や名の知れた個人の名や名声を載せるのはいかがなものでしょうか。

Cryptographic vulnerabilities in IOTA

Sep 7 2017 Neha Narula

参考記事はこちらから

画像はShutterstockのライセンス許諾により使用

「LINE@」厳選情報を配信!

日本や海外の「重要ニュースまとめ」をいち早く入手したい方は、ぜひ登録してみて下さい。

友だち追加