Pseudorandom error-correcting code (PRC)
A Pseudorandom Error-correcting Code (PRC) is a type of Symmetric key encryption that requires ciphertext decoding to be robust to some modifications edits, introduced by CG24. There is additionally a zero-bit PRC which does not allow for a message. Both variations are useful for constructing cryptographic watermarking of generative AI.
Definition
A -bit PRC is a tuple of efficient algorithms , with respect to key space , message space , and ciphertext space such that
- , is a randomized algorithm that takes a security parameter, and outputs a key ,
- , is a randomized algorithm that takes a key and message , and outputs a ciphertext ,
- , is a deterministic algorithm that takes a key and candidate ciphertext , and outputs either a message or
A zero-bit PRC, has the same requirements as a -bit PRC, except that the message space is just the singleton set , which means that takes no input and just outputs codewords. Then, simply detects whether or not the candidate ciphertext is close to a codeword.
Pseudorandomness
We define the advantage of a distinguisher as where and is a random response oracle, which on each query gives a uniformly random -bit string (even on the same input, unlike a random oracle).
A PRC is pseudorandom if for all efficient , there exists a negligible function , such that: .
Completeness/Robustness
A PRC is -robust if there is a negligible function , such that for every message , where and is any -bounded channel. Meaning that is a length preserving function with the property that for every -bit string , .
Soundness
A PRC is sound if there is a negligible function , such that for all ,
Variations
Adaptive robustness — TODO
Ideal PRC — TODO