Powrót do strony głównej
Rozwiązania Technologia Wydarzenia O firmie Kontakt


Strona główna - Technologia - Schemat uwierzytelnionego szyfrowania VMPC-MAC
 English version

1. Introduction
2. Specification of a 4-level VMPC-MAC scheme
3. Performance of the VMPC-MAC scheme
4. Best known attack against the VMPC-MAC scheme
5. Test output of the VMPC-MAC scheme

Download paper
"VMPC-MAC: A Stream Cipher Based
Authenticated Encryption Scheme":
vmpc_mac.pdf (151 KB)
vmpc_mac.ps (253 KB)
vmpc_mac.dvi (43 KB)
Paper also available at
IACR ePrint archive

1. Introduction

VMPC-MAC scheme is an algorithm for computing Message Authentication Codes (MACs) for the VMPC Stream Cipher. A MAC allows to verify whether the message output from the decryption process is exactly the same message that was encrypted (i.e. that there was no transmission error, that nobody intercepted and changed (forged) our message and that we used the correct key to decrypt the message).

According to current state of the art the VMPC-MAC scheme provides a 2^144 level of security (resistamce to best found message-forgery attack) (for value 4 of the d parameter). The security level can be extended by increasing the d parameter (e.g. 5-level VMPC-MAC scheme requires an effort of 2^200 to be forged)

The VMPC-MAC employs some of the internal-state-data of the VMPC Stream Cipher (the P permutation) to compute the MAC. This allowed to simplify the design and minimize the amount of additional-to-encryption computations and achieve high performance in software implementations of the complete encrypt-and-authenticate process. Performance of the VMPC-MAC scheme reaches a rate of about 27 clock cycles / byte (about 100MBytes / second on an Intel Pentium 2,66GHz processor).



2. Specification of 4-level VMPC-MAC scheme (d=4)


Notation :

  P : 256-byte table storing a permutation initialized by the VMPC KSA
  s : 8-bit variable initialized by the VMPC KSA
  T : 32-byte table (general size of T is (8*d) bytes)
  x1,x2,x3,x4 : 1-byte variables (general number of x variables is d)
  M : 20-byte table the resulting MAC will be stored in
  n,m,g,R : temporary integer variables
  + : denotes addition modulo 256


Table 1. VMPC-MAC scheme
1.1  Run the VMPC Key Scheduling Algorithm (VMPC KSA)
1.2  (n,m,g,x1,x2,x3,x4)=0; T[x]=0 for x = 0,1,...,31

2.  Repeat steps 3-16 Length_of_plaintext times:
    3.  s = P[ s + P[n] ]
    4.  Ciphertext[m] = Plaintext[m] xor P[P[P[s]]+1]

    5.  x4 = P[ x4 + x3 ]
    6.  x3 = P[ x3 + x2 ]
    7.  x2 = P[ x2 + x1 ]
    8.  x1 = P[ x1 + s + Ciphertext[m] ]

    9.  T[g]   = T[g]   xor x1
    10. T[g+1] = T[g+1] xor x2
    11. T[g+2] = T[g+2] xor x3
    12. T[g+3] = T[g+3] xor x4

    13. Temp = P[n];   P[n] = P[s];   P[s] = Temp
    14. g = (g + 4) modulo 32
    15. n = n + 1
    16. Increment m

17. Execute the Post-Processing Phase
    specified in steps 17.1-17.15 in Table S.17

18. Input T to the IV-phase (step 8) of the VMPC KSA
    (execute steps (18.1 - 18.3) specified in Table S.18)

19. Store 20 new outputs of the VMPC Stream Cipher in table M
    (execute steps (19.1 - 19.3) specified in Table S.19)

20. Append the MAC, stored in table M, to the Ciphertext



Table S.17. Step 17 of the algorithm specified in Table 1
17.1. Set R to 1
17.2. Execute steps (17.3 - 17.15) 24 times:
      17.3. s = P[ s + P[n] ]

      17.4.  x4 = P[ x4 + x3 + R ]
      17.5.  x3 = P[ x3 + x2 + R ]
      17.6.  x2 = P[ x2 + x1 + R ]
      17.7.  x1 = P[ x1 + s + R ]

      17.8.  T[g]   = T[g]   xor x1
      17.9.  T[g+1] = T[g+1] xor x2
      17.10. T[g+2] = T[g+2] xor x3
      17.11. T[g+3] = T[g+3] xor x4

      17.12. Temp = P[n];   P[n] = P[s];   P[s] = Temp
      17.13. g = (g + 4) modulo 32
      17.14. n = n + 1
      17.15. R = R + 1



Table S.18. Step 18 of the algorithm specified in Table 1
18. for m from 0 to 767 execute steps (18.1 - 18.3):
    18.1. n = m modulo 256
    18.2. s = P[ s + P[n] + T[m modulo 32] ]
    18.3. Temp = P[n];   P[n] = P[s];   P[s] = Temp



Table S.19. Step 19 of the algorithm specified in Table 1
19. for n from 0 to 19 execute steps (19.1 - 19.3):
    19.1. s = P[ s + P[n] ]
    19.2. M[n] = P[P[P[s]]+1]
    19.3. Temp = P[n];   P[n] = P[s];   P[s] = Temp



3. Performance of the VMPC-MAC scheme


Performance of a moderately optimized 32-bit assembler implementation of the VMPC-MAC scheme measured on an Intel Pentium 4, 2.66 GHz processor, is given in Table 2.


        Table 2. Software performance of the VMPC-MAC scheme
MBytes / s MBits / s cycles / byte
100 800 27



4. Best known attack against the VMPC-MAC scheme


The most efficient (chosen ciphertext) attack found against the VMPC-MAC scheme is described in this section.

The attack assumes that the attacker has full passive and active access to the ciphertext and can use an unlimited number of verification attempts for the new message. The purpose of the attacker is to introduce a new ciphertext which conforms the MAC of the original one.

The attack model begins with a random (or intended by the attacker) change of one bit (or byte) of the ciphertext - Ct[m]. The purpose of the attacker is to hide this change by manipulating the remaining part of the ciphertext in such way as to leave the resulting MAC unchanged.

Let Ct[m] denote m-th byte of Ciphertext
Let xk(m) denote the value of the xk variable (for k=1,2,3 or 4) in iteration m
Let n = (m * d) modulo 32
Let (+) denote addition modulo 32

A change of Ct[m] unconditionally causes a change of x1(m), since P is a permutation.

Because x1(m) and only x1(m) directly updates x2(m+1) and indirectly updates x3(m+2) and x4(m+3), the variables x2(m+1), x3(m+2) and x4(m+3) will be unconditionally changed too.

The following elements of table T will be updated and unconditionally changed by those variables: T[n] changed by x1(m), T[n(+)5] changed by x2(m+1), T[n(+)10] changed by x3(m+2) and T[n(+)15] changed by x4(m+3).

The most efficient method of reverting these changes found forces the attacker to perform the following changes of the ciphertext:

1. Change Ct[m+1] in such way as to make x4(m+4) return to its original value. The unavoidable cost of this is a change of x1(m+1), x2(m+2) and x3(m+3).

[x3(m+3) must be changed in such way as to make x4(m+4) = (x4(m+3) + x3(m+3)) modulo 256 return to its original value]

As a result T[n(+)4] is changed by x1(m+1), T[n(+)9] is changed by x2(m+2) and T[n(+)14] is changed by x3(m+3). T[n(+)19] remains unchanged because the change of x4(m+4) was reverted.

2. Change Ct[m+2] in such way as to make x3(m+4) return to its original value. The unavoidable cost of this is a change of x1(m+2) and x2(m+3).

As a result T[n(+)8] is changed by x1(m+2) and T[n(+)13] is changed by x2(m+3). T[n(+)18] remains unchanged because the change of x3(m+4) was reverted.

3. Change Ct[m+3] in such way as to make x2(m+4) return to its original value. The unavoidable cost of this is a change of x1(m+3).

As a result T[n(+)12] is changed by x1(m+3). T[n(+)17] remains unchanged because the change of x2(m+4) was reverted.

4. Change Ct[m+4] in such way as to make x1(m+4) return to its original value. As a result T[n(+)16] remains unchanged.

At this moment the attacker succeeded in stopping the avalanche of changes of elements of T, resulting from a change of Ct[m], by reverting the changes of x1,x2,x3,x4 in the earliest possible iteration (m+4). The cost of this is an unavoidable change of 10 elements of the T table (T[n, n(+)4, n(+)5, n(+)8, n(+)9, n(+)10, n(+)12, n(+)13, n(+)14, n(+)15]).

To complete a successful forgery, the attacker needs to revert the changes of these elements of T, too. Operations similar to steps 1-4 need to be performed to refrain x1,x2,x3,x4 from causing more damage to T and the additional requirement - to revert the already caused changes to T - needs to be satisfied. The most efficient approach found achieves that in the following steps 5-9:

5. Change Ct[m+8] in such way as to change x1(m+8) in such way as to revert the change of T[n], make x2(m+9) change in such way as to revert the change of T[n(+)5], make x3(m+10) change in such way as to revert the change of T[n(+)10], and make x4(m+11) change in such way as to revert the change of T[n(+)15].

6. Change Ct[m+9] in such way as to make x4(m+12) return to its original value, make x1(m+9) change in such way as to revert the change of T[n(+)4], make x2(m+10) change in such way as to revert the change of T[n(+)9], make x3(m+11) change in such way as to revert the change of T[n(+)14]. T[n(+)19] remains unchanged because the change of x4(m+12) was reverted.

7. Change Ct[m+10] in such way as to make x3(m+12) return to its original value, make x1(m+10) change in such way as to revert the change of T[n(+)8], make x2(m+11) change in such way as to revert the change of T[n(+)13]. T[n(+)18] remains unchanged because the change of x3(m+12) was reverted.

8. Change Ct[m+11] in such way as to make x2(m+12) return to its original value, make x1(m+11) change in such way as to revert the change of T[n(+)12]. T[n(+)17] remains unchanged because the change of x2(m+12) was reverted.

9. Change Ct[m+12] in such way as to make x1(m+12) return to its original value. As a result T[n(+)16] remains unchanged.

A total complexity of the described attack is determined by the total number of changes to variables x1,x2,...,xd and T[0,1,..., 8*d-1], which need to be reverted. Steps 1-9 determine this complexity, for the assumed d=4, to 256^18 = 2^144. Extending the the d parameter to 5 would, in an analogous attack, yield a complexity of 256^25 = 2^200 (which would also imply an increase of the size of the MAC to 25 or more bytes).



5. Test output of the VMPC-MAC scheme

An example 20-byte MAC generated by the algorithm described in Section 2 is given in Table 3. The MAC is generated for an example key and Initialization Vector specified in Table 3 and for a 256-byte plaintext message consisting of consecutive numbers from 0 to 255 (Plaintext[x]=x for x=0,1,...,255; e.g. Plaintext[150]=150)

Table 3. Example MAC produced by the VMPC-MAC scheme
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
256-byte Message
(dec)
0, 1, 2, 3, ..., 252, 253, 254, 255
Resulting
20-byte MAC
(hex)
9B, DA, 16, E2, AD, 0E, 28, 47, 74, A3, AC, BC, 88, 35, A8, 32, 6C, 11, FA, AD




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

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