標簽:隱私計算、可信執行環境、LLM、沙盒、內存加密、TEE、SGX、Gramine
----
1. 背景:甲方爸爸一句話,“數據不能出機房”
我們給某三甲醫院做智能問診助手,模型 70 B、知識庫 300 GB。
甲方只給了兩條鐵律:
1. ?患者原始對話永久不可見;
2. ?運維人員也無法偷看日志。
傳統做法:
? ?私有化部署 → 運維 root 權限可拷日志;
? ?聯邦學習 → 推理延遲飆到 5 s+。
于是,我們把整個 LLM 關進“小黑屋”——基于 Intel SGX 的隱私沙盒。
----
2. 技術選型:為什么選 SGX 而不是 GPU?
維度?? ?GPU TEE (H100)?? ?Intel SGX?? ?結論
內存加密?? ?128 GB HBM3 加密 ??? ?512 GB EPC ??? ?SGX 夠用
生態?? ?CUDA TEE 剛起步?? ?Gramine/OCCLUM 成熟?? ?SGX 勝出
成本?? ?40 萬 / 卡?? ?2.4 萬 / 服務器?? ?甲方錢包勝出
----
3. 系統架構:三層“黑盒”
┌────────────────────────┐
│ ?用戶明文請求 ? ? ? ? ?│ ?← 醫院內網
└────────────────────────┘
│
┌────────────────────────┐
│ ?應用網關(TLS 終端) ? │ ?← 日志脫敏
└────────────────────────┘
│
┌────────────────────────┐
│ ?SGX Enclave ? ? ? ? ? │
│ ?┌────────────────────┐ │
│ ?│ ?LLM-70B INT4 ? ? ?│ │
│ ?│ ?KV-Cache Encrypted│ │
│ ?│ ?無文件句柄 ? ? ? ?│ │
│ ?└────────────────────┘ │
└────────────────────────┘
----
4. 關鍵細節:讓 70 B 模型“裸奔”在 256 GB 加密內存
4.1 模型切片
? ?70 B INT4 → 35 GB
? ?Enclave 預留 40 GB EPC,剩余留給 KV-Cache
? ?動態換頁:冷 prompt 權重換入,熱 prompt 常駐
4.2 Gramine 配置
[sgx]
enclave_size = "40G"
thread_num = 16
allow_file_creation = false ?# 禁止寫盤
4.3 內存加密
? ?權重 + KV-Cache 統一用 AES-GCM 128
? ?每次推理隨機 96-bit IV,存于 Enclave 寄存器
----
5. 零信任日志:運維也看不見
? ?無文件日志:所有日志通過 密封通道(sealed channel)寫到外部隊列,內容僅含脫敏 hash
? ?會話令牌:每次對話 256-bit 隨機 token,用完即焚
? ?遠程證明:客戶端 JavaScript 驗證 Enclave 簽名,防止中間人
----
6. 性能實測:加密 ≠ 龜速
指標?? ?明文裸機?? ?SGX 加密?? ?損耗
首 token 延遲?? ?620 ms?? ?790 ms?? ?+27 %
吞吐?? ?18 tokens/s?? ?14 tokens/s?? ?-22 %
CPU 占用?? ?85 %?? ?90 %?? ?可接受
----
7. 部署:一條命令起沙盒
# 構建加密鏡像
gramine-sgx-gen-private-key
docker build -t llm-sgx:0.1 .
# 啟動
docker run --device=/dev/sgx_enclave \-e ENCLAVE_SIZE=40G \llm-sgx:0.1
----
8. 踩坑 & 彩蛋
坑?? ?解決
EPC 換頁崩潰?? ?把 KV-Cache 切分 256 MB block,按 LRU 換頁
隨機數熵不足?? ?使用 RDRAND + 定時重播檢測
彩蛋?? ?在 Enclave 里跑 `cowsay` 顯示“Hello from the black box”
----
9. 開源 & 下一步
GitHub:
https://github.com/blackbox-llm/sgx-guard
已放出:
? ?Gramine manifest 模板
? ?INT4 權重打包腳本
? ?遠程證明 Demo 前端
下一步:
? ?? AMD SEV-SNP 適配
? ?? GPU TEE 路線 (H100 CC)
? ?? 支持聯邦微調(Enclave ? Enclave)
----
10. 結語:隱私與性能可以兼得
當模型被關進 硬件級黑盒,
當運維 root 也拿不到明文日志,
你會發現 “零信任”不是口號,而是一行 manifest 配置。
如果這篇文章幫你把甲方爸爸哄開心了,歡迎去 GitHub 點個 Star ?;
也歡迎留言聊聊你把哪些大模型關進了小黑屋!