问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

内存加密、消息认证码与完整性树:计算机系统内存安全关键技术详解

创作时间:
作者:
@小白创作中心

内存加密、消息认证码与完整性树:计算机系统内存安全关键技术详解

引用
CSDN
1.
https://blog.csdn.net/qq_41691212/article/details/143381132

内存安全是计算机系统安全的重要组成部分,它旨在保护数据的机密性、完整性和防止重放攻击。本文将详细介绍内存加密、消息认证码(MAC)以及完整性树这三种关键技术,帮助读者深入理解内存安全的实现原理和具体应用。

内存加密

内存加密通过加密算法将纯数据的可见性限制为仅对可信计算库(TCB)可见,从而防止物理攻击或总线窥探攻击。常见的加密方法有两种:直接加密(Direct Encryption)和计数器模式加密(Counter-mode Encryption)。

直接加密

直接加密方法将加密算法(如AES)直接应用于数据,这会将加密/解密延迟引入到读/写操作的关键路径中。虽然GPU可以通过提供不同的wrap来隐藏延迟,但如果没有进行额外的调整,这将为基于字典的攻击打开大门。

计数器模式加密(CME)

更安全的模式允许使用调整(tweak)作为加密过程的一部分。在CME模式中,通过对tweak进行加密生成加密pad,并随后使用该pad完成加密/解密操作。这种解决方案提供了高性能,因为它可以通过获取密文来隐藏填充生成的延迟。然而,CME会受到延展性的影响,翻转密文中的某些位将导致在解密时翻转明文中完全相同的位。

可调整块密码(XTS)

另一种常用于存储的选项是具有密文窃取(XTS)模式的可调整块密码。在XTS模式下,加密延迟可以忽略不计,且XTS的可延展性仅取决于64B的密码块大小,而不是如CME中的位分辨率。调整通常作为地址(为了空间唯一性)和计数器(为了时间唯一性)的组合来实现。

计数器可以以两种不同的方式组织:Intel SGX中使用的单片计数器,以及最先进的分割计数器组织方式。

消息认证码(MAC)

内存完整性意味着确保消息在传输到处理器的过程中或驻留在内存中时没有被更改或篡改。这部分是通过MAC实现的,它验证数据是由处理器生成的,没有被篡改。MAC可以检测欺骗和拼接攻击。

然而,仅MAC值并不能防止重放攻击,因此,完整性树通常用于此目的。MAC是使用秘密密钥对某些数据计算的加密哈希值。随着MAC大小的增加,MAC冲突率降低,因此具有更高的安全级别。在Intel SGX中,使用56位MAC,而在分区扇区安全元数据工作(PSSM)中,32位MAC用于减轻MAC存储开销。

完整性树

完整性树用于防止重放攻击。一般来说,完整性树有两种变体:Merkel Tree(MT)和Tree of Counters(ToC)。

Merkel Tree(MT)

MT通过MAC/哈希树保护内存数据的完整性,该树以一个称为根的节点结束,该节点安全地保存在处理器芯片中并且永远不会离开。在每次内存访问时,都会验证一直到根的MAC/哈希值路径,并且由于根永远不会离开处理器边界,因此它反映了内存的最新状态,并且将检测到任何篡改。

MT的另一个版本称为Bonsai Merkle Tree(BMT),其中树的叶子是加密计数器。此外,加密计数器还用作MAC生成的调整,作为重放攻击预防的一部分。

Tree of Counters(ToC)

ToC也使用加密计数器作为它们的叶子。与MT不同,ToC在树的上层使用其他计数器(称为版本)而不是哈希/MAC。每个节点都包含根据其数据及其父版本计数器计算得出的MAC值。因此,不进行允许并行更新和验证的累积计算。

为了减少与树遍历相关的性能开销,更新和验证过程都在命中缓存的第一个节点处停止,该节点已经被验证。对于更新,当这些节点从缓存中逐出时,它们会将更新传播到其父节点。这被称为惰性更新方案,而总是到达根的更新是急切更新方案的一部分。

参考文献

[1] B. Rogers, S. Chhabra, M. Prvulovic, and Y. Solihin, “Using address independent seed encryption and bonsai merkle trees to make secure processors os- and performance-friendly,” in 40th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO 2007), 2007, pp. 183–196.

[2] S. Yuan, A. W. B. Yudha, Y. Solihin, and H. Zhou, “Analyzing secure memory architecture for gpus,” in 2021 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS). IEEE, 2021, pp. 59–69.

[3] G. Suh, D. Clarke, B. Gasend, M. van Dijk, and S. Devadas, “Efficient memory integrity verification and encryption for secure processors,” in Proceedings. 36th Annual IEEE/ACM International Symposium on Microarchitecture, 2003. MICRO-36., 2003, pp. 339–350.

[4] C. Yan, D. Englender, M. Prvulovic, B. Rogers, and Y. Solihin, “Improving cost, performance, and security of memory encryption and authentication,” in 33rd International Symposium on Computer Architecture (ISCA’06), 2006, pp. 179–190.

[5] J. Yang, Y. Zhang, and L. Gao, “Fast secure processor for inhibiting software piracy and tampering,” in Proceedings. 36th Annual IEEE/ACM International Symposium on Microarchitecture, 2003. MICRO-36., 2003, pp. 351–360.

[6] F. McKeen, I. Alexandrovich, A. Berenzon, C. V. Rozas, H. Shafi, V. Shanbhogue, and U. R. Savagaonkar, “Innovative instructions and software model for isolated execution,” in Proceedings of the 2nd International Workshop on Hardware and Architectural Support for Security and Privacy, ser. HASP ’13. New York, NY, USA: Association for Computing Machinery, 2013. [Online]. Available: https://doi.org/10.1145/2487726.2488368

[7] S. Gueron, “A memory encryption engine suitable for general purpose processors,” IACR Cryptol. ePrint Arch., vol. 2016, p. 204, 2016.

[8] R. C. Merkle, “Protocols for public key cryptosystems,” in 1980 IEEE Symposium on Security and Privacy, 1980, pp. 122–122.

[9] S. Yuan, Y. Solihin, and H. Zhou, “Pssm: Achieving secure memory for gpus with partitioned and sectored security metadata,” in Proceedings of the ACM International Conference on Supercomputing, ser. ICS ’21. New York, NY, USA: Association for Computing Machinery, 2021, p. 139–151. [Online]. Available: https://doi.org/10.1145/3447818.3460374

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号