Eraser: Your Data Won't Be Back

A short introduction for those who haven't read the full paper.

Storage media with opaque on-board controllers make it a challenging task to provide strong, file-level secure deletion guarantees on modern computers. For instance, SSDs often utilize hardware controllers that manipulate I/O operations performed on logical device blocks in order to implement wear leveling and minimize the effects of write amplification. As a result, secure deletion methods that base their security on behavioral assumptions regarding older mechanical disk drives are rendered ineffective.

We present Eraser, a technique to provide secure deletion guarantees at file granularity, independent of the characteristics of the underlying storage medium. The approach builds on prior seminal work on cryptographic erasure, encrypting every file on an insecure medium with a unique key that can later be discarded to cryptographically render the data irrecoverable. To make the approach scalable and, therefore, usable on commodity systems, keys are organized in an efficient tree structure where a single master key is confined to a secure store.

Eraser is implemented in a Linux kernel module as a device-mapper target, and can be deployed on a standard computer with a TPM chip. Eraser volumes are exposed to the user as ordinary block device nodes. A userland tool is also provided for easy management of Eraser volumes.

For a more in-depth explanation of Eraser's capabilities, please refer to the full paper available here.

Downloads

Eraser kernel module for Linux kernel version 4.7. (ver.2018.02.11)

Eraser userland tool to manage Eraser volumes. (ver.2018.02.11)

Please see the included README file for detailed information on setup and usage. As its name implies, Eraser gives you many opportunities to irreversibly destroy your data, so please make sure you understand how the tool works before you start using it.

Usage

(1) To create a new Eraser instance on a block device:

           eraser create <block-device> <tpm-nvram-index>
   e.g.    eraser create /dev/sdb1 5

This operation will destroy all data on the device.

(2) To open an Eraser instance created on a block device:

           eraser open <block-device> <eraser-name>
   e.g.    eraser open /dev/sdb1 my-eraser-dev

The open command by default maps the virtual device to "/dev/mapper/eraser". You can specify a different name using the [--mapped-dev] option.

The mapped device can then be formatted with a filesystem and used just like any other block device.

(3) To close an open Eraser instance:

           eraser close <eraser-name>
   e.g.    eraser close my-eraser-dev

(4) To list open Eraser instances:

           eraser list

(5) See "eraser --help" for a summary of available options.

Troubleshooting

(1) Please make sure you compile and run Eraser with the correct Linux kernel version. We developed Eraser using version 4.7. Eraser is known NOT to compile/work with earlier kernel releases.

(2) You need reasonably recent versions of libdevmapper and GCC to compile the Eraser userland tool. If you are using a distro that splits software into separate development packages (e.g., Debian, Ubuntu) remember to install the libdevmapper headers as well (e.g., often found in the package device-mapper-dev).

(3) Userland tools also require the corresponding OpenSSL and TrouSerS libraries to compile and function correctly.

(4) "make notpm" will compile the userland tools to work without a TPM. Instead a file under "/tmp/tpm_test" will be used to simulate the NVRAM.

(5) Eraser kernel module is known not to compile in certain virtual machine environments, due to virtualization limitations.

(6) Eraser volumes created on USB flash drives connected to virtual machines may behave abnormally (e.g., Eraser may refuse to open/close volumes).

Known Issues

Please contact me if you discover other problems.

(1) Changes made to the kernel between the time of development and publication of this work required certain changes to the code. In particular, I have removed certain behavior around key rotations & caching until I re-implement and test them properly. Do not be surprised if the implementation description in the paper does not match the code 100%.

Change Log

ver.2018.02.11 First release.

Credits

This software is based on the following research work carried out at Northeastern University and NEU SecLab.

Eraser: Your Data Won't Be Back
Kaan Onarlioglu, William Robertson, Engin Kirda
IEEE European Symposium on Security and Privacy (EuroS&P)
London, GB, April 2018

Authors' version of the full paper is available here. If you would like to acknowledge our research or software in your works, please use the following citation information.

@inproceedings{eurosp2018eraser,
    author = {Kaan Onarlioglu and William Robertson and Engin Kirda},
    title = {{Eraser: Your Data Won't Be Back}},
    booktitle = {IEEE European Symposium on Security and Privacy (EuroS\&P)},
    month = apr,
    year = {2018},
}

Eraser kernel module is free software licensed under GPLv2. © 2018 Kaan Onarlioglu

Eraser userland tool is free software licensed under GPLv3. © 2018 Kaan Onarlioglu