指向正确方向——在故障世界中保障内存访问安全
密码学与安全
2018-09-25 v1
摘要
除计算之外,读写内存是处理器执行的最常见操作。因此,这些操作的正确性对于任何程序的正确执行都至关重要。然而,一旦考虑故障攻击,假设硬件按指令执行其内存操作便不再成立。特别是,攻击者可能诱发故障以读取或写入错误寻址的内存,这会带来各种关键的安全与安保影响。在这项工作中,我们提出了该问题的解决方案,并给出了一种新方法,用于保护程序内的每次内存访问免受地址篡改。该对策包含两个构建模块。首先,程序中的每个指针都使用多残差检错码进行冗余编码。冗余信息存储在指针未使用的上位比特中,在存储方面零开销。其次,加载和存储指令被扩展为将数据与来自指针的相应编码地址相链接。随后的错误内存访问会感染数据值,使软件能够检测该错误。为评估目的,我们将对策实现到 RISC-V 处理器中,在 FPGA 开发板上测试,并评估了由此产生的开销。此外,一个基于 LLVM 的 C 编译器被修改以自动编码所有数据指针、执行编码指针算术,并发出带有链接支持的扩展加载/存储指令。我们的评估表明,该对策在代码大小方面引起平均 10% 的开销,在运行时间方面为 7%,这使其适合实际采用。
引用
@article{arxiv.1809.08811,
title = {Pointing in the Right Direction - Securing Memory Accesses in a Faulty World},
author = {Robert Schilling and Mario Werner and Pascal Nasahl and Stefan Mangard},
journal= {arXiv preprint arXiv:1809.08811},
year = {2018}
}
备注
Accepted at ACSAC 2018