オラクル(Oracle)とは、ブロックチェーンの外側にある情報をブロックチェーン上へ橋渡しする役割を担ったシステムのことです。
今回はオフチェーン上の情報を参照するオラクルが誤ったデータをブロックチェーン上に持ち込まないようにするためのソリューション技術をいくつかご紹介します。
オラクルとは?その問題点とは?という点については以下の記事を参照していください。
1.複数のデータソースを参照する
誤ったデータ報告の可能性を減らすための最も簡単な方法は、オラクルに複数のデータソースを集約させることです。
しかし、大部分のデータソースが危険にさらされている場合や、オラクル自体が危険にさらされている場合は誤ったデータを受け取ってしまう危険性があります。
2.複数のオラクルからデータを採取する
オラクルの数を増やすことによって、確率的に誤ったデータを採用する可能性が低くなるため、大多数が信頼できるデータを提供している限りシステムは安全です。
しかし、意図的にであろうとなかろうと、すべてのオラクルが誤った情報を送信しているというリスク(情報源自体が危険にさらされている場合)は依然としてあります。
3.Skin in the game|直訳すると「ゲームに肌を晒す」→リスクを背負って発言や行動をすること→『信頼の証』
『Skin in the Game』とは信頼度を測るための指標として捉えられているものです。訳するとリスクのあるゲームに肌身を晒すという意味で、例えば企業幹部が自社株を身銭を切って買うという行為などがそれに該当します。経営がうまくいかずに自社の株価が下がれば損を被るのは経営に関わっている企業幹部たちなので、損をしないようにきちんと経営していきますよという意思表明になるわけです。
要は自らの行動を信頼してもらうために、率先してリスクを背負う行為のことをSkin in the gameというのです。
その逆の言葉に『No Skin in the game』というものがあります。例えば権威などのステータス、服装などの見た目などを用いて信頼、リターンを獲得する方法がそれに該当します。Skin in the gameに比べると信頼度が低いのですが、人は見た目や肩書きで直感的に判断を下してしまう(ヒューリスティックが働く)ことが多いため、手っ取り早く信頼を得るには便利です。
非中央集権型ネットワークではこのSkin in the gameの考え方を用いてインセンティブメカニズムを設け、ネットワーク参加者が経済的欲望を追求(ブロック報酬)する結果、不正行為を防ぐよう仕組み化されています。例えばコンセンサスアルゴリズムPoSの仕組みは正にSkin in the gameの考え方で成り立っており、コインの価値が下がると大きく損をするコイン保有量の多い人が優先的にネットワーク管理に関わっています。上述した企業幹部が自社株を買う行為と類似していますよね。
この仕組みをオラクルにも用いたものがdecentralized Oracle(非中央集権型オラクル)です。ディセントラライズドオラクルネットワークではノードに対してネットワークの独自通貨などを保有するというリスクと引き換えにネットワーク作業に関与する機会を与えています。
ネットワークにとって価値ある行動をとれば、それに対する報酬がもらえ、不正をすれば保有している独自通貨のパーセンテージが減少するため、オラクルが正確なデータを伝達するインセンティブを持つことになるのです。
4.TEEs(Trusted execution environment)
TEEsとはソフトウェア、ハードウェア両方からのサポートにより、アプリケーションの安全な実行環境を実現するための技術仕様のことです。※TEEはICカード仕様の標準化などを促進するGlobalPlatformにより、TEEによって提供される各種APIなどの仕様策定が進められています。
この安全な実行環境では、リモートからのクラッキングやマルウェアによる攻撃などソフトウェアレベルの攻撃を防ぐことが可能です。このセキュアな環境内でオラクルを実行することで、オラクルが特定のアプリケーションを実行していることを保証しています。
TEEを実現する実装技術としては、ARMのTrustZone、IntelのSGX(Software Guard eXtensions/ソフトウェア・ガード・エクステンションズ)などが挙げられます。
ARMのTrustZoneもIntelのSGXは似たような仕組みなので、例としてTrustZoneの仕組みだけを簡単に以下説明します。
ARM TrustZone
引用元:https://developer.arm.com/technologies/trustzone
TrustZoneは、通常の実行環境(ノーマルワールド)とは分離された安全な実行環境(セキュアワールド=TEE)を実現しています。
認証、支払い、コンテンツの保護など様々なユースケースで、セキュリティを必要とするコードやデータ保護のために何十億ものアプリケーションプロセッサで使用されています。
- ノーマルワールド
Androidなどの汎用OSが動作する通常の実行環境、アプリのインストールやデータの読み書き、インターネット接続など
- セキュアワールド(つまり、TEE)
セキュアOSが働いており、通常の環境とは仮想的に分離されています。通常の環境からセキュアワールドの実行環境へのアクセスは制限され、存在の認識ができないようになっています。
セキュリティが要求される処理を行いたい場合には、セキュアモニターコール(SMC)命令によって、セキュアワールド側で実行する処理を呼び出します。
このように、ノーマルワールドとセキュアワールドとをプロセッサーの機能を分離する仕組みにより、セキュアワールドで実行される処理や秘密情報へのセキュリティ侵害を防いでいます。
まとめ
以上がオラクルの抱える問題点を解消する4つのソリューション技術でした。
まとめておくと
- 複数のデータソースを参照する
- 複数のオラクルからデータを採取する
- Skin in the game→decentralized Oracle
- TEEs
実際には上記の4つの方法を単独で使用するだけではなく、実際には複数組み合わせることでセキュリティを高めています。