Secure compilers generate compiled code that withstands many target-level attacks such as alteration of control flow, data leaks or memory corruption. Many existing secure compilers are proven to be fully abstract, meaning that they reflect and preserve observational equivalence. Fully abstract compilation is a strong and useful property that, in certain cases, comes at the cost of requiring expensive runtime constructs in compiled code. These constructs may have no relevance for security, but are needed to accommodate differences between the source language and the target language that fully abstract compilation necessarily regards. As an alternative to fully abstract compilation, this paper explores a different criterion for secure compilation called robustly safe compilation or RSC. Briefly, this criterion means that the compiled code preserves relevant safety properties of the source program against all adversarial contexts interacting with said program. We show that RSC can be attained easily and results in code that is more efficient than that generated by fully abstract compilers. We also develop three illustrative robustly-safe compilers and, through them, develop two different proof techniques for establishing that a compiler attains RSC. Through these, we also establish that proving RSC is simpler than proving fully abstraction.
翻译:安全编译器生成的编码能够经受许多目标级攻击, 如改变控制流、数据泄漏或记忆腐败。 许多现有的安全编译器被证明是完全抽象的, 这意味着它们反映并维护了观测等同。 完全抽象的编译器是一种强大和有用的属性, 在某些情况下, 需要花费昂贵的运行时间来编译编译编码。 这些构思可能与安全无关, 但却需要顾及源语言与完全抽象的汇编必然考虑到的目标语言之间的差异。 作为完全抽象的汇编的替代, 本文探讨了一种不同的安全编译标准, 称为严格安全的汇编或RSC。 简而言之, 这一标准意味着所编译的编码保存源程序的相关安全属性, 以对抗所有与所述程序互动的对立环境。 我们表明, RSC 能够很容易地实现, 并且比完全抽象的编译器更高效的代码。 我们还开发了三种具有说明性强度安全的编译器, 并且通过它们开发两种不同的验证技术, 用以确定编译器达到 RSC。 我们还通过这些来证明, 证明 证明 RSC 比完全抽象性更简单。