代码多态性遇上代码加密:软件组件的机密性与侧信道防护
密码学与安全
2023-10-12 v1
摘要
本文认为,在实践中,涉及侧信道分析的攻击场景结合了两个连续阶段:分析阶段,旨在提取关于目标的信息并识别可能的漏洞;以及利用阶段,对候选漏洞应用攻击技术。我们主张防护需覆盖这两个阶段才能有效抵御现实攻击。我们提出PolEn,一种结合对策的工具链与处理器架构,以有效缓解侧信道攻击:作为针对分析阶段的对策,我们的方法考虑使用代码加密;作为针对利用阶段的对策,我们的方法考虑使用代码多态性,因其依赖运行时代码生成,且与代码加密的结合尤其具有挑战性。代码加密由处理器扩展支持,使得机器指令仅在CPU内部解密,从而有效防止逆向工程或内存转储中有用信息的提取。代码多态性由软件手段实现,它定期改变程序的可观测行为,使攻击者无法预测,从而降低利用侧信道泄漏的可能性。我们基于RISC-V Spike模拟器与修改后的LLVM工具链给出原型实现。在实验评估中,我们说明PolEn有效降低了侧信道泄漏。对于所评估的受保护函数,静态内存使用增加了5至22倍,对应于代码加密与代码多态性的联合应用。在执行时间方面的开销介于1.8至4.6倍之间。
引用
@article{arxiv.2310.07327,
title = {Code Polymorphism Meets Code Encryption: Confidentiality and Side-Channel Protection of Software Components},
author = {Lionel Morel and Damien Couroussé and Thomas Hiscock},
journal= {arXiv preprint arXiv:2310.07327},
year = {2023}
}