What is "deniable encryption"? An overview and guide to its use

It is no wonder that you have no idea what "deniable" means in this context.

I will explain what it is and how to use it in your case.

What "deniable" encryption is

Deniable encryption is an abstract design of encryption determined by two factors:

  1. The secret data is encrypted.

  2. The attacker cannot prove that the secret data exists.

    ≈ The user may deny the existence of it.

It was originally introduced by Ran Canetti, Cynthia Dwork, Moni Naor, and Rafail Ostrovsky in 1996 as a way to protect privacy. They explained the basic concept and several logical implementations. You can refer to the original paper for more information.

A common implementation of this concept is as follows:

  1. Logically slice a volume into multiple encrypted volumes. The mapping of the slices is stored in an encrypted header.
  2. Decrypt and mount one of the encrypted volumes.
  3. Place the secret files there, then unmount the volume.
  4. Attackers cannot prove the existence of the secret data. This is because no one can decrypt the volumes without the plaintext map of the slices.

Deniable encryption software

Few software accurately present this concept because of performance overhead. However, if you have a Linux computer and an empty hard drive, you can try one.

Rubberhose

It is the most famous deniable encryption software in the world, even though development stopped more than 20 years ago.

It was created by Julian Assange, a human-rights hacktivist (hacktivist means hacker + activist), journalist, and founder of WikiLeaks. After his first charge on hacking and his cooperator's betrayal, he decided to create the world's first practical deniable encryption software.

It was designed to work with any filesystems on Linux 2.x. It was published as open source software, but according to its homepage (only available on Archive.org now), Julian and other contributors retained its all rights.

Shufflecake

Shufflecake is the philosophical successor to Rubberhose. It is designed to work on modern Linux. According to its homepage, it is even slightly faster than LUKS, the full-disk encryption module for Linux. Shufflecake is actively developed under the GPL v2.0 or newer.

Installation

It currently has no pre-built packages. Therefore, I will explain how to build it from its source code using the method I've tested.

1. Install dependencies

git, libdevmapper, libgcrypt, dkms, and build tools are necessary for Shufflecake to be built and work.

Try the following steps to install them.

Ubuntu/Debian

sudo apt install git build-essential

This should install git and build tools.

libdevmapper, libgcrypt, and dkms should be installed by default.

Fedora/RedHat

To install git

sudo dnf install git

To install build tools

sudo dnf groupinstall "Development Tools"

libdevmapper, libgcrypt, and dkms should be installed by default.

Arch Linux

To install git

sudo pacman -S git libgcrypt

libdevmapper, dkms, and build tools should be included in your installation because Arch Linux requires them to install the system.

2. Clone the repository

Run git clone https://codeberg.org/shufflecake/shufflecake-c.git in the directory you prefer to clone the Shufflecake repository.

Then, run cd shufflecake-c to move into the repository directory.

3. Compile the source

Run make

4. Test and install the compiled source

Run sudo make test to verify its validity.

Run sudo make install to install Shufflecake into your system.

If you use Secure Boot, you may need to sign the Shufflecake's module. Please refer to Using with Secure Boot section of the documentation.

About its usage, please refer to Usage section of the documentation.

Technical and legal informations

You may believe that deniable encryption is a form of steganography, but it isn't. Practical implementations such as Rubberhose and Shufflecake have a header which includes a passphrase hash and slice mapping information even though the header is encrypted. This means that attackers may reveal the existence of encrypted data and force you to decrypt it. If you have many slices (i.e. security layers) and your secret data is on a deeper layer, you can decrypt shallower layers instead of secret one. The attacker cannot prove the existence of deeper layers. This is how deniable encryption works.

Using of deniable encryption software itself is legal in most countries of the world, some of its behaviors may cause legal problems. If you clearly deny disclosing all the data on the volume, you might be charged with "contempt of court" (the actual crime name depends on your country or territory). In addition, in some countries and territories, the law may force you to disclose the encrypted data (e.g. the United Kingdom's RIPA 2000). If you believe that you forget the passphrase for your secret data slice, do not deny disclosing it. Instead, disclose another encrypted slice on the volume.

Conclusion

Do you think deniable encryption is a practical way to protect your privacy? If you have any feedback, please provide it through the contact page.