Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TEEとIntel SGX入門
Search
hello31337
June 25, 2020
Technology
3
2.8k
TEEとIntel SGX入門
TEEとその実例であるIntel SGXについての簡単な解説を行います。
hello31337
June 25, 2020
Tweet
Share
Other Decks in Technology
See All in Technology
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
150
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
130
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
760
The Rise of LLMOps
asei
7
1.7k
AGIについてChatGPTに聞いてみた
blueb
0
130
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
100
Lexical Analysis
shigashiyama
1
150
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
420
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
複雑なState管理からの脱却
sansantech
PRO
1
150
Featured
See All Featured
Thoughts on Productivity
jonyablonski
67
4.3k
Teambox: Starting and Learning
jrom
133
8.8k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Typedesign – Prime Four
hannesfritz
40
2.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
GitHub's CSS Performance
jonrohan
1030
460k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Building Your Own Lightsaber
phodgson
103
6.1k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Raft: Consensus for Rubyists
vanstee
136
6.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Transcript
TEEとIntel SGX入門 日本IBM株式会社 櫻井 碧 2020/6/25 blockchain.tokyo Online #4
目次 • 自己紹介 • データセキュリティとTEE • Intel SGX • SGXの基本
• シーリング • Remote Attestation
自己紹介 • 名前:櫻井 碧 (tw:@dd_cliffford) • 経歴: • 2019年度 未踏スーパークリエータ
• 2020年3月 早稲田大学大学院 卒業 • 2020年4月 日本IBM株式会社 入社 • 趣味:ゲーム、ドライブ、蒙古タンメン中本
Trusted Execution Environment (TEE)
「人間を信用してはいけない」 • この世には、明らかに信用ならないのに世間に 受け入れられてしまっているシステムが 多数存在する • この事実は、特に機密性の高いデータを扱う場合 に大きな問題となる • 医療情報
• 生体情報 • 機微な個人情報 • クレジットカード番号 • etc.
ケース①:クラウドサービス • 現在普及しているクラウドサービスは、クラウド プロバイダを信用する事が出来ない • FW等で外界との境界にて防御はしている • 境界の内側のセキュリティは「ブラックボックス」 • 「大企業だから安心」は根拠のない神話
ユーザ 悪性のマシンやプロバイダが ユーザに送信された情報を 盗まない保証はない クラウド
ケース②:著作物配信 • ビデオや音楽のストリーミング配信等では、 デジタル著作権保護(DRM)によって コンテンツを保護する必要がある • いわゆる”割れ厨”ユーザ対策 • しかし、執念深いユーザはDRMをバラバラに して解析し、鍵を取り出して暗号を解き、
コンテンツを抽出してしまう • 根本的に無意味
データセキュリティに必要な根本的な思想 • 大原則は、「人間の善意や人間自体の信頼性には 頼らず、暗号学的・数理的に絶対的な安全性を 保証する事」 • データが保護されていなければならない全ての フェーズで、絶対的にデータが保護された状態で 処理を進めれば良い
準同型暗号を使う? • 従来手法でこの要件を満たす技術として 有名なのは「準同型暗号」 • 暗号文の状態で足し算や掛け算が出来る種類の 暗号 1 + 4
= (5) 復号 5 暗号化 暗号化 1 4
準同型暗号の現実 • 結論から述べると、現代のコンピュータは準同型 暗号に追いついていない • 必然的に準同型暗号は現実的ではない メリット デメリット ハードウェアを 信頼しなくて良い
極めて遅い 厳密な意味での 完全な保護 莫大なメモリを 食い潰す 耐量子性を持つ 精度に難がある
TEE(信頼可能な実行環境) • TEEの思想:コンピュータリソースを、信頼可能 な領域と信頼できない領域に分ける • 信頼可能領域でデータを扱う事で、データを 保護しながらのプログラム実行を可能とする • 信頼可能な領域:信頼可能なハードウェア及び それによりメモリ上に生成された保護領域
• 信頼できない領域:それ以外のすべて • 脅威モデル次第では、OSやVMMすら非信頼領域 として扱う
TEE(信頼可能な実行環境) • より具体的な実例に落とし込むと、信頼可能領域 はCPU内、CPUによって生成されたRAM上の 保護領域及びその間の通信路がTEEとなる 非信頼可能領域 (Untrusted) 保護領域 (Trusted) RAM
CPU 信頼可能ハードウェア TEE(Trusted) REE(Untrusted) Trusted Channel 秘密にしたいデータを 保護しながら使用し、 プログラムを実行できる
メジャーなTEE技術 Intel SGX ARM TrustZone RISC-V Keystone AMD SEV コンピュータ(非モバイル)
向けTEE技術の中では最有力
Intel SGX
Intel SGX(Software Guard eXtension) • SGX:データを外部攻撃者だけでなくOSや VMMからすら秘匿してプログラムを実行 できるテクノロジ Intel CPU
ハードウェア 非信頼可能 領域 OS RAM Enclave (信頼可能領域) Enclave 生成 秘密データ 演算 CPU内は保護されて おり、内部での演算は 平文であるため高速 保護チャネル/エリア 非保護チャネル/エリア EnclaveをCPU内のメモリ 暗号化エンジンで作成
MEE(メモリ暗号化エンジン) • MEE:Intel製CPU内のUncore部分に組み 込まれているユニット • MEEは、以下の技術の組み合わせにより Enclaveを実現する: • “Tweaked” 128bit
AES/CTR • マークル木の複雑な組み合わせ • Carter-Wegman式メッセージ認証符号 • AES暗号ベースである為、実行速度が 極めて高速
Enclave • Enclave:MEEによってRAM上に生成される、 AES暗号ベースの保護領域 • 実際にデータを格納するEPC(Enclave Page Cache)と、その他13の構造体によって構成 される •
VA, TCS, SSA, EPCM, etc. • EPCのサイズ上限は原則96MB
SGX専用のCPU命令 • Enclaveの操作やアクセス等には、必ずIntel CPUによる専用のCPU命令を介さねばならない • スーパーバイザ用命令:Enclaveの生成や、EPCの ページ操作など • ユーザ用命令:Enclaveへの進入・脱出など •
これらを介さない不正なアクセスの試みを検知 すると、MEEは即座にマシンの電源を落とす
Intel SGXが対策できる脅威モデル • 別プロセスによる攻撃、OSやVMMによる攻撃、 オフチップハードウェアへの攻撃に対応 • サイドチャネル攻撃への対策が別途必要 RAM Enclave 別プロセス
による攻撃 OS・VMM OSに よる攻撃 オフチップ ハードウェア攻撃 オフチップ ハードウェア メモリ破壊、 ROP攻撃等 ルートキット等 コールドブート攻撃等
シーリング/アンシーリング • シーリング: Enclave内のデータを、以下の2つの 内いずれかから導かれる鍵を用いた128bit AES/GCMで暗号化し、不揮発性メモリに 書き出す処理 • MRENCLAVE: Enclave自体に固有なハッシュ値
• MRSIGNER: Enclave署名者に固有なハッシュ値 • アンシーリング: シーリングしたデータを Enclaveにロードし復号
Architectural Enclave(AE) • AE:SGXが内部で使用する、いわば「システム 用Enclave」 • PvE:SGX初使用時にマシンをアクティベートし、 EPIDメンバ秘密鍵をシーリングしてストア • QE:PvEのストアした鍵に唯一アクセス権を持つ
Enclave(PvEは初回以降起動しない) • LE:Deprecated • PSE:SGXSDK v2.8以降アクセス方法が不明 • ユーザがこれらに直接アクセスする方法はない
遠隔のSGXマシンを利用したい場合 • クラウドモデルのSGXアプリケーションなど、 遠隔のSGXマシン上のEnclaveを使用したい ケースが存在する • この場合、Enclave自体の正当性に加え、遠隔 マシン自体のCPUの正当性も検証しなければ ならない Remote
Attestationという機能を利用する
Remote Attestation (RA) •RAは実装は非常に面倒臭いが、その根源的な 目的自体は単純である: [ISV・SP] RA後のTLS通信用のセッション鍵を 交換する [SP] ISVのCPUとEnclaveの完全性を検証する
※ISV:SGXマシン、SP:非SGXマシン
Remote Attestation (RA) •RAは基本的には楕円曲線ディフィー・ ヘルマン鍵共有プロトコル (EC-DHKE)に 基づいている • 楕円曲線暗号という公開鍵暗号の性質を利用し、 共通鍵を2者で共有出来るようにするプロトコル
• NIST P-256曲線を使用 •EC-DHKEに加え、RAはISVのEnclaveとCPU の検証を実行する • Quote構造体と署名拒絶リスト(SigRL)を使用
楕円曲線離散対数問題 (EC-DLP) (1/2) •楕円曲線上の加算を次のように定義: Q R -(Q+R) Q+R Q -2Q
2Q G G ↑EC-DLPではこれを使用する
楕円曲線暗号のパラメータ • 次の通りパラメータを定義: : 使用する楕円曲線 : ベースポイント (楕円曲線上の加算を適用 する基準点) :
に楕円曲線上の加算を適用する回数 :
楕円曲線離散対数問題 (EC-DLP) (2/2) •この例では… nQ/2 -nQ nQ G • 楕円曲線:
ベースポイント: 加算回数: : • を , , から導出する のは容易 • を , , から導出する のは非常に困難 (NP困難)
EC-DHKE (1/2) • RAのベースであるEC-DHKEはEC-DLPを 安全性の根拠としている • 前提条件: , (楕円曲線, ベースポイント)
• 公開鍵: (=) • 秘密鍵: (加算回数)
EC-DHKE (2/2) •前提条件: 楕円曲線, ベースポイント SP ISV ( , )
①上で = なるキーペア ( , )を生成 ②ISVの公開鍵 を送信 ③SPの公開鍵 を送信 ④SPは , ISVは を生成 但し = = ( , )
RAのプロトコル概観 SP ISV ⑥ , を生成 ⑦共有秘密 を生成 ③公開鍵 とCPU情報を送信
⑧公開鍵 とSigRL及び その他を送信 ② , を生成 IAS ①RA開始要求 ④ISVのCPU情報を 転送 ⑤SigRLをリターン ⑨SigRLを検証 ⑩共有秘密 を導出 ⑪quoteを送信 ⑫quoteを転送 ⑬アテステーション ステータスを返信 ⑭RAの受理・拒絶 の判定結果を送信
まとめ • 現代のコンピュータリソースで、データを保護 しながらの実用的なプログラム実行を可能に する技術として、TEEが有望 • TEEの中でも最も実用的な技術がIntel SGX • SGXは高い特権の実体からもデータを保護
できるだけでなく、補助記憶装置への暗号化 してのストアや遠隔認証も可能
免責事項 本発表・スライドにおいて述べた内容や意見は 全て個人によるものであり、所属会社の見解や 意見その他を代表するものではございません。
参考リンク [1] Intel SGX入門 - SGX基礎知識編 (https://qiita.com/Cliffford/items/2f155f40 a1c3eec288cf) [2] Intel
SGX入門 - SGXプログラミング編 (https://qiita.com/Cliffford/items/c6c0c696 d4cc6d60d515) [3] BI-SGX : Bioinformatic Interpreter on SGX-based Secure Computing Cloud (https://bi-sgx.net)