Modern processors include high-performance cryptographic functionalities such as Intel's AES-NI and ARM's Pointer Authentication that allow programs to efficiently authenticate data held by the program. Pointer Authentication is already used to protect return addresses in recent Apple devices, but as yet these structures have seen little use for the protection of general program data. In this paper, we show how cryptographically-authenticated data structures can be used to protect against attacks based on memory corruption, and show how they can be efficiently realized using widely available hardware-assisted cryptographic mechanisms. We present realizations of secure stacks and queues with minimal overall performance overhead (3.4%-6.4% slowdown of the OpenCV core performance tests), and provide proofs of correctness.
翻译:现代处理器包括高性能加密功能, 如 Intel's AES-NI 和 ARM's 指针验证, 使程序能够有效地验证程序持有的数据。 指针验证已经用于保护最近苹果设备中的返回地址, 但到目前为止,这些结构在保护一般程序数据方面几乎没有什么用处。 在本文中, 我们展示了如何利用加密认证的数据结构来保护人们免遭基于记忆腐败的攻击, 并展示如何利用广泛可用的硬件辅助加密机制有效地实现这些数据。 我们展示了安全堆和排队的实现情况, 以及最低的总体性能管理( OpenCV 核心性能测试减速了3.4%-6.4%), 并提供正确性的证据。