The notion of non-malleable codes was introduced in 2009 by Dziembowski, Pietrzak, and Wichs, for relaxing the notion of error-correction and error-detection. Informally, a code is non-malleable if the message contained in a modified code-word is either the original message, or a completely unrelated value. Non-malleable codes provide a useful and meaningful security guarantee in situations where traditional error-correction and error-detection is impossible; for example, when the attacker can completely overwrite the encoded message. Although such codes do not exist if the family of "tampering functions" F is completely unrestricted, they are known to exist for many broad tampering families F.
Background
Tampering experiment To know the operation schema of non-malleable code, we have to have a knowledge of the basic experiment it based on. The following is the three step method of tampering experiment.
A source message s {\displaystyle s} is encoded via a (possibly randomized) procedure E n c {\displaystyle Enc} , yielding a code-word c {\displaystyle c} = E n c ( s ) {\displaystyle Enc(s)} . The code-word is modified under some tampering-function f ∈ F {\displaystyle f\in F} to an erroneous-code-word c ∗ {\displaystyle c^{*}} = f ( c ) {\displaystyle f(c)} . The erroneous-code-word c ∗ {\displaystyle c^{*}} is decoded using a procedure D e c {\displaystyle Dec} , resulting in a decoded-message s ∗ {\displaystyle s^{*}} = D e c ( c ∗ ) {\displaystyle Dec(c^{*})} . The tampering experiment can be used to model several interesting real-world settings, such as data transmitted over a noisy channel, or adversarial tampering of data stored in the memory of a physical device. Having this experimental base, we would like to build special encoding/decoding procedures ( E n c , D e c ) {\displaystyle (Enc,Dec)} , which give us some meaningful guarantees about the results of the above tampering experiment, for large and interesting families F {\displaystyle F} of tampering functions. The following are several possibilities for the type of guarantees that we may hope for.
Error correction One very natural guarantee, called error-correction, would be to require that for any tampering function and any source-message s, the tampering experiment always produces the correct decoded message s ∗ = s {\displaystyle s^{*}=s} .
Error detection A weaker guarantee, called error-detection, requires that the tampering-experiment always results in either the correct value s ∗ = s {\displaystyle s^{*}=s} or a special symbol s ∗ =⊥ {\displaystyle s^{*}=\perp } indicating that tampering has been detected. This notion of error-detection is a weaker guarantee than error-correction, and achievable for larger F of tampering functions.
… excerpt ends here. Continue reading the full article.
