TUM Logo

Freeze and crypt: Linux kernel support for main memory encryption

We present Freeze & Crypt, a framework for main memory encryption. Our goal is to protect sensitive main memory on modern devices against memory attacks, such as via coldboot, DMA, or JTAG. This goal is of special significance when it comes to protect unattended or stolen devices, such as smartphones, tablets or laptops, against physical attackers. We describe the design of Freeze & Crypt for the Linux kernel where we build on a process suspension infrastructure called freezer. When suspended with the freezer, processes enter a state in kernel space rendering them unable to access any user space data. Instead of using the freezer for full system suspension, we extend it to make arbitrary process groups transparently and dynamically encrypt their full memory space while suspending. When resuming a process group, we make all contained processes decrypt their memory space before resuming normal execution. The encryption key needs to be present on the system only during en- and decryption, allowing for flexible key management specific to the use case. We implement a prototype and apply it on productively used mobile devices running a virtualization platform. This platform allows for the concurrent operation of multiple Android containers on a single device. We use Freeze & Crypt to protect the sensitive data in RAM when the device or a container is not in active use. We create ephemeral keys for each container encryption cycle and protect the keys with a Secure Element while containers are encrypted. In our security and performance evaluations, we demonstrate Freeze & Crypt's

Freeze and crypt: Linux kernel support for main memory encryption

Computers & security

Authors: Manuel Huber, Julian Horsch, Junaid Ali, and Sascha Wessel
Year/month: 2018/
Pages: 17 pp
Fulltext:

Abstract

We present Freeze & Crypt, a framework for main memory encryption. Our goal is to protect sensitive main memory on modern devices against memory attacks, such as via coldboot, DMA, or JTAG. This goal is of special significance when it comes to protect unattended or stolen devices, such as smartphones, tablets or laptops, against physical attackers. We describe the design of Freeze & Crypt for the Linux kernel where we build on a process suspension infrastructure called freezer. When suspended with the freezer, processes enter a state in kernel space rendering them unable to access any user space data. Instead of using the freezer for full system suspension, we extend it to make arbitrary process groups transparently and dynamically encrypt their full memory space while suspending. When resuming a process group, we make all contained processes decrypt their memory space before resuming normal execution. The encryption key needs to be present on the system only during en- and decryption, allowing for flexible key management specific to the use case. We implement a prototype and apply it on productively used mobile devices running a virtualization platform. This platform allows for the concurrent operation of multiple Android containers on a single device. We use Freeze & Crypt to protect the sensitive data in RAM when the device or a container is not in active use. We create ephemeral keys for each container encryption cycle and protect the keys with a Secure Element while containers are encrypted. In our security and performance evaluations, we demonstrate Freeze & Crypt's

Bibtex:

@article { fandc-cose,
author = { Manuel Huber and Julian Horsch and Junaid Ali and Sascha Wessel},
title = { Freeze and crypt: Linux kernel support for main memory encryption },
journal = { Computers & security },
year = { 2018 },
pages = { 17 pp },

}