In-storage computing with modern solid-state drives (SSDs) enables developers to offload programs from the host to the SSD. It has been proven to be an effective approach to alleviating the I/O bottleneck. To facilitate in-storage computing, many frameworks have been proposed. However, few of them consider security as the priority for in-storage computing. Specifically, since modern SSD controllers do not have a trusted execution environment, an offloaded (malicious) program could steal, modify, and even destroy the data stored in the SSD. In this paper, we first investigate the attacks that could be conducted by offloaded in-storage programs. To defend against these attacks, we build IceClave, a lightweight trusted execution environment for in-storage computing. IceClave enables security isolation between in-storage programs and flash management functions. IceClave also achieves security isolation between in-storage programs and enforces memory encryption and integrity verification of in-storage DRAM with low overhead. To protect data loaded from flash chips, IceClave develops a lightweight data encryption/decryption mechanism in flash controllers. We develop IceClave with a full system simulator and evaluate IceClave with a variety of data-intensive applications. Compared to state-of-the-art in-storage computing approaches, IceClave introduces only 7.6% performance overhead, while enforcing security isolation in the SSD controller with minimal hardware cost. IceClave still keeps the performance benefit of in-storage computing by delivering up to 2.31$\times$ better performance than the conventional host-based trusted computing approach.
翻译:使用现代固态驱动器(SSDs)的存储计算使开发者能够卸载从主机存储到 SSD 的数据。 事实证明这是减轻 I/ O 瓶颈的有效方法。 为了方便存储计算, 提出了许多框架。 但是, 他们中很少有人认为安全是存储计算的优先事项。 具体地说, 由于现代 SSD 控制器没有可信的执行环境, 一个卸载( 虚假) 程序可以窃取、 修改甚至销毁 SSD 中存储的数据。 在本文中, 我们首先调查通过卸载的存储中存储程序进行的攻击。 为了防范这些攻击, 我们建立了IClave, 一个轻量可信赖的存储计算执行环境。 IceClave 能够让存储程序与闪存管理功能之间的安全隔离。 IceClave 还在存储程序之间实现安全隔离, 并且只能对存储的ISDRAM 进行存储中的存储存储加密和完整性核查。 为了保护从闪存芯芯片中装入的数据, IClavee- clove C 运行一个快速数据加密/ 运行系统。