MMH-Badger MAC explained

Badger is a Message Authentication Code (MAC) based on the idea of universal hashing and was developed by Boesgaard, Scavenius, Pedersen, Christensen, and Zenner.[1] It is constructed by strengthening the ∆-universal hash family MMH using an ϵ-almost strongly universal (ASU) hash function family after the application of ENH (see below), where the value of ϵ is

1/(232-5)

.[2] Since Badger is a MAC function based on the universal hash function approach, the conditions needed for the security of Badger are the same as those for other universal hash functions such as UMAC.

Introduction

The Badger MAC processes a message of length up to

264-1

bits and returns an authentication tag of length

u ⋅ 32

bits, where

1\leu\le5

. According to the security needs, user can choose the value of

u

, that is the number of parallel hash trees in Badger. One can choose larger values of u, but those values do not influence further the security of MAC. The algorithm uses a 128-bit key and the limited message length to be processed under this key is

264

.[3]

The key setup has to be run only once per key in order to run the Badger algorithm under a given key, since the resulting internal state of the MAC can be saved to be used with any other message that will be processed later.

ENH

Hash families can be combined in order to obtain new hash families. For the ϵ-AU, ϵ-A∆U, and ϵ-ASU families, the latter are contained in the former. For instance, an A∆U family is also an AU family, an ASU is also an A∆U family, and so forth. On the other hand, a stronger family can be reduced to a weaker one, as long as a performance gain can be reached. A method to reduce ∆-universal hash function to universal hash functions will be described in the following.

Theorem 2[1]

Let

H\triangle

be an ϵ-AΔU hash family from a set A to a set B. Consider a message

(m,mb)\inA x B

. Then the family H consisting of the functions

h(m,mb)=H\triangle(m)+mb

is ϵ-AU.

If

m\nem'

, then the probability that

h(m,mb)=h(m',m'b)

is at most ϵ,since

H\triangle

is an ϵ-A∆U family. If

m=m'

but

mb\nemb'

, then the probability is trivially 0.The proof for Theorem 2 was described in [1]

The ENH-family is constructed based on the universal hash family NH (which is also used in UMAC):

NHK(M)=

\ell
2
\sum
i=1

(k(2i-1)+wm(2i-1)) x (k2i+wm2i)\mod22w

Where '

+w

' means 'addition modulo

2w

', and

mi,ki\in\{0,\ldots,2w-1\}

. It is a

2-w

-A∆U hash family.

Lemma 1[1]

The following version of NH is

2-w

-A∆U:

NHK(M)=(k1+wm1) x (k2+wm2)\mod22w

Choosing w=32 and applying Theorem 1, one can obtain the

2-32

-AU function family ENH, which will be the basic building block of the badger MAC:
ENH
k1,k2

(m1,m2,m3,m4)=(m1+32k1)(m2+32k2)+64m3+64232m4

where all arguments are 32-bits long and the output has 64-bits.

Construction

Badger is constructed using the strongly universality hash family and can be described as

l{H}=H* x F,

[1]

where an

\epsilon
H*
-AU universal function family H* is used to hash messages of any size onto a fixed size and an

\epsilonF

-ASU function family F is used to guarantee the strong universality of the overall construction. NH and ENH are used to construct H*. The maximum input size of the function family H* is

264-1

and the output size is 128 bits, split into 64 bits each for the message and the hash. The collision probability for the H*-function ranges from

2-32

to

2-26.14

. To construct the strongly universal function family F, the ∆-universal hash family MMH* is transformed into a strongly universal hash family by adding another key.

Two steps on Badger

There are two steps that have to be executed for every message: processing phase and finalize phase.[3]

Processing phase

In this phase, the data is hashed to a 64-bit string. A core function :

\left\{0,1\right\}64 x \left\{0,1\right\}128\to\left\{0,1\right\}64

is used in this processing phase, that hashes a 128-bit string

m2\parallelm1

to a 64-bit string

h(k,m2,m1)

as follows:

h(k,m2,m1)=(L(m1)+32L(k))(U(m1)+32U(k))+64m2

for any n,

+n

means addition modulo

2n

. Given a -bit string x, means least significant n bits, and means most significant n bits.

A message can be processed by using this function. Denote by

i
k
j
.

Pseudo-code of the processing phase is as follow.

L = |M| if L = 0

M1==Mu=0

Go to finalization r = L mod 64 if r ≠ 0:

M=064-r\parallelM

for i = 1 to u:

Mi=M

v'=max\{1,\lceillog2L\rceil-6\}

for j = 1 to v′: divide into 64-bit blocks, if t is even: else

Finalize phase

In this phase, the 64-string resulting from the processing phase is transformed into the desired MAC tag. This finalization phase uses the Rabbit stream cipher and uses both key setup and IV setup by taking the finalization key as

i
k
j
.

Pseudo-code of the finalization phase

RabbitKeySetup(K) RabbitIVSetup(N) for i = 1 to u:

Qi=07\parallelL\parallelMi

divide into 27-bit blocks,
i
Q
5

\parallel\parallel

i
q
1

Si

5
=(\sum
j=1
i
(q
j
i
K
6

\bmodp

S=Su\parallel\parallelS1

S = S ⨁ RabbitNextbit(u∙32) return S

Notation

From the pseudocode above, k denotes the key in the Rabbit Key Setup(K) which initializes Rabbit with the 128-bit key k. M denotes the message to be hashed and |M| denotes the length of the message in bits. denotes a message M that is divided into i blocks. For the given -bit string x then and respectively denoted its least significant n bits and most significant n bits.

Performance

Boesgard, Christensen and Zenner report the performance of Badger measured on a 1.0 GHz Pentium III and on a 1.7 GHz Pentium 4 processor.[1] The speed-optimized versions were programmed in assembly language inlined in C and compiled using the Intel C++ 7.1 compiler.

The following table presents Badger's properties for various restricted message lengths. "Memory req." denotes the amount of memory required to store the internal state including key material and the inner state of the Rabbit stream cipher . "Setup" denotes the key setup, and "Fin." denotes finalization with IV-setup.

Max. Message SizeForgery BoundMemory Reg.Setup Pentium IIIFin. Pentium IIISetup Pentium IIIFin. Pentium III

211

bytes (e.g.IPsec)

2-57.7

400 bytes1133 cycles 409 cycles 1774 cycles 776 cycles

215

bytes (e.g.TLS)

2-56.6

528 bytes1370 cycles 421 cycles 2100 cycles 778 cycles

232

bytes

2-54.2

1072 bytes2376 cycles 421 cycles 3488 cycles 778 cycles

261-1

bytes

2-52.2

2000 bytes4093 cycles 433 cycles 5854 cycles 800 cycles

MMH (Multilinear Modular Hashing)

The name MMH stands for Multilinear-Modular-Hashing. Applications in Multimedia are for example to verify the integrity of an on-line multimedia title. The performance of MMH is based on the improved support of integer scalar products in modern microprocessors.

p

. The construction of MMH works in the finite field

Fp

for some prime integer

p

.

MMH*

MMH* involves a construction of a family of hash functions consisting of multilinear functions on

k
F
p
for some positive integer . The family MMH* of functions from
k
F
p
to

Fp

is defined as follows.

MMH*=\{gx:

k
F
p

Fp|x\in

k
F
p

\}

where x, m are vectors, and the functions

gx

are defined as follows.

gx(m)=mx\bmodp=

n
\sum
i=1

mixi\bmodp

In the case of MAC, is a message and is a key where

m=(m1,\ldots,mk)

and

x=(x1,\ldots,xk),xi,mi\inFp

.

MMH* should satisfy the security requirements of a MAC, enabling say Ana and Bob to communicate in an authenticated way. They have a secret key . Say Charles listens to the conversation between Ana and Bob and wants to change the message into his own message to Bob which should pass as a message from Ana. So, his message and Ana's message will differ in at least one bit (e.g.

m1\nem'1

).

Assume that Charles knows that the function is of the form

gx(m)

and he knows Ana's message but he does not know the key x then the probability that Charles can change the message or send his own message can be explained by the following theorem.

Theorem 1[4] :The family MMH* is ∆-universal.

Proof:

Take

a\inFp

, and let

m,m'

be two different messages. Assume without loss of generality that

m1\nem'1

. Then for any choice of

x2,x3,\ldots,xs

, there is
\begin{align} {\Pr}
x1

[gx(m)-gx(m')\equiva\modp]&=

{\Pr}
x1

[(m1x1+m2x2++mkxk)-(m'1x1+m'2x2+ … +m'kxk)\equiva\modp]\\ &=

{\Pr}
x1

[(m1-m'1)x1+(m2-m'2)x2++(mk-m'k)xk]\equiva\modp]\\ &=

{\Pr}
x1

[(m1-m'1)x1+style\sum

s(m
k-m'

k)xk\equiva\modp]\\ &=

{\Pr}
x1

[(m1-m'1)x1\equiva-

s(m
style\sum
k-m'

k)xk\modp]\\ &=

1
p

\end{align}

To explain the theorem above, take

Fp

for

p

prime represent the field as

Fp=\underbrace{\{0,1,\ldots,p-1\}}p

. If one takes an element in

Fp

, let say

0\inFp

then the probability that

x1=0

is
{\Pr}
x1\in{Fp
}(x_1=0)= \frac

So, what one actually needs to compute is

{\Pr}
(xk)\in
k
{F
p
1,\ldots,x
} (g_x(m)\equiv g_x(m')\mod p)

But,

\begin{align} {\Pr}
(xk)\in
k
{F
p
1,\ldots,x
}(g_x(m)\equiv g_x(m')\mod p) &= \sum_ _(\ldots,)\cdot _(g_x(m)\equiv g_x(m')\mod p)\\&= \sum_ \frac \cdot \frac \\&=p^\cdot \frac \cdot \frac \\&=\frac \end

From the proof above,

1
p
is the collision probability of the attacker in 1 round, so on average verification queries will suffice to get one message accepted. To reduce the collision probability, it is necessary to choose large p or to concatenate such MACs using independent keys so that the collision probability] becomes
1
pn
. In this case the number of keys are increased by a factor of and the output is also increased by .

MMH*32

Halevi and Krawczyk[4] construct a variant called

*
MMH
32
. The construction works with 32-bit integers and with the prime integer

p=232+15

. Actually the prime p can be chosen to be any prime which satisfies

232<p<232+216

. This idea is adopted from the suggestion by Carter and Wegman to use the primes

216+1

or

231-1

.
*
MMH
32
is defined as follows:
*
MMH
32

=\left\{gx(\left\{0,1\right\}32)k\right\}\toFp,

where

\left\{0,1\right\}32

means

\left\{0,1,\ldots,232-1\right\}

(i.e., binary representation)

The functions

gx

are defined as follows.

\begin{align} gx(m)&\overset{\underset{def

}}\ m \cdot x \bmod (2^+15)\\&=\textstyle \sum_^k m_i \cdot x_i \bmod (2^+15)\end

where

x=(x1,\ldots,xk),m=(m,\ldots,mk)

By theorem 1, the collision probability is about

\epsilon=2-32

, and the family of
*
MMH
32
can be defined as ϵ-almost ∆ Universal with

\epsilon=2-32

.

The value of k

The value of k that describes the length of the message and key vectors has several effects:

1/p

and

p2k

so increasing k makes the system harder to break.

Performance

Below are the timing results for various implementations of MMH[4] in 1997, designed by Halevi and Krawczyk.

150 MHz PowerPC 604Message in MemoryMessage in Cache
64-bit390 Mbit/second417 Mbit/second
32-bit output597 Mbit/second820 Mbit/second
150 MHz PowerPC 604Message in MemoryMessage in Cache
64-bit296 Mbit/second356 Mbit/second
32-bit output556 Mbit/second813 Mbit/second
150 MHz PowerPC 604Message in MemoryMessage in Cache
64-bit380 Mbit/second500 Mbit/second
32-bit output645 Mbit/second1080 Mbit/second

See also

Notes and References

  1. Web site: Badger- A fast and provably secure MAC . 2005 . Martin . Boesgaard . Martin Boesgaard . Ove . Scavenius . Ove Scavenius . Thomas . Pedersen . Thomas Pedersen (computer scientist) . Thomas . Christensen . Thomas Christensen (computer scientist) . Erik . Zenner . Erik Zenner .
  2. Web site: Evaluation of Badger . 2005 . Stefan . Lucks . Stefan Luck . Vincent . Rijmen . Vincent Rijmen .
  3. Web site: Badger Message Authentication Code, Algorithm Specification . 2005 .
  4. Book: MMH:Software Message Authentication in the Gbit/second rates . 1997 . Shai . Halevi . Shai Halevi . Hugo . Krawczyk . MMH: Software message authentication in the Gbit/Second rates . Lecture Notes in Computer Science . 1267 . 172–189 . 10.1007/BFb0052345 . 978-3-540-63247-4 . Hugo Krawczyk .