A non-malleable code protects messages against various classes of tampering.
Informally, a code is non-malleable if the message contained in a tampered
codeword is either the original message, or a completely unrelated one.
Although existence of such codes for
various rich classes of tampering functions is known, \emph{explicit} constructions
exist only for ``compartmentalized'' tampering functions: \ie the codeword
is partitioned into {\em a priori fixed} blocks and each block can {\em only
be tampered independently}. The prominent examples of this model are the
family of bit-wise independent tampering functions and the split-state
model.
In this paper, for the first time we construct explicit non-malleable codes
against a natural class of non-compartmentalized tampering functions. We
allow the tampering functions to {\em permute the bits} of the codeword and
(optionally) perturb them by flipping or setting them to 0 or 1. We
construct an explicit, efficient non-malleable code for arbitrarily long
messages in this model (unconditionally).
We give an application of our construction to non-malleable commitments, as
one of the first direct applications of non-malleable codes to
computational cryptography. We show that non-malleable {\em string} commitments
can be ``entirely based on'' non-malleable {\em bit} commitments. More
precisely, we show that simply encoding a string using our code, and then
committing to each bit of the encoding using a {\em CCA-secure bit
commitment} scheme results in a non-malleable string commitment scheme. This
reduction is unconditional, does not require any extra properties from the
bit-commitment such as ``tag-based'' non-malleability, and works even with
physical implementations (which may not imply standard one-way functions).
Further, even given a partially malleable bit commitment scheme which allows
toggling the committed bit (instantiated, for illustration, using a variant
of the Naor commitment scheme under a non-standard assumption on the PRG
involved), this transformation gives a fully non-malleable string commitment
scheme. This application relies on the non-malleable code being explicit.
↧