TEE

松岡 航太郎

TEEとは

  • Truset Execution Environmetnの略
  • ハードウェアの機能によって耐タンパ性を保証する仕組み
  • 通常のプログラムからハードウェア的に隔離された実行環境を提供する
  • ハードウェアに脆弱性が見つかることがたまによくある
  • サイドチャネル攻撃に弱い
  • Meltdown、Spectreや電力消費の監視とか
  • 実行速度が通常とほぼ変わらないのが一番のメリット
  • ここでは4種類紹介する
  • 同じTEEと言っても想定する状況がそれぞれ違う

IntelSGX

  • Intelが提供するTEE
  • 主に想定されている用途はDRM
  • Remote Attestationと呼ばれる遠隔のマシン同士の認証システムがある
  • 研究者の人々によって無理やり秘密計算に使われている
  • DRM用なのでそこらへんのノーパソとかでも積んでいたりする
  • 基本的なアイデアはチップ内でだけ復号するというもの
  • メモリの上でも暗号化されている
  • メモリは最大256MBブロックでユーザーが管理する必要がある
  • OSを信用していないのとEnclave内のメモリが少ないため
  • 特殊な命令を特殊なライブラリで呼び出すので直接書くのは非人道的
  • この制限を回避するための研究レベルのフレームワークがいくつかある
  • SGX2もあるがNUCぐらいにしか載ってない

GraphenSGX

  • その道では有名らしいフレームワーク
  • シングルアプリ用の小さなOSをEnclaveの中で動かす
  • これによってメモリアクセスやライブラリの不便をwrapする

BI-SGX

  • 講師の未踏同期が作っていたフレームワーク
  • SGX単体ではEプログラムが情報を流出させないとは保証されない
  • データが流出しない統計処理だけを許すようにインタプリタを挟む
  • インタプリタがメモリ周りの面倒を見る

AMD SEV

  • 同じx86だが全く違うTEE
  • こちらはKVMを使ってVMを動かすことを想定している
  • 普通のOSつきのVMをまるごと保護する
  • メモリは暗号化されるがマネジメントは勝手にしてくれる
  • Remote Attestationもある
  • 実はGCPですでに使える
  • 想定用途からサーバ用であるEPYCにしか載ってないらしい

ARM Trust Zone

  • 組み込み向けを想定している
  • メモリの暗号化はオプション
  • 特定のハードウェアは通常のアプリからアクセスできないようにしたりできる
  • 信頼できないアプリケーションから守るという感じ
  • ファームウェアのダンプをさせないようにしたりもできる
  • この上で動かす専用のOSがいくつかある

RISC-V KeyStone

  • オープンソースのTEE
  • 他のTEEはクローズドであることに安全性の根幹がある
  • どちらかいというと組み込み向け
  • メモリ暗号化はオプション
  • TrustZoneが隔離実行環境を一つしか持たないのに対し複数持つことができる

何を信用するか

  • TEEでは原則チップメーカーを信用することになる
  • アメリカ企業ならNSAにバレてもおかしくない
  • ファウンドリが台湾なら台湾にバレるかもしれない
  • DRM用途なら国レベルの組織が欲しがるものではない
  • 原発の制御用途や政府の基幹サーバだと......?
  • Keystoneなら理論上はすべて自前で作れば信用できるか?
  • 実用的秘密計算としては情報の提供者さえ納得させられれば十分ではある
  • 準同型暗号とは攻撃モデルが異なる

参考資料

page_number: true