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.9k
TEEとIntel SGX入門
TEEとその実例であるIntel SGXについての簡単な解説を行います。
hello31337
June 25, 2020
Tweet
Share
Other Decks in Technology
See All in Technology
UI State設計とテスト方針
rmakiyama
2
460
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
26
11k
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
ハイテク休憩
sat
PRO
2
140
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
550
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
C++26 エラー性動作
faithandbrave
2
720
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
180
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
520
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
300
Featured
See All Featured
Done Done
chrislema
181
16k
Building Your Own Lightsaber
phodgson
103
6.1k
4 Signs Your Business is Dying
shpigford
181
21k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Embracing the Ebb and Flow
colly
84
4.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
GraphQLとの向き合い方2022年版
quramy
44
13k
Scaling GitHub
holman
458
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Designing Experiences People Love
moore
138
23k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
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)