Variably Modified Permutation Composition
![]() | This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
VMPC ("Variably Modified Permutation Composition") is encryption technology designed by Bartosz Zoltak, publicly presented in 2004 at an international cryptography conference Fast Software Encryption in Delhi, India.
The core of the technology is the VMPC function, applied in an encryption algorithm - the VMPC stream cipher.
The VMPC function is a transformation of n-element permutations defined as:
for x from 0 do n-1: g(x) = VMPC(f(x)) = f(f(f(x))+1)
Inverting the function, i.e. obtaining f from g appears to be a complex problem. According to computer simulations the average number of operations required to recover f from g for a 16-element permutation is about 211, for 64-element permutation - about 253 and for a 256-element permutation - about 2260.
Theoretically speaking - if these results were possible to be proved - it would imply that VMPC is a true one way function, which would solve the famous P vs NP problem.
In 2006 at Cambridge University Kamil Kulesza published a paper[1] that investigates the problem of inverting VMPC. The paper concluded that "results indicate that VMPC is not a good candidate for a cryptographic one-way function". [1]
The VMPC function is used in an encryption algorithm - the VMPC stream cipher. The algorithm allows for efficient in software implementations; to encrypt L bytes of plaintext do:
1. n = 0
2. Repeat steps 3-6 L times:
3. s = P[ (s + P[n]) mod 256 ]
4. Output = P[ (P[P[s]]+1) mod 256 ]
5. Temp = P[n]
P[n] = P[s]
P[s] = Temp
6. n = (n + 1) mod 256
Where 256-element permutation P and integer value s are obtained from the encryption password using the VMPC-KSA (Key Scheduling Algorithm), which can be found at the VMPC Homepage along with the VMPC-MAC (Message Authentication Code) allowing to authenticate messages encrypted with the VMPC Stream Cipher.
References
- ^ a b Kulesza, Kamil (2008-10-27). "On Inverting the VMPC One-Way Function" (PDF). Retrieved 9 February 2015.
{{cite journal}}
: Cite journal requires|journal=
(help)