Back to homepage
Solutions Technology Events Company Contact


Homepage - Technology - VMPC Stream Cipher with Key Scheduling Algorithm
 Wersja polska

1. VMPC Stream Cipher

2. VMPC Key Scheduling Algorithm
3. Test output of the VMPC Stream Cipher
4. Authenticated encrypion with VMPC Stream Cipher

Download FSE'04 paper
"VMPC One-Way Function
and Stream Cipher":
vmpc.pdf (171 KB)
vmpc.ps (289 KB)
vmpc.dvi (55 KB)
Earlier paper "VMPC Stream Cipher"
available also at IACR ePrint archive


1. VMPC Stream Cipher

The VMPC Stream Cipher is a proposed extension of the VMPC one-way function into an encryption algorithm.

The cipher generates a stream of 8-bit values from a 256-element permutation. The initial state of the permutation is determined by the VMPC Key Scheduling Algorithm described in section 2.

Notation :

  P : 256-byte table storing the permutation
  s : 8-bit variable initialized by the VMPC Key Scheduling Algorithm
  n : 8-bit variable

Table 1.1. VMPC Stream Cipher
1. Set n to 0
2. Add modulo 256 n-th element of P to s
3. Set s to s-th element of P
4. Output s-th element of permutation VMPC(P)
5. Swap n-th element of P with s-th element of P
6. Increment modulo 256 n
7. Go to step 2 if more output is needed



Table 1.2. VMPC Stream Cipher - pseudo code
To generate Len bytes of output, execute:

1. n = 0

2. Repeat steps 3-6 Len times:
   3. s = P[ (s + P[n]) and 255 ]
   4. Output = P[ (P[P[s]]+1) and 255 ]
   5. Temp = P[n]
      P[n] = P[s]
      P[s] = Temp
   6. n = (n + 1) and 255




2. VMPC Key Scheduling Algorithm

The VMPC Key Scheduling Algorithm transforms a cryptographic key and (optionally) and Initialization Vector into a 256-element permutation P.

Notation: as in section 1, with:

  c : fixed length of the cryptographic key in bytes, c {16...64}
  K : c-element table storing the cryptographic key
  z : fixed length of the Initialization Vector in bytes, z {16...64}
  V : z-element table storing the Initialization Vector
  m : 16-bit variable

Table 2.1. VMPC Key Scheduling Algorithm
1. Set s to 0
2. Set i-th element of P to i for i {0,1,...,255}
3. Set m to 0

4. Add modulo 256 (m modulo 256)-th element of P to s
5. Add modulo 256 (m modulo c)-th element of K to s
6. Set s to s-th element of P
7. Swap (m modulo 256)-th element of P with s-th element of P
8. Increment m

9. Go to step 4 if m is lower than 768
10. If Initialization Vector is not used: terminate the algorithm
11. Set m to 0

12. Add modulo 256 (m modulo 256)-th element of P to s
13. Add modulo 256 (m modulo z)-th element of V to s
14. Set s to s-th element of P
15. Swap (m modulo 256)-th element of P with s-th element of P
16. Increment m

17. Go to step 12 if m is lower than 768



Table 2.2. VMPC Key Scheduling Algorithm - pseudo code
1. s = 0
2. for i from 0 to 255: P[i]=i

3. for m from 0 to 767: execute steps 4-6:
   4. n = m and 255
   5. s = P[ (s + P[n] + K[m mod c]) and 255 ]
   6. Temp = P[n]
      P[n] = P[s]
      P[s] = Temp

7. If Initialization Vector is used: execute step 8:

8. for m from 0 to 767: execute steps 9-11:
    9. n = m and 255
   10. s = P[ (s + P[n] + V[m mod z]) and 255 ]
   11. Temp = P[n]
       P[n] = P[s]
       P[s] = Temp




3. Test output of the VMPC Stream Cipher

16 bytes of a 102.400-byte data-stream generated by the VMPC Stream Cipher for a given key and a given Initialization Vector are shown in Table 3.


Table 3. Example data-stream generated by the VMPC Stream Cipher
Key
(hex)
96, 61, 41, 0A, B7, 97, D8, A9, EB, 76, 7C, 21, 17, 2D, F6, C7
Initialization Vector
(hex)
4B, 5C, 2F, 00, 3E, 67, F3, 95, 57, A8, D2, 6F, 3D, A2, B1, 55
Output-byte number
(dec)
0 1 2 3 252 253 254 255
Output-byte value
(hex)
A8 24 79 F5 B8 FC 66 A4
Output-byte number
(dec)
1020   1021   1022   1023   102396 102397 102398 102399
Output-byte value
(hex)
E0 56 40 A5 81 CA 49 9A


For a scheme of authenticated encryption based on the VMPC Stream Cipher, see the VMPC-MAC specification

For further analysis of the algorithms, see the Research section



Home  |   VMPC Function  |   VMPC Stream Cipher  |   VMPC-MAC scheme  |   VMPC KSA3 algorithm  |   Inverting Challenge  |   Research

Copyright © 1999-2007 by OHTON EXPO Okna Wroc³aw