Content deleted Content added
mNo edit summary |
m Simplified the psuedocode by removing the excessive 'a' variable. |
||
(12 intermediate revisions by 11 users not shown) | |||
Line 1:
{{Short description|Stream cipher}}
'''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
▲'''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 Zoltak, presented in 2004 at the [[Fast Software Encryption]] conference. VMPC is a modification of the [[RC4]] cipher.<ref name=maximov>{{cite document |title=Two Linear Distinguishing Attacks on VMPC and RC4A and Weakness of RC4 Family of Stream Ciphers (Corrected) |author=Alexander Maximov |date=2007-02-22 |url=https://eprint.iacr.org/2007/070 }} (originally presented at FSE 2006 confernece)</ref>
The core of the cipher is the VMPC function, a transformation of ''n''-element [[permutation]]s defined as:
Line 11 ⟶ 10:
The function was designed such that inverting it, i.e. obtaining {{mono|f}} from {{mono|g}}, would be a complex problem. According to computer simulations the average number of operations required to recover {{mono|f}} from {{mono|g}} 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>.{{Citation needed|date=September 2015}}
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".<ref name="Kulesza2006">{{cite
The VMPC function is used in an [[encryption]] algorithm – the VMPC [[stream cipher]]. The algorithm allows for efficient in software implementations; to encrypt {{mono|L}} bytes of plaintext do:
<span style="color: green;">''All arithmetic is performed modulo 256.''</span>
'''while''' GeneratingOutput:
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 {{mono|P}} and integer value {{mono|s}} are obtained from the encryption password using the VMPC-KSA (Key Scheduling Algorithm).
|