Modern cloud computing systems distribute software executables over a network to keep the software sources, which are typically compiled in a security-critical cluster, secret. We develop ERIC, a new, efficient, and general software obfuscation framework. ERIC protects software against (i) static analysis, by making only an encrypted version of software executables available to the human eye, no matter how the software is distributed, and (ii) dynamic analysis, by guaranteeing that an encrypted executable can only be correctly decrypted and executed by a single authenticated device. ERIC comprises key hardware and software components to provide efficient software obfuscation support: (i) a hardware decryption engine (HDE) enables efficient decryption of encrypted hardware in the target device, (ii) the compiler can seamlessly encrypt software executables given only a unique device identifier. Both the hardware and software components are ISA-independent, making ERIC general. The key idea of ERIC is to use physical unclonable functions (PUFs), unique device identifiers, as secret keys in encrypting software executables. Malicious parties that cannot access the PUF in the target device cannot perform static or dynamic analyses on the encrypted binary. We develop ERIC's prototype on an FPGA to evaluate it end-to-end. Our prototype extends RISC-V Rocket Chip with the hardware decryption engine (HDE) to minimize the overheads of software decryption. We augment the custom LLVM-based compiler to enable partial/full encryption of RISC-V executables. The HDE incurs minor FPGA resource overheads, it requires 2.63% more LUTs and 3.83% more flip-flops compared to the Rocket Chip baseline. LLVM-based software encryption increases compile time by 15.22% and the executable size by 1.59%. ERIC is publicly available and can be downloaded from https://github.com/kasirgalabs/ERIC
翻译:现代云计算系统在网络上分发可执行的软件,以保持软件源(通常在安全关键组群中编译为秘密) 。 我们开发了 ERIC, 是一个新的、高效的和通用的软件模糊化框架。 ERIC 保护软件, 防止(一) 静态分析, 仅制作一个加密版本的软件可执行软件, 不论软件是如何分配的, 以及(二) 动态分析, 保证加密的可执行文件只能正确地下载, 并由一个单一的认证设备执行。 ERIC 包含关键硬件和软件组件, 以提供高效的软件模糊化支持:(一) 硬件解密引擎(HDEE) 能够有效地解密目标设备中的加密硬件;(二) 编译器可以无缝地加密软件的可执行文件, 而只有独特的设备识别器, 硬件和软件组件都可以从基于 ISA 的 Oqual Rick/ 直通化。 ERIC 的关键想法是使用物理不透明功能(PUFs)、 独立设备标识(3.LILIC Elicreal knal ) IMFIFisal 无法在智能服务器上运行中进行一个秘密的用户端端端端端点分析。