491 Views
June 04, 25
スライド概要
大学のゼミの一環で調べたIntel SGXをはじめとするTEEについてまとめました
間違っている箇所がありましたら指摘して頂けると幸いです。
TEEの概要とIntel SGXについて TEEの概要とIntel SGXについて Trusted Execution Environmentの概要と部分隔離型TEEの例Intel SGX 山田ハヤオ 1/43
TEEの概要とIntel SGXについて 信用とは? 数学的な保証があるもの 暗号 署名 大多数の目による集団作用によって保証 OSS 公開情報 大企業の社会的信用 OSベンダー自らがウイルスを仕込むとは考えにくい マザーボードメーカーが意図的に脆弱性を仕込むとは考えにくい 山田ハヤオ 2/43
TEEの概要とIntel SGXについて 社会的信用? OSベンダーは本当にウイルスを仕込まない? 今PCに刺さっているメモリって絶対に信用できる? GoogleやAmazon等のクラウドは顧客情報を絶対に覗かないと保証できる? 社会的信用において、論理的な絶対保証というのは言いにくい ↓ 信用するハードウェア/ソフトウェアを最小限に抑えたうえで、数学的に本当に安全な場所 がほしい ↓ CPUと特定の領域のデータだけを信用するのがTEE 山田ハヤオ 3/43
TEEの概要とIntel SGXについて 秘密計算の必要性 今のクラウドサービスの内側で情報がどのように扱われているのかわからない →安心してデータを渡せない →第三者に二次配布される危険性がある DRM(デジタル著作権保護)の必要生 メモリやCPUの計算の中身がバレてしまうと結局著作権保護は解かれてしまう 過去にDVDやゲーム機は著作権保護を回避され、甚大な被害を負っている 計算の中身を知られないまま計算したい→秘密計算 Privacy-Enhancing Technologies(PETs)の一種として注目が集まっている 山田ハヤオ 4/43
TEEの概要とIntel SGXについて PETsとは Privacy-Enhancing Technologies(PETs)プライバシー強化技術 主に以下のプライバシーを強固にするための技術の総称 暗号化/秘匿化/秘密計算 秘密分散 秘密計算 計算過程も秘匿するもの(後述) 暗号/署名 プライバシー 差分プライバシー 合成データ 連合学習 山田ハヤオ 5/43
TEEの概要とIntel SGXについて 秘密計算の種類 準同型暗号方式 準同型性を満たしている暗号方式のこと。 2項間加法の例:Enc(x) + Enc(y) = Enc(x + y)となるような暗号化方式 秘密分散方式 分散型コンピューティングの一種で、情報を分割することでセキュアに保つ TEE ハードウェアの機構やソフトウェアの制御によって計算を秘密裏に行う ゼロ知識証明 結論以外の事実を相手に知らせず、事象を証明する 山田ハヤオ 6/43
TEEの概要とIntel SGXについて 準同型暗号方式 準同型性とは 群 (G, ⋅) と (H , ∗) に対して、 φ : G → H が任意の a, b ∈ G においてφ(a ⋅ b) = φ(a) ∗ φ(b) であること 準同型暗号とは 準同型性を満たす暗号方式のこと すなわち暗号化された状態において演算が定義できるものを指す 利点と課題 暗号学的に秘密を証明でき、一切の信用無しに計算を行える 膨大な計算量を要する 山田ハヤオ 7/43
TEEの概要とIntel SGXについて ゼロ知識証明 計算結果の正当性を、その計算に使われた秘密情報を明かすことなく証明する暗号技術。 完全性(証明者が正しい場合、検証者も必ず正しいと判断)・健全性(証明者が正しくない場 合に高確率で偽と判断)・ゼロ知識性(証明したいこと以外の情報を得ない)を満たす。 利点と課題 利点: プライバシー保護と検証可能性を両立できる。 課題: 特定の種類の計算に限定される、計算コストが高い場合がある。 例 ブロックチェーン取引のトランザクションの証明 属性情報の選択的開示 山田ハヤオ 8/43
TEEの概要とIntel SGXについて TEE 利点 最終的な計算は平文で行われるため、時間・空間計算量のオーバーヘッドがほぼ無い TPMと異なり任意のコードを秘密裏に計算できる 信用範囲を限り無く減らすことで脆弱性を減らす 課題 コーディングに高度な知識を要求する 山田ハヤオ 9/43
TEEの概要とIntel SGXについて TEEの種類 部分隔離型 CPUやメモリの一部を信用される実行環境として分離する アプリケーション側で専用の実装が必要 信用する範囲が非常に狭いので安全 実装例 Intel SGX ARM TrustZone RISC-V Keystone VM型 OS全体を仮想化し、信用できる空間で実行する OSそのものを信用する必要がある 実装例 Intel TDX AMD SEV 山田ハヤオ 10/43
TEEの概要とIntel SGXについて ARM TrustZone ARMの組み込みデバイス向けの部分隔離型TEEの実装 実行環境をSecure Worldと非セキュアなNormal Worldに分離 (Intel SGX と同じ非階層型) 実行環境内の暗号化は行われない Secure Worldでは専用のSecure OSが動作し、APIで計算を依頼する TEE内で動作するアプリケーションに脆弱性があった場合に無力なことがSGXと変わら ない モバイルデバイスの指紋認証等に利用されている(Trusty TEE) https://www.ffri.jp/assets/files/monthly_research/MR201303_TrustZone.pdf https://qiita.com/DaigakuSakamoto/items/c489aca92ec752b5270b 山田ハヤオ 11/43
TEEの概要とIntel SGXについて Intel SGX Intelが開発した部分隔離型TEE。 リモートアテステーション(RA)により、外部のコンピュータ上で秘密計算を行う リモートの外部計算機の安全性を暗号学的に保証するプロトコルがある CPUとメモリ内に専用の秘匿領域(Enclave)を作成し、その中で任意の計算を行える SGX SDKによる完全な隔離 LibCをリンクできず、専用の標準ライブラリを用いて開発を行う SGX SDKが本当に信じられないほど難解で複雑で厄介 当然、CPUベンダー(Intel)とCPU本体、マイクロコードを信用する必要がある サイドチャネル攻撃に弱い 物理層からの攻撃 実行時間等の周辺情報 山田ハヤオ 12/43
TEEの概要とIntel SGXについて Intel SGX SGX 1 コンシューマ機に搭載されているもの Enclaveが96MBまで SGX 2 最近のXeonに搭載 Enclaveがデカくて嬉しい(512GB) Intel TME-MK Enclave Dynamic Memory Management Enclave(EPC)の動的な確保と解放 Scalable-SGX, SGX-TEMという名称 山田ハヤオ 13/43
TEEの概要とIntel SGXについて Enclaveの特徴 Ring 3(ユーザーランド)でのみ実行可能 標準ライブラリは使えない LibOS(ミドルウェアとしてのOS)を用いる方法 あまりにも情報が少ないため今回は除外 SGX SDK(一部の標準ライブラリをEnclave用に再実装したライブラリ)を使う方法 EDL(Enclave Definition Language)を用いてEnclaveの内外の橋渡しを定義 SGXにデータのやりとりの情報を伝達する役割を果たす C/C++より厳密にEnclave境界の関数のシグネチャを定義 山田ハヤオ 14/43
TEEの概要とIntel SGXについて 想定される脅威モデル リモートのEnclaveで秘密計算する際に ルートキット等のOSによる攻撃 ハードウェア攻撃 プロセス内破壊(ROP,メモリ破壊) 等のCPU以外信用できない状況 Enclave外から中に干渉する唯一の方法は →外でメモリ破壊を行われようとも、Enclave内は安全 仮にカーネルレベルの権限があっても一切干渉できない 物理的な攻撃に対しても耐性がある…はずだった(後述) EENTER 山田ハヤオ 15/43
TEEの概要とIntel SGXについて サイドチャネル攻撃 Enclave開発者はサイドチャネル攻撃対策を実装する必要がある 実行時間や電磁波等の環境依存のもの ページフォルト(昨日の横山先輩の資料を参照) 有名な攻撃例 Foreshadow 一時期話題になったSpectreやMeltdownに関する脆弱性 Controlled-Channel 山田ハヤオ 16/43
TEEの概要とIntel SGXについて 脆弱性と責任の所在 CPU Vendor(Intel) マイクロコード由来の脆弱性 アテステーションのプロトコルに関した脆弱性 Enclave開発者(SGXを利用したアプリケーション開発者) サイドチャネル攻撃に対する対策 Enclave内部の実装に由来する脆弱性 バッファオーバーフロー/メモリリーク等 山田ハヤオ 17/43
TEEの概要とIntel SGXについて 脆弱性と責任の所在 https://qliphoth.io/media/2023-8-sgx-attacks-1.pdf より引用 山田ハヤオ 18/43
TEEの概要とIntel SGXについて Intel SGX のプログラミングモデルとデータ構造 DRAMの中のにEnclave Page Cacheが作成される。 4KBの小さいものがPRM(Processer Reserved Memory)内に作成される。 山田ハヤオ 19/43
TEEの概要とIntel SGXについて Intel SGX のプログラミングモデルとデータ構造 EPCM 小さなEPCの集合を追跡・管理 適切なページ配置が成されているか確認 SECSを識別する 情報 Enclave内からのrwx権限情報 ENCLAVESECS SECS Enclaveのセキュリティ情報を専用のEPCに保持 Enclaveの測定値(動作定義)/証明書ベースのアイデンティティ Enclaveの属性/ベースアドレス/サイズ/SSAフレームサイズ 山田ハヤオ 20/43
TEEの概要とIntel SGXについて Intel SGX のプログラミングモデルとデータ構造 Intel SGX Explaine Figure 62より引用 専用のメモリテーブルを持ち セキュリティ情報(SECS) EPCへのポインタ Enclave内のコード 等の情報を持つ 山田ハヤオ 21/43
TEEの概要とIntel SGXについて Sealing EnclaveはDRAM内のEPC上に作成される→揮発性 Enclave内のデータをディスク等の安全ではない場所に格納し、状態を保存することを Sealingと呼ぶ 手順 データ保護のポリシーを決定する(後述) (Root Sealing Key)を取得 データを を用いて暗号化( RSK AES-GCM 山田ハヤオ sgx_seal_data で sgx_sealed_data_t を得る) 22/43
TEEの概要とIntel SGXについて Sealingのポリシー MRENCLAVE(強い) データ,スタック,ヒープ等の全てのハッシュが一致したときのみ承認 非常に厳格でありセキュア MRSIGNER(弱い) MRSIGNER(Enclave署名者),ISVSVN(セキュリティバージョン),ISVPRODID(製品ID)の一致に より承認 作者情報さえ一致すれば内容を覗ける→Enclaveのバージョンに依存しない 山田ハヤオ 23/43
TEEの概要とIntel SGXについて Attestation Attestaion(アテステーション)とは、Enclaveが安全かどうかを確認すること 正規のEnclaveであるかどうか(改変されていない) 不正な状態でないかどうか(既知の脆弱性に対してパッチが当たっているか否か等) リモート計算のための安全な通信経路を確立 山田ハヤオ 24/43
TEEの概要とIntel SGXについて Local Attestation(LA) 自分自身のPC上の他のEnclaveの安全性を確認するのがLA 楕円曲線ディフィー・ヘルマン鍵共有(EC-DHKE)で行われる によって発行された 構造体を用いる EREPORT REPORT Enclaveの測定値(動作定義) 証明書ベースのアイデンティティ Enclaveのバージョン情報 … で見たやつだ! SECS 山田ハヤオ 25/43
TEEの概要とIntel SGXについて Local Attestation(LA) の手順 1. 構造体に対し による (メッセージ認証符号)を付与 2. 128bitの をレポートキーとして利用 3. 双方のEnclaveでレポートキーを比較する 計算に用いられる属性は のもの+ 発行のたびに決定される乱数 同じPCにおいて同じタイミングでLAを開始した場合、レポートキーは同一になる REPORT 128bit AES/CMAC MAC MAC SECS EREPORT 実は私も詳細を把握し来ておらず、https://acompany.tech/privacytechlab/sgx-local-attestationを参照してください 山田ハヤオ 26/43
TEEの概要とIntel SGXについて Local Attestation(LA) の必要性 Q: 自分自身なのに何故検証する必要があるのか? A: PCの中にEnclaveは複数存在しうる Enclave間で通信を行うためにLAを行う → Enclaveでは、そのEnclave外は全てデフォルトで安全ではないと見做す 相手のEnclaveが「本当に自分のPCのEnclaveであるかどうか」を検証するのがLA Q: Enclaveが同一のPCにあるというだけでEnclaveが安全と言い切れるのか A: 自分のPCが脆弱性等を持っている場合、相手だけでなく自分も危険になってしまうので関 係ない 山田ハヤオ 27/43
TEEの概要とIntel SGXについて Remote Attestation(RA) リモートに存在しているEnclaveが本当に安全であるか(本物のTEEか,脆弱性はないか等)の 確認を行うプロトコル。 EPID-RAとDCAP-RAの2つの方式 用語説明 SP: Service Provioder。SGXを搭載していない端末。 ISV: Independent Software Vendor。Enclaveが存在しているデバイス側。 山田ハヤオ 28/43
TEEの概要とIntel SGXについて Remote Attestation(RA) の種類 パターン1(EPID-RA) 常にSP→ISVへRAを行う。 当初Intel SGXで想定されていた手法。PowerDVDで採用されている。 サーバー: SGX無し (SP) クライアント: SGXあり (ISV) IAS(Intel Attestation Service)というIntelが提供していた検証を行うサービスを用いる。 IASの提供は既に終了しているため、2025年4月以降はEPID-RAを利用することはできな い。(後述) 山田ハヤオ 29/43
TEEの概要とIntel SGXについて Remote Attestation(RA) の種類 パターン2(DCAP-RA) 任意のクライアントがSGXを搭載しているサーバーへ計算を依頼する。 サーバー: SGXあり (ISV) クライアント: SGX無し (SP) SGX 2 で最近のXeonが対応しているのはこちらのRAのみ。 高価なエンタープライズ向けのXeon CPUでの利用が主であり、クラウドサービス等での秘 密計算サービスを主軸としていると思われる。 山田ハヤオ 30/43
TEEの概要とIntel SGXについて DCAP-RA の主な流れ1 登場人物 秘密計算を依頼するクライアント Intel SGXに対応しEnclaveを持つリモートサーバー クライアントが信用する検証サーバー 用語解説 Quote: で取得できる をもとに生成される認証情報 Quoting Enclave: Quoteの生成に用いられる専用のEnclave この中で をAttestation Keyで署名することでQuoteが完成する コラテラル: 以前のIASが内部的に保持していた検証用の追加情報 証明書やバージョン情報、セキュリティ情報等を保持する EREPORT REPORT REPORT 山田ハヤオ 31/43
TEEの概要とIntel SGXについて DCAP-RA の主な流れ2 1. クライアントがサーバにDCAP-RAを要求 2. クライアントがサーバーから公開鍵を受け取り、自身の秘密鍵と合わせて共通鍵を生成 3. 共通鍵とセッション情報等をサーバーに送信 4. サーバーが を利用してQuote Enclave 3のTarget Info( )を 生成 5. サーバーが生成したQuote Enclave 3をクライアントに送信 6. クライアントが検証サーバーにQuoteを送信 7. コラテラル プロバイダーからコラテラルを取得 8. 検証サーバがコラテラルによりQuoteを検証し結果をクライアントに送信 9. クライアントが受信したQuoteの同一性を を用いて確認 10. Quoteがいい感じ(クライアントの基準を満たしている)ならばセッションを開始 山田ハヤオ 32/43 sgx_qe_get_target_info REPORT REPORT
TEEの概要とIntel SGXについて DCAP-RA 図解 山田ハヤオ 33/43
TEEの概要とIntel SGXについて EPID-RAとDCAP-RAの違い EPID-RA クライアント上のSGXで動作することを前提に設計 SGX 2 非対応 中央集権的なIASによって検証を行う(サードパーティもIASになれる予定が実現せず) EC-DHKEベースの鍵交換を専用のAPIで自動で行う Provisioning EnclaveがPSK(Provisioning Seal Key)をSealing DCAP-RA サーバーサイドのSGXを前提とし、EPCが大きい 鍵交換は自前で実装 Microsoft MMAやTrusted Authority等、自由に検証サーバーを選択,構築できる 山田ハヤオ 34/43
TEEの概要とIntel SGXについて SGX 1 の EPID-RA が廃止された理由 SGX 1 はクライアントサイドにEnclaveがあり、サーバー→クライアントにRA後に秘密情報 を送信してもらった。すなわち、ユーザー側のデバイスはSGXを対応である必要がある。 しかし…… RAを正常に突破できるクライアントは非常に少ない 第11世代以降のCPUにはSGXが非搭載に クライアントサイドで秘密計算を行う必要性のあるものが少ない (DRM解除以外にキラーアプリケーションを発見できず) 中間サービスIASに強く依存している TEEは本来CPU以外を信用しない為の物のはずが、特定のサービスに依存してしまって いる Attestation Keyが流出した場合の失効にIAS側に依頼する必要がある 山田ハヤオ 35/43
TEEの概要とIntel SGXについて PowerDVDによる脆弱なRAによる機密の流出1 PowerDVDがUHD BDの復号に必要な秘密鍵をリモートから取得する際にEPID-RAが行われ た。 しかし実はRAに完全に成功するデバイスはごく僅か。SGXの脆弱性修正はマイクロコード の修正(BIOS(UEFI)アップデートを経由)で行われる。 →殆どのユーザーはアップデートしない+ベンダーが更新を提供しない場合も RAに成功するデバイスでしかBDを再生できない→ユーザー体験を大きく損なう これを避けるためにCyberlinkはIASによる返答が であっても無条件に秘 密鍵を送信してしまった。 GROUP_OUT_OF_DATE 山田ハヤオ 36/43
TEEの概要とIntel SGXについて # PowerDVDによる脆弱なRAによる機密の流出2 1. Foreshadow攻撃(L1TF攻撃)を仕掛け秘密鍵を入手 2. 入手した鍵をもとに偽物のEnclave(Rogue QE)を作成 3. SGXを模倣するEmulated Guard Extentionsを作成 4. Cyberlinkのプロビジョニングサーバーは偽物のEnclaveを誤認し鍵を送信 この問題はSGXの安全性とユーザビリティの狭間に追いやられた苦肉の策の末路 →Intel SGXの運用上の問題を浮き彫りにした https://sgx.fail/files/sgx.fail.pdf https://qliphoth.io/media/2024-8-sgx-fail.pdf https://acompany.tech/privacytechlab/intelSGX-dilemma 山田ハヤオ 37/43
TEEの概要とIntel SGXについて まとめ TEEとは? 「信用」の最小化: CPUと特定の領域のみを信頼し、安全な実行環境を構築 秘密計算の実現: 計算内容を秘匿したまま処理を実行 (PETsの一種) 高い効率性: 時間・空間計算量のオーバーヘッドを最小限に抑制 Intel SGXの機能と強み CPUとメモリ内の隔離された秘匿領域Enclave - Attestationによりリモート環境でのEnclaveの真正性を暗号学的に保証 SealingでEpc上の揮発性Enclaveデータの安全な永続化 SGX 2 において大容量Enclave、動的メモリ管理など機能強化 山田ハヤオ 38/43
TEEの概要とIntel SGXについて まとめ Intel SGXの課題と教訓 サイドチャネル攻撃による物理層や実行時間からの情報漏洩リスク SGX SDK、EDLによる高度な知識要求 EPID-RAの事例よりわかるIntelの独裁状態 PowerDVD事例等のセキュリティとユーザビリティのジレンマ、運用上の脆弱性 私の今後の予想 SGX2によるサーバーサイドのRAの増加 クラウドサービスが抽象化し、Enclave開発者は手軽に利用できるようになるのでは? 山田ハヤオ 39/43
TEEの概要とIntel SGXについて 参考文献 櫻井 碧 氏 セキュリティキャンプ講義資料 – Cliffford Terminal – aos' website 櫻井 碧氏の個人ウェブサイト https://qliphoth.io/seccamp/ 【技術】TEE(Trusted Execution Environment)とは? https://acompany.tech/privacytechlab/trusted-execution-environment 【技術】Intel SGXの難しさとジレンマ https://acompany.tech/privacytechlab/intelSGX-dilemma 【技術】Intel SGX Attestation詳説 - Local Attestation編 https://acompany.tech/privacytechlab/sgx-local-attestation 【技術】Intel SGX Attestation詳説 - EPID Remote Attestation編 https://acompany.tech/privacytechlab/sgx-remote-attestation 【技術】Intel SGX - DCAP-RA解体新書 https://acompany.tech/privacytechlab/intel-sgx-dcap-ra 【技術】Intel SGX - MAA版DCAP-RA移行戦闘記 https://acompany.tech/privacytechlab/MAA-DCAP-RA Intel SGX入門 - SGX基礎知識編 #IntelSGX - Qiita https://qiita.com/Cliffford/items/2f155f40a1c3eec288cf 山田ハヤオ 40/43
TEEの概要とIntel SGXについて 参考文献 論文 Intel SGX Explained Victor Costan and Srinivas Devadas(2016) https://eprint.iacr.org/2016/086.pdf SGX.Fail https://sgx.fail/ SoK: SGX.Fail: How Stuff Gets eXposed Stephan van Schaik https://sgx.fail/files/sgx.fail.pdf An Overview of Vulnerabilities and Mitigations of Intel SGX and Intel TDX Applications https://cyber.ee/uploads/report_2025_sgx_19b89d79ed.pdf HyperEnclave: Enhancing the I/O Security of SGX ZILONG NAN https://kth.diva-portal.org/smash/get/diva2:1947203/FULLTEXT02.pdf Survey on Trusted Execution Environments https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2022-07-1/NET-2022-07-1_05.pdf 山田ハヤオ 41/43
TEEの概要とIntel SGXについて 参考文献 ソースコードとドキュメント intel/linux-sgx: Intel SGX for Linux* https://github.com/intel/linux-sgx sgx_tseal 1.1.1 - Docs.rs https://docs.rs/crate/sgx_tseal/latest SGX-Bleed Proof-of-Concept codes https://github.com/hello31337/seccamp2023-l5/tree/master/sgx-tmp intel/SGXDataCenterAttestationPrimitives https://github.com/intel/SGXDataCenterAttestationPrimitives 山田ハヤオ 42/43
TEEの概要とIntel SGXについて 参考文献 ウェブサイト 準同型暗号とは?実用化事例や、主な手法について解説 | EAGLYS https://eaglys.co.jp/resource/columns/homomorphicencryption 秘密計算 | 用語解説 | 野村総合研究所(NRI) https://www.nri.com/jp/knowledge/glossary/secure_computation.html Web3のプライバシーに信頼をもたらす注目の技術「ゼロ知識証明」とは? | DATA INSIGHT | NTTデータ - NTT DATA https://www.nttdata.com/jp/ja/trends/data-insight/2023/0724/ Home | SGX 101 https://sgx101.gitbook.io/sgx101 Trusty TEE | Android Open Source Project https://source.android.com/docs/security/features/trusty?hl=ja Intel SGX2 / Enclave Dynamic Memory Management Patches Posted for Linux-Phoronix https://www.phoronix.com/news/Intel-SGX2-Linux-Patches 安全なデータ活用のためのプライバシー強化技術(PETs)の活用 https://www.ppc.go.jp/files/pdf//241203-1_hearing_material-4.pdf 山田ハヤオ 43/43