数据安全在当今数字化时代至关重要。无论是企业的核心商业数据、用户的个人隐私信息,还是云端存储的海量数据,都面临着诸多安全风险,如数据泄露、恶意攻击等。传统的存储加密方式在应对日益复杂的安全威胁时,逐渐暴露出局限性。
在当前的数据中心环境中,数据加密通常采用存储设备内部生成和管理的加密密钥与加密数据紧密耦合的方式进行。TCG Opal定义了一套针对自加密硬盘(SED, Self-Encrypting Drives)的标准化安全子系统类(SSC, Security Subsystem Class),用于实现对存储设备上数据的透明加密和访问控制。
这种方式存在一定的安全隐患:一旦存储设备内部的加密机制遭到破坏或攻击,客户的数据安全将直接受到威胁。此外,这些存储设备普遍具有自我管理加密数据的能力,意味着主机对数据加密密钥以及由此延伸的数据本身的控制能力有限。
对于固态硬盘(SSD)而言,不仅要保证数据在存储介质上的安全性,还要确保数据在I/O传输过程中的保密性和完整性。在这样的背景下,NVMe®引入了Key Per I/O技术,旨在为每一次I/O操作提供独立的加密密钥,极大地增强了数据的安全性。
NVMe Key Per I/O功能是由NVM Express与Trusted Computing Group(TCG)合作开发的一项创新技术,它允许主机在I/O命令级别为NVMe存储设备提供并使用主机管理的数据加密密钥,从而细化和扩展了对非易失性介质上主机用户数据的加密控制能力。通过采用Key Per I/O技术,存储系统能够将数据加密密钥与存储在存储设备上的加密数据分离存放,使得主机能够在任意细粒度级别上关联任意数量的数据加密密钥与主机用户数据,同时保持数据静止时的安全保护特性。
通过Key Per I/O技术,NVMe设备能够原生地将数据中心的管理角色与主机的数据加密角色分离开来。这意味着租户可以完全掌控自己的数据,而平台所有者则可以在无需租户介入的情况下灵活、动态地管理设备上的命名空间(namespace)。对于超大规模数据中心运营商而言,Key Per I/O还带来了额外的好处,比如支持在现有NVMe存储设备上进行动态扩展和容纳更多租户,而不必升级到更大容量的存储设备。
NVMe Key Per I/O的理想应用场景之一是数据擦除或当租户不再需要其数据时,从存储设备中清除这些数据的过程。利用Key Per I/O,主机可以轻松地跨多个存储设备删除特定客户端数据,而无需采用更激进的方法,例如擦除整个带区或设备。数据中心管理人员能够在保持租户隔离的同时增加总的租户数量,并且无需升级更大的硬件缓存即可实现这一目标。
一、KPIO核心概念
1. 关键术语解析
-
-
KEK(Key Encryption Key):密钥加密密钥,用于加密和解密MEK,保障MEK的安全传输与存储。
-
KPIO(Key Per IO):每I/O密钥,为每个I/O操作提供独特的加密密钥,实现细粒度的安全控制。
-
MEK(Media Encryption Key):介质加密密钥,直接用于数据的加密和解密。
-
NS(Namespace):命名空间,可理解为逻辑存储单元,不同的NS可用于隔离不同类型或用户的数据。
-
SQE(Submission Queue Entry):提交队列条目,主机通过SQE向SSD发送命令,其中包含关键信息如NS ID、Key Tag等。
-
2. 安全边界与密钥管理:
SSD通过安全核心维护独立的安全边界。主机提交命令时,SQE提供Key Tag,SSD根据Key Tag和NS ID映射到相应的KEK和MEK。KEK用于验证和加密MEK,MEK则用于实际的数据加密和解密操作,确保数据在整个I/O过程中的安全性。
读写流程详解
1. 读取流程
-
主机提交包含NS ID、Key Tag等信息的SQE和读取命令到SSD。
-
SSD解析SQE,将NS ID和Key Tag映射到KEK和MEK。
-
确认KEK状态,确保其有效性。
-
读取数据到达加密引擎,安全核心提供正确的MEK进行解密。
-
解密后的数据发送回主机。
2. 写入流程
-
-
主机提交包含NS ID、Key Tag等信息的SQE和写入命令到SSD。
-
SSD解析SQE,映射NS ID和Key Tag到KEK和MEK。
-
确认KEK状态。
-
写入命令启动数据传输,数据到达加密引擎,安全核心提供MEK进行加密。
-
加密后的数据存储在NAND闪存中。
-