持久内存的安全功能跨越多个层级,包括保护持久内存介质中存取的数据,以及保护持久内存的配置数据和控制机制。持久内存的安全模型采用了SSD和NVMe技术使用的ATA(Advanced Technology Attachment,高级技术附件)安全模型,写入持久内存介质中的数据由每根持久内存控制器使用XTS-AES-256协议加密。
内存模式中的密钥在每次断电重启后都会重新生成,因此先前的数据不再可用,称为易失性,DRAM具有相同的特性。在AD模式下运行时,可以通过设置用户密码来解锁持久内存区域,并启用对命名空间内数据的访问来保证安全性。持久内存支持主密码,主密码用来启动安全擦除功能,但是主密码仅可以用于本地介质擦除,如果主密码丢失,那么将无法解锁持久内存并且无法再次使用。如果用户密码丢失,则可以使用主密码来启用安全擦除功能,以重置持久内存。持久内存支持从操作系统或UEFI下访问的安全擦除功能,该功能可以强制重新生成密钥,使持久化区域中的数据无法访问。
持久内存的威胁模型遵循标准的静态数据安全威胁模型,该模型已广泛用于企业数据中心的存储类介质,如HDD与SSD等。威胁模型假定攻击者获得了包含持久内存的服务器的物理拥有权,该服务器包含敏感的或有价值的数据(或以前使用的独立持久内存),并试图非法恢复持久内存上的数据。在此威胁模型下,假定攻击者可以物理访问正在使用的服务器平台(内存模式区域或未锁定的AD模式区域),并且能够获取持久内存上的数据访问权限。持久内存仅在以下两种情况下才提供保护:①内存模式下断电重启后密钥被清零;②AD模式下被锁定。持久内存在内存模式和AD模式下提供安全保护的技术不适用于多次攻击场景,攻击者能够连续多次进行物理访问,从而修改硬件或安装固件,然后在未来再次攻击设备。
持久内存的攻击场景包括:
● 从办公室或数据中心盗取包含持久内存的服务器;
● 持久内存被有平台访问权限的攻击者移除;
● 从持久内存上物理复制数据;
● 将攻击数据粘贴到持久内存中;
● 窥探内存总线上的数据;
● 修改持久内存固件。
云计算的出现对多租户虚拟化环境中的租户隔离和静态数据提出了更高的要求,运行时用户隔离受虚拟化基础架构虚拟机监视器的控制,企业级的存储设备应支持将存储介质划分为“个体租户”的逻辑分区(每个分区有独立的密钥管理),这种方法的好处是租户的数据可以独立锁定和擦除。多租户威胁模型假设租户数据可能因为隔离机制的漏洞受到其他租户的影响,因此能够安全地擦除租户数据是最小化暴露数据的有效方式。
持久内存的安全分为三类:静态数据安全、访问控制和介质管理保护。
(1)机密性保护。
持久内存可以为存储在设备上的所有用户数据提供机密性保护,从而防止持久内存落入不法分子手中,包括防止冷启动攻击,这意味着要对介质中的易失性和持久化区域进行加密。持久内存用专为保护块存储设备机密性而设计的加密算法来支持256位安全性,此加密算法在一定程度上可以阻止基于存储位置的分析,使得攻击者无法确定驱动器上的不同位置是否具有相同的明文。AES-XTS-256是用于保护持久内存介质的算法,它同样适用于块模式数据的加密。
(2)持久内存数据的静态保护。
静态保护持久内存数据需要用到加密持久内存的加密密钥,以加密锁定的方式永久存储用户数据,它要求安全管理员可以随时以加密方式擦除持久化域。安全擦除是一种安全管理员快速使设备上的数据无法恢复的方法。
锁定:持久性内存区域可在特定系统电源事件(关机、重新启动)期间“加密”锁定,持久内存安全架构要求该区域处于锁定状态,以提供静态数据保护。解锁持久内存应使用用户密码进行外部身份验证。
安全擦除:利用持久内存的安全擦除功能,能使设备上的数据无法恢复,以实现设备的安全退役或者设备的安全重置。安全擦除的作用域是全局的持久内存,而不是特定的持久内存或者块模式区域,只有安全管理员可以调用安全擦除命令。在安全擦除之后,持久化数据可能仍然存在于微处理器的高速缓存中,为避免数据被损坏或被窃取,必须使用特定指令使微处理器的高速缓存无效。
(3)易失性内存数据的保护。
为了模拟易失性内存的行为,持久内存介质上易失性区域被加密,然后在某些系统状态转换时以加密方式擦除。在内存模式下,DRAM缓存是未加密的,此时易失性内存加密区域在重置事件、睡眠、断电重启、电源故障(ADR命令和电压检测)事件中将无法恢复。
持久内存为两种模式定义了不同的访问控制目标:AD模式访问控制和内存模式访问控制。
(1)AD模式访问控制。
持久内存提供了一种机制,以页面级粒度(由持久内存文件系统管理)强制应用程序访问持久内存区域。持久内存文件系统(Persistent Memory File System,PMFS)每个区域的粒度提供具有R/W/D/E权限类型的POSIX访问控制结构。作为开放区域的一部分,PMFS为请求的应用程序设置内存管理单元(Memory Management Unit,MMU)映射,持久内存访问控制用于Linux和Windows的主机虚拟文件系统(Virtual File System,VFS),以实现本机内核文件访问控制的功能。
(2)内存模式访问控制。
内存模式的访问控制与AD模式的工作方式类似,操作系统管理内存分配,并设置相应的页表权限,同时使用微处理器的内存管理单元强制执行页面级保护。
持久内存介质管理算法通过反复均匀地写入位置来防止持久内存过早的磨损。持久内存支持为介质管理提供保护,以防过早地磨损介质和其他介质管理相关的PDOS攻击。
持久内存使用AEP-XTS-256加密算法进行静态数据保护。
在内存模式下,每次断电重启后,DRAM缓存会丢失数据,持久内存加密密钥也会丢失,并在每次启动时重新生成。
在AD模式下,使用模块上的密钥加密持久化介质,持久内存在掉电时会将数据锁定,需要利用用户密钥解锁。
以下是持久内存为了保障数据和密码安全所采用的手段。
● 加密密钥存储在模块上的元数据区域中,且只能被持久内存控制器访问,打开密钥需要输入密码;
● 安全加密擦除和重写可以实现持久内存安全的再利用或丢弃;
● 固件身份验证和完整性:支持使用固件的签名版本,并提供修订控制选项。