富士通研究所と富士通研究開発中心(中国)は3月7日、ブロックチェーンのリスクを検証する技術を開発したと発表した。ブロックチェーン上の取引の自動処理プログラム「スマートコントラクト」のリスクを事前に検証し、ソースコード上での該当箇所を特定する。人手では見逃す可能性のあった6種類のリスクを網羅的に検出できるようになった。
検出可能なスマートコントラクトのリスクの種類(出典:富士通)
従来技術では、リスクを事前に検証する場合、トランザクションの呼び出し元情報が変わるというEthereumの仕様を悪用して認証手続きを不正に回避される可能性があった。これは、トランザクションの内部情報まで検証できなかったことによる。
今回開発された技術は、あらゆる変数が取り得る値に応じたプログラムの動作を漏れなく調べるシンボリック実行技術を利用する。同技術を使って開発されたアルゴリズムによって、ソースコードについてさまざまな条件での取引を仮想的に実行する。これにより、認証に至るまでの不正な処理の流れや、不正につながるEthereum特有のコードパターンとの照合結果、そしてブロックチェーン特有の取引記録へのアクセスの有無などを検証し、漏れがなく、かつ高精度なリスクの検出を可能にする。今回開発した技術を用いることで、従来の検証ツールでは67%の検出率だったところを、一部の項目を除き100%検出が可能となり、さらに精度として最大で88%の正解率を実現した。
スマートコントラクトのリスクの検出と該当箇所の高精度な特定(出典:富士通)
発見したリスクがソースコード上のどこに該当するかについては、仮想的に実行される処理コマンドの種類と順序などから、実行ファイルとデバック用の実行ファイルの対応関係を推定することで可能となった。
富士通研究所は今後、Ethereumだけではなくブロックチェーンフレームワークの一つであるHyperledger Fabric向けの検証技術の開発も進め、2018年度中の実用化を目指す。また、ブロックチェーンを活用したセキュアなシステム構築に関する技術開発も幅広く進めていく。