Variably Modified Permutation Composition
VMPC  (Variably Modified Permutation Composition) 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 211; for 64-element permutation, about 253; and for a 256-element permutation, about 2260.

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:

 All arithmetic is performed modulo 256.
 i := 0
 while GeneratingOutput:
     a := S[i]
     j := S[j + a]
     
     output S[S[S[j]] + 1]
     swap S[i] and S[j]          (b := S[j]; S[i] := b; S[j] := a))
     
     i := i + 1
 endwhile

Where 256-element permutation  and integer value  are obtained from the encryption password using the VMPC-KSA (Key Scheduling Algorithm).

References

External links
 VMPC Homepage
 Original conference paper on VMPC from okna wrocław (PDF)
 Kamil Kulesza: On inverting the VMPC one-way function
 Unofficial C implementation of VMPC Stream cipher
 Unofficial Delphi implementation of VMPC Stream cipher

 https://eprint.iacr.org/2013/768.pdf VMPC-R: Cryptographically Secure Pseudo-Random Number Generator Alternative to RC4
 https://eprint.iacr.org/2014/985.pdf Statistical weakness in Spritz against VMPC-R: in search for the RC4 replacement
 https://eprint.iacr.org/2014/315.pdf Statistical weaknesses in 20 RC4-like algorithms and (probably) the simplest algorithm free from these weaknesses - VMPC-R
 https://eprint.iacr.org/2019/041.pdf Message Authentication (MAC) Algorithm For The VMPC-R (RC4-like) Stream Cipher

Stream ciphers