博客 / 詳情

返回

隱語社區可信數據空間MOOC第11講筆記:深入理解TEE OSes

📘 學習筆記:深入理解TEE OSes

Understanding TEE OSes In Depth


一、TEE OS 概述

📌 定義與作用

  • OS:軟件與硬件之間的橋樑
  • TEE OS:TEE軟件與TEE硬件之間的橋樑
  • TEE OS 分類

    • Enclave 內的庫操作系統:Haven, SGX-LKL, Gramine, Occlum
    • CVM 內的客户操作系統:Linux, Gramine-TDX, Asterinas

二、主要 TEE OS 介紹

1. Haven (OSDI’14)

  • 首個為 Intel SGX 設計的庫OS,提供 Windows ABI
  • 結構包括:

    • Application → Windows 8 API
    • Library OS → Drawbridge ABI
    • Shield module(線程、虛擬內存、調度、文件系統等)
    • Untrusted runtime → Drawbridge ABI, SGX priv. ops
    • SGX driver

2. Gramine-SGX (ATC’17)

  • Linux 兼容的單進程庫OS
  • 提供28種安全接口分類:Safe, Benign, DoS, Unsafe

3. Occlum (ASPLOS’20)

  • Linux 兼容的多進程庫OS,使用 Rust 編寫
  • 強調強隔離、最小化應用修改

4. SGX-LKL (EuroSys’21)

  • 基於 Linux Kernel Library 的 SGX 移植版本

5. Graphic-TDX (CCS’24)

  • 為 Intel TDX 設計的 Linux 兼容單進程庫OS
  • TCB 比傳統 Linux 內核小得多

三、Lago 攻擊:TEE OS 的主要威脅

📌 定義

  • Lago 是莎士比亞戲劇《奧賽羅》中的角色,不直接殺人,而是通過謊言和半真半假的話操縱奧賽羅自我毀滅。
  • Lago 攻擊:不可信的操作系統向 TEE 提供惡意輸入,利用 TEE 內部漏洞進行攻擊。

🛡️ 攻擊示例(Linux 內核漏洞)

1. 內存安全漏洞(virtio_ring.c)
i = virtio16_to_cpu(_vq->vdev, desc[i].next);
  • 問題:越界索引(Out-of-bound indexing)
2. 整數溢出(virtio_console.c)
nr_queues = use_multiport(portdev) ? (nr_ports + 1) * 2 : 2;
vqs = kmalloc_array(nr_queues, sizeof(struct virtqueue *), GFP_KERNEL);
  • 問題:整數溢出 → 分配零大小對象
3. Use-after-Free(virtio_net.c)
if (mtu < dev->min_mtu) {
    goto free;
}
...
free: free_netdev(dev);
  • 問題:未設置錯誤號 → Use-after-Free

四、Asterinas:內存安全的 Rust 內核

🛡️ 防禦 Lago 攻擊的設計

  • 內存能力對象

    • VmFrame:物理內存頁
    • DmaCoherent:一致性DMA映射
    • VmSpace:用户內存空間
    • DmaStream:流式DMA映射
  • 所有內存訪問必須通過這些對象的安全方法

✅ 優勢

  • 比 Linux 或其他 Rust 內核更內存安全
  • 最小化 TCB(比 RedLeaf、Theseus、Tock 更小)
  • 性能與 Linux 相當

五、MiSDisk:安全的虛擬磁盤

🎯 目標

  • 保護 TEE 的磁盤 I/O 免受強大攻擊者
  • 提供 CIFC 保證:

    • Confidentiality(機密性)
    • Integrity(完整性)
    • Freshness(新鮮度)
    • Consistency(一致性)

🧱 多層設計

  • L3:可信塊 I/O 層(BIO)
  • L2:事務性鍵值存儲(TxKV)
  • L1:事務性日誌存儲(TxLog)
  • L0:安全日誌層(EditJournal)

🚀 性能

  • 在 FIO 和 trace-driven 測試中顯著優於 SGX-PFS

六、總結

  • TEE OS 是 TEE 軟件與硬件之間的橋樑
  • Lago 攻擊 是 TEE 最大威脅
  • Asterinas 能有效防禦基於內存的 Lago 攻擊
  • MiSDisk 提供對基於 I/O 的 Lago 攻擊的 CIFC 保護
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.