Many applications can benefit from isolating sensitive data in a secure library. Examples include protecting cryptographic keys behind a narrow crypto API to defend against vulnerabilities like OpenSSL's Heartbleed bug. When such a library is called relatively infrequently, page-based hardware isolation can be used, because the cost of kernel-mediated or hypervisor-mediated domain switching is tolerable. However, some applications, such as isolating session keys in a web server or isolating the safe region with code pointers in code-pointer integrity (CPI), require very frequent switching. In such applications, the overheads of kernel-based or hypervisor-mediated domain switching are prohibitively high. In this paper, we present ERIM, a novel technique that provides the security of hardware-enforced isolation with low overhead, even at high switching rates (ERIM supports up to 100,000 switches per CPU core a second with an overhead less than 0.5%). The key idea is to combine memory protection keys (MPKs), a feature recently added to Intel CPUs that allows isolation purely in userspace, with kernel binary inspection to prevent circumvention. We show how to apply ERIM to isolate frequently accessed session keys (not just long-term keys) in nginx, a high performance web server, and how to isolate sensitive data in CPI. Our measurements indicate only a small degradation in performance, even with very high rates of switching between the untrusted application and the secure library.
翻译:在安全的图书馆中隔离敏感数据可以使许多应用程序受益。 例如, 保护狭窄加密 API 背后的加密密钥, 以抵御像 OpenSSL 心脏功能错误那样的弱点。 当这样的图书馆被称作相对不常见时, 可以使用基于页面的硬件隔离, 因为内核介质或超高视光媒介的域端切换成本是可容忍的。 但是, 一些应用程序, 如网络服务器中分离会话键或将安全区域与代码点完整性( CPI) 的代码指针隔离, 需要非常频繁的切换。 在这类应用程序中, 内核或超高端摄像头域域转换的域切换管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器操作, 。 我们用系统管理器管理器管理器管理器管理器管理器管理器管理器管理器管理系统管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器操作,,, 管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器管理器操作管理器管理器管理器管理器管理器管理器管理器管理器管理器管理系统管理系统管理系统管理器管理器管理器管理器管理器操作的操作的操作,, 管理器管理器管理器管理器操作管理的操作管理器管理器管理