ファクト

ÆTERNITYのセキュリティ監査報告を読んでみる8

投稿日:

本稿について

ÆTERNITYのメインネットリリース前から行われているセキュリティ監査報告のv0.5について見ていきます。今回の範囲は「4. Protocol」の「4.5 State Channels」、「4.6 Naming System」、「4.7 Selection of Cryptographic Primitives」です。

原文はこちらになります。

スポンサードサーチ

今回のまとめ

  • オラクルについて
    • 現実世界のデータを利用したスマートコントラクトを実現するもの。ノードはoracle_registerトランザクションでオラクルを作成可能。ユーザはoracle_queryトランザクションでクエリを投げることが可能。クエリの回答はオラクルのオペレータがoracle_responseトランザクションで行う。
  • オラクルトランザクションについて
    • oracle_registerトランザクション:オラクル(オラクルオブジェクト)作成用のトランザクション。オラクルのアドレス、クエリとレスポンスのフォーマット定義、クエリ手数料、TTL(time to live)、マイナーに対するトランザクション手数料を指定する。
    • oracle_extendトランザクション:オラクルのTTLを延長するトランザクション。TTL以外は変更できないので、cnlabはクエリ手数料などのパラメータも変更できるoracle_updateの導入を検討すべきと考えている。
    • oracle_queryトランザクション:オラクルにクエリを(クエリオブジェクト)投げる用のトランザクション。バイナリ形式のクエリ、送信者アドレス、オラクルアドレス、クエリTTL、レスポンスTTL、クエリ手数料、マイナーに対するトランザクション手数料を指定する。
    • oracle_responseトランザクション:クエリの回答用のトランザクション。問い合わせのあったクエリが定義するレスポンスTTLによってトランザクションのマイニング手数料が決まるが、オラクルオペレータ側が手数料を支払う。
  • オラクルステートツリーについて
    • オラクルオブジェクトとオラクルクエリオブジェクトからなるステートツリー。オラクルクエリはオラクルのサブツリーとなる。
    • オラクルオブジェクトはoracle_registerトランザクションで生成され、同トランザクションで定義されるTTLの期間は有効である。oracle_extendトランザクションで新しいTTLを指定するとオブジェクトのTTLが伸びる。延長されないままTTLを経過すると削除される。
    • オラクルクエリオブジェクトはoracle_queryトランザクションで生成され、oracle_responseトランザクションによりクローズされて変更できなくなる。TTLを経過すると削除される。
  • 暗号プリミティブについて
    • ÆTERNITYが用いる暗号プリミティブは全て世界的な暗号研究コミュニティのレビューを受けた公開されているアルゴリズムに基づいている。

※以下、今回まとめた範囲の和訳になりますので詳細をご覧になりたい方は読み進めてください。

4. プロトコル(続き)

4.5 オラクル

オラクルは現実世界のデータ(投票結果など)をブロックチェーンに取り込める可能性をもたらす。これは現実世界のできごとによる結果を伴うコントラクトを作成することに特別な関心を抱いている。

ノードは誰でもoracle_registerトランザクションをチェーンに送信すればオラクルを作成することができる。ユーザは誰もoracle_queryトランザクションをチェーンに送信することでオラクルにクエリ問い合わせを行うことが可能だ。オラクルのオペレータはoracle_responseトランザクションを送信することでクエリ問い合わせに回答でき、これはスマートコントラクトで利用できる。

各ブロックはオラクルのパトリシアマークルツリー、つまりオラクルステートツリー(オラクルオブジェクトとクエリオブジェクトで構成される)にコミットする。従ってオラクルの存在とクエリ/レスポンスの存在を証明可能だ。

オラクルのオペレーションは完全に信頼と評判に基づく。オラクルが間違った回答を送信してしまうのを防ぐ方法をブロックチェーンは一切提供していない。

4.5.1 オラクルトランザクション

oracle_registerトランザクションはオラクルのアドレス、クエリとレスポンスのフォーマット定義、クエリ手数料(オラクルオペレータに支払う)、TTL(time to live)、マイナーに対するトランザクション手数料(TTLに比例するコンポーネントを含む)を指定する。

オラクルオペレータはoracle_extendトランザクションを送信することで既存のオラクルのTTLを引き延ばすことができる。いまのところオラクルのオーナーが他のオラクルのプロパティ、例えばクエリ手数料などを変更できるようなオペレーションは存在しないようだ。

推奨案7:oracle_extendオペレーションを他のパラメータも変更可能なoracle_updateオペレーションで置き換えるかどうかを検討すべきである。

oracle_queryトランザクションはバイナリ形式でクエリを含んでおり、送信者アドレス、オラクルアドレス、クエリTTL、レスポンスTTL、クエリ手数料(オラクルオペレータ向け、オラクルがレスポンスするかTTLが期限切れになるまで検索する用)、マイナーに対するトランザクション手数料(クエリTTLに応じたコンポーネントを含む)を指定する。

オラクルオペレータはオラクルアカウントの秘密鍵で署名されたoracle_responseトランザクションを送信することでクエリにレスポンスする。レスポンストランザクションのマイニング手数料は対応するクエリによって定義されているレスポンスTTLによるが、支払いはオラクルが行う。

4.5.2 オラクルステートツリー

オラクルステートツリーにはオラクルオブジェクトとオラクルクエリオブジェクトが含まれる。オラクルクエリは対応するオラクルのサブツリーを形成する(クエリIDの最初の部分がオラクルIDで構成されるため)。

オラクルオブジェクトはoracle_registerトランザクションにより作成され、oracle_extendトランザクションによる新しいTTLで更新、TTLが期限切れになると削除される。

オラクルクエリオブジェクトはoracle_queryトランザクションにより作成され、oracle_responseトランザクションによりクローズされる。オラクルクエリオブジェクトがクローズされると、変更ができなくなる。期限切れのオラクルクエリオブジェクトは削除される。

4.6 ネーミングシステム

ÆTERNITYのこの側面についてはエンジニアリングと実装のレビューでアセスメントする予定である。

4.7 暗号プリミティブの選択

ÆTERNITYプロトコルではたくさんの暗号プリミティブを利用する。これには次のものが含まれている。

  • 楕円曲線に基づく電子署名
  • 暗号ハッシュ関数
  • トランスポートセキュリティ用の暗号化
  • PoI(proof-of-inclusion, 侵害の証明)機能を備えたデータ構造としてのパトリシアマークルツリー

これらすべての領域でÆTERNITYは公開済みの暗号アルゴリズムに基づいている。アルゴリズムの一部は政府標準あるいは業界標準である。また利用されているいくつかのアルゴリズムは研究者のDan BersteinやTanja Langeらが設計したものである。これらのアルゴリズムは全てグローバルの暗号研究コミュニティのレビューや検討を受けている。

異なるユースケースに対するそれぞれのアルゴリズムの正しい用法についてはエンジニアリングと実装レビューのスコープとなるだろう。

ÆTERNITYのセキュリティ監査報告を読んでみる7 ←← 前)|(次 →→ ÆTERNITYのセキュリティ監査報告を読んでみる9

免責

邦訳には誤りがある場合がございます。予めご承知おき下さい。

確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。

-ファクト
-, , ,

Copyright© 暗号通貨界隈のメモ書きなど。 , 2019 All Rights Reserved Powered by STINGER.

%d人のブロガーが「いいね」をつけました。