SEV 是以虛擬機器 (Virtual Machine, VM) 為基礎的機密運算解決方案;透過建立可信賴執行環境來保護使用中資料,而該環境由機密 VM 的邊界所定義。SEV 為每個虛擬機器使用一個金鑰,將客體與管理程式彼此隔離。這些金鑰由 AMD 安全處理器管理。SEV 需要在客體作業系統與管理程式中啟用。客體端變更可讓 VM 標示記憶體中的哪些頁面應受到加密。管理程式端變更會使用硬體虛擬化指令,並與 AMD 安全處理器通訊,以管理記憶體控制器中的適當金鑰。隨著每一代 AMD EPYC 伺服器處理器推出,AMD 持續演進 SEV,新增功能與能力,協助因應不斷演變的安全情勢。 改良的部分說明如下。
加密狀態 (ES) – 前稱 SEV-ES
當 VM 停止執行時,SEV-ES 會加密所有處理器暫存器內容。這可防止處理器暫存器中的資訊外洩至管理程式等元件,甚至能偵測對處理器暫存器狀態的惡意修改。
安全巢狀分頁 (SNP) – 前稱 SEV-SNP
SEV-SNP 增加了強大的記憶體完整性保護,協助防止資料重放、記憶體重新對應等以惡意管理程式為基礎的攻擊,以建立隔離的執行環境。此外,SEV-SNP 引進多項額外的選用安全性增強功能,以支援更多 VM 使用模式、針對中斷行為提供更強保護,並針對近期揭露的旁路攻擊提供更嚴密的保護。
可信賴 I/O (TIO) – 前稱 SEV-TIO
SEV-TIO 使用 PCI-SIG 定義的 TEE 裝置介面安全性協定 (TEE Device Interface Security Protocol, TDISP),將 SEV 建立的可信賴執行環境 (Trusted Execution Environment, TEE) 進一步延伸至 PCIe 裝置(網路介面卡 (Network Interface Card, NIC)、加速器、儲存裝置)。TDISP 定義了新的裝置傳輸協定與功能,讓裝置能夠驗證自身身分、防止 PCIe 網狀架構上的流量遭攔截或冒充、認證其組態,並將客體工作負載與主機驅動程式可用的裝置控制隔離開來。
AMD 透明安全記憶體加密 (TSME)
TSME 使用單一金鑰來加密系統記憶體。該金鑰是在開機時由 AMD 安全處理器產生。SME 需要在系統 BIOS 或作業系統中啟用。在 BIOS 中啟用後,記憶體加密狀態會完全隱形,且可搭配任何作業系統執行。
各代 AMD EPYC™ 伺服器處理器的 SEV 功能與能力
| AMD EPYC 伺服器處理器世代 | 新功能 | 新能力 |
| AMD EPYC™ 7001 | 透過機密 VM 實現加密狀態 | 128 位元 AES XEX 加密 128 個執行緒 15 個金鑰 |
| AMD EPYC™ 7002 | 透過加密狀態 (ES) 加密處理器暫存器 | 256 個執行緒 509 個金鑰 增強的擴充性 |
| AMD EPYC™ 7003 | 透過安全巢狀分頁 (SNP) 支援管理程式隔離與客體認證 | |
| AMD EPYC™ 8004 與 9004 | 適用於 CXL 連接記憶體的記憶體加密 | 更強大的 256 位元 AES-XTS 加密 512 個執行緒、1006 個金鑰,支援高達 63 個多主機金鑰 |
| AMD EPYC™ 8005 | 分段式 RMP 安全 AVIC 效能計數器 (PMC) 虛擬化 客體攔截控制 密文隱藏 |
|
| AMD EPYC™ 9005 | 透過 TDISP 實現可信賴 I/O(前稱 SEV-TIO) |
白皮書與規格
| 文件 | 描述 | 修訂 | 日期 |
|---|---|---|---|
| SEV-TIO 韌體介面規格 | 明確定義了如何透過可信賴 I/O 將 SEV 韌體環境延伸出去。這套採用 TIO 的延伸機制讓客體能夠在其客體私有位址空間內繫結並使用可信賴裝置。 | 0.91 | 2025 年 7 月 |
| 使用 VirTEE/SEV 進行 SEV-SNP 平台認證 | VirTEE/SEV crate 提供對 Rust 友善且易於使用的應用程式介面 (Application Programming Interface, API),可連接第 3 代及更新款 AMD EPYC 處理器內建的 AMD 安全處理器。 | 1.2 | 2023 年 7 月 |
| SEV-TIO 白皮書 | 可信賴 I/O 技術概要,說明 AMD SEV 客體中提升的 I/O 效能與安全性 | 2023 年 3 月 | |
| 版本化晶片簽署金鑰 (VCEK) 憑證與 KDS 介面規格 | 介紹 VCEK 憑證,以及用於擷取該憑證的金鑰派發服務 (Key Distribution Service, KDS) 介面。 | 1.00 | 2025 年 1 月 |
| 客體管理程式通訊區塊 (GHCB) 標準化 | 將客體與管理程式通訊區塊 (Guest-Hypervisor Communication Block, GHCB) 格式標準化,並指定 GHCB 中必須提供的必要離開支援與相關客體狀態,以便讓管理程式與 SEV-ES 客體之間能夠互通。 | 2.04 | 2025 年 1 月 |
| SEV 安全巢狀分頁韌體 ABI 規格 | 說明可供主機管理程式使用的 API,用於管理已啟用 SNP 的客體。 | 1.58 | 2025 年 5 月 |
| SVSM 規格 | 適用於 SEV 客體的安全 VM 服務模組 (Secure VM Service Module, SVSM) | 1.0 | 2023 年 7 月 |
| AMD 記憶體加密 | 安全記憶體加密 (SME) 與安全加密虛擬化 (SEV) 簡介。 | 2021 年 10 月 | |
| 安全加密虛擬化 API | 說明可供主機管理程式使用的 API,用於管理金鑰,以及在主機管理程式與客體 VM 記憶體之間安全傳輸資料 | 3.24 | 2020 年 4 月 |
| AMD64 架構程式設計師手冊第 2 卷 | 說明由系統軟體管理的 AMD64 架構資源與功能。請參閱章節
|
3.44 | 2026 年 3 月 |
| AMD SEV-SNP | 透過完整性保護等功能強化 VM 隔離。 | 2020 年 1 月 | |
| OpenStack:libvirt 驅動程式啟動 AMD SEV 加密實體 | 提出為了要讓 Nova 的 libvirt 驅動程式支援啟動採用 AMD SEV(安全加密虛擬化)技術加密的內核式虛擬機器 (Kernel-based Virtual Machine, KVM) 實體所需完成的必要工作。 | 2019 年 1 月 | |
| 透過 SEV-ES 保護 VM 暫存器狀態 | 加密狀態 SEV-ES 功能的技術概要,包括其架構背後的原理,以及為進一步隔離加密 VM 所提供的保護。 | 2017 年 2 月 |
連結與下載
| 連結 | 描述 |
|---|---|
| https://github.com/AMDESE/AMDSEV | 開發中的 Linux 開放原始碼 |
| 機密容器 | 機密容器 (Confidential Containers, CoCO) 專案 |
| 在 Oracle Linux 系統中使用 AMD 安全記憶體加密 | Oracle UEK 對 SME 與 SEV 的支援。 |
| SUSE:AMD 安全加密虛擬化 (AMD-SEV) 指南 | 提供對 SEV 運作方式、啟用與設定方式的基本說明,並說明相較於非加密虛擬化,使用 SEV 所造成的部分限制與約束。 |
| ask_ark_naples.cert | 適用於 EPYC 7xx1 (Naples) 的 ASK/ARK 憑證 |
| ask_ark_rome.cert | 適用於 EPYC 7xx2 (Rome) 的 ASK/ARK 憑證 |
| ask_ark_milan.cert | 適用於 EPYC 7xx3 (Milan) 的 ASK/ARK 憑證 |
| ask_ark_genoa.cert | 適用於 EPYC 9xx4 (Genoa) 的 ASK/ARK 憑證 |
| ask_ark_prod_turin.cert | 適用於 EPYC 9xx5 (Turin) 的 ASK/ARK 憑證 |
| amd_sev_fam17h_model01h_0.17.49.zip | SEV 韌體 | 適用於 EPYC 7xx1 (Naples) 的 SEV 韌體 0.17.49 [十六進位 00.11.31] |
| amd_sev_fam17h_model3xh_0.24.22.zip | SEV 韌體 | 適用於 EPYC 7xx2 (Rome) 的 SEV 韌體 0.24.22 [十六進位 00.18.16] |
| amd_sev_fam19h_model0xh_1.58.02.zip | SEV 韌體 | 適用於 EPYC 7xx3 (Milan) 的 SEV 韌體 1.58.02 [十六進位 1.3A.02] |
| amd_sev_fam19h_model1xh_1.58.02.zip | SEV 韌體 | 適用於 EPYC 9xx4 (Genoa) 的 SEV 韌體 1.58.02 [十六進位 1.3A.02] |
| amd_sev_fam1ah_model0xh_1.58.06.zip | SEV 韌體 | 適用於 EPYC 9xx5 (Turin) 的 SEV 韌體 1.58.06 [十六進位 1.3A.06] |
| CEK 憑證網頁 | 用於取得晶片簽署金鑰 (Chip Endorsement Key, CEK) 憑證的互動式工具。亦可透過 https://kdsintf.amd.com/cek/id/<GetIDValue> 取得 |
| https://github.com/AMDESE/sev-tool | 已淘汰的 AMD SEV 工具,用於 SEV 平台憑證管理 |
技術簡報
| 論壇 | 簡報 | 日期 |
|---|---|---|
| Linux 安全性高峰會(2022 年) | 安全巢狀分頁認證:在客體中建立信任 | 2022 年 9 月 |
| KVM 論壇(2022 年) | 透過 AMD 的安全 VM 服務模組提供機密客體服務 | 2022 年 9 月 |
| Linux 安全性高峰會(2021 年) | 安全巢狀分頁開發更新 | 2021 年 9 月 |
| KVM 論壇(2021 年) | 使用安全巢狀分頁防範惡意管理程式 | 2021 年 9 月 |
| Linux 安全性高峰會(2019 年) | 即將推出的 x86 技術,用於防範惡意管理程式 | 2019 年 11 月 |
| KVM 論壇(2019 年) | 安全加密虛擬化 – 下一步是什麼? | 2019 年 11 月 |
| Linux 安全性高峰會(2019 年) | Enarx – 透過 AMD SEV 實現經認證的安全執行 | 2019 年 8 月 |
| Linux 安全性高峰會(2018 年) | AMD 加密虛擬化更新 | 2018 年 11 月 |
| KVM 論壇(2018 年) | 透過加密狀態延伸安全加密虛擬化 | 2018 年 10 月 |
| Linux 安全性高峰會(2017 年) | 透過加密狀態保護 VM 暫存器狀態 | 2017 年 9 月 |
| Linux 安全性高峰會(2016 年) | AMD x86 記憶體加密技術 | 2016 年 12 月 |
| KVM 論壇(2016 年) | AMD 虛擬化記憶體加密技術 | 2016 年 9 月 |
| Xen 高峰會 | AMD 虛擬化記憶體加密技術 | 2016 年 9 月 |
| Usenix 安全性研討會 | AMD x86 記憶體加密技術 | 2016 年 8 月 |
使用者指南
| 文件 | 日期 |
|---|---|
| 使用 AMD EPYC™ 處理器內建的 SEV 技術 | 2023 年 10 月 |
| 透過 WinMagic 與 AMD EPYC 硬體記憶體加密,解決雲端信任問題 | 2018 年 10 月 |
| 透過 AMD EPYC 硬體記憶體加密強化雲端安全性 | 2018 年 10 月 |