VMPC (Variably Modified Permutation Composition) for cryptography is a stream cipher similar to the well known and popular cipher RC4 designed by Ron Rivest. It was designed by Bartosz à »Ã³à Âtak, presented in 2004 at the Fast Software Encryption conference. VMPC is a modification of the RC4 cipher.
The core of the cipher is the VMPC function, a transformation of n-element permutations defined as:
for x from 0 to n-1: g(x) = VMPC(f)(x) = f(f(f(x))+1)
The function was designed such that inverting it, i.e. obtaining from , would be a complex problem. According to computer simulations the average number of operations required to recover from for a 16-element permutation is about 2<sup>11</sup>; for 64-element permutation, about 2<sup>53</sup>; and for a 256-element permutation, about 2<sup>260</sup>.
In 2006 at Cambridge University, Kamil Kulesza investigated the problem of inverting VMPC and concluded "results indicate that VMPC is not a good candidate for a cryptographic one-way function".
The VMPC function is used in an encryption algorithm â the VMPC stream cipher. The algorithm allows for efficient in software implementations; to encrypt bytes of plaintext do:
<span style="color: green;">All arithmetic is performed modulo 256.</span> i := 0 while GeneratingOutput: j := S[j + S[i]]
output S[S[S[j]] + 1] swap S[i] and S[j] <span style="color: green;">(b := S[j]; S[j] := S[i]; S[i] := b))</span>
i := i + 1 endwhile
Where 256-element permutation and integer value are obtained from the encryption password using the VMPC-KSA (Key Scheduling Algorithm).