  When adversaries are powerful enough to coerce users to reveal encryption
keys, encryption alone becomes insufficient for data protection. Plausible
deniability (PD) mechanisms resolve this by enabling users to hide the mere
existence of sensitive data, often by providing plausible "cover texts" or
"public data volumes" hosted on the same device.
  Unfortunately, with the increasing prevalence of (NAND) flash as a
high-performance cost-effective storage medium, PD becomes even more
challenging in the presence of realistic adversaries who can usually access a
device at multiple points in time ("multi-snapshot"). This is because
read/write operations to flash do not result in intuitive corresponding changes
to the underlying device state. The problem is further compounded by the fact
that this behavior is mostly proprietary. For example, in a majority of
commercially-available flash devices, an issued delete or overwrite operation
from the upper layers almost certainly won't result in an actual immediate
erase of the underlying flash cells.
  To address these challenges, we designed a new class of write-once memory
(WOM) codes to store hidden bits in the same physical locations as other public
bits. This is made possible by the inherent nature of NAND flash and the
possibility of issuing multiple writes to target cells that have not previous
been written to in existing pages.
  We designed PEARL, a general-purpose Flash Translation Layer (FTL) that
allows users to plausibly deniably store hidden data in NAND flash devices. We
implemented and evaluated PEARL on a widely used simulator FlashSim (Kim et al.
2019). PEARL performs well on real-world workloads, comparably to non-PD
baselines. PEARL is the first system that achieves strong plausible deniability
for NAND flash devices, secure against realistic multi-snapshot adversaries.
