Hash MAC1
Hash MAC1
Hash MAC1
MACM=F(KAB, M)
Message not altered
The alleged sender confirmed The proper sequence of messages assured
Similar to encryption
NIST recommends the use of DES
Hash Functions
condenses arbitrary message to fixed size
h = H(M) No secret key needed usually assume hash function is public hash used to detect changes to message
collision resistance
find two messages x & y with same hash so H(x) = H(y)
with message blocks Add a random 64 bit number (aka IV) b1=MD(KAB|IV), bi=MD(KAB|bi-1),
MD5 Overview
MD5 Overview
1. Pad message so its length is 448 mod 512 2. Append a 64-bit original length value to message 3. Initialise 4-word (128-bit) MD buffer (A,B,C,D) 4. Process message in 16-word (512-bit) blocks:
Using 4 rounds on message block & buffer Add output to buffer input to form new buffer value
Padding Twist
Given original message M, add padding bits 10* such that resulting length is 64 bits less than a multiple of 512 bits. Append (original length in bits mod 264), represented in 64 bits to the padded message Final message is chopped 512 bits a block
MD5 Process
As many stages as the number of 512-bit blocks in the final padded message Digest: 4 32-bit words: MD=A|B|C|D Every message block contains 16 32-bit words: m0|m1|m2|m15
Digest MD0 initialized to: A=01234567,B=89abcdef,C=fedcba98, D=76543210 Every stage consists of 4 passes over the message block, each modifying MD
ABCD=fF(ABCD,mi,T[1..16])
C D B ABCD=fG(ABCD,mi,T[17..32]) ABCD=fH(ABCD,mi,T[33..48]) A
ABCD=fI(ABCD,mi,T[49..64])
+ + + +
MD i+1
Different Passes...
Input:
mt a 32-bit word from the message With different shift every round
Tt int(232 * abs(sin(i)))
Provides a randomized set of 32-bit patterns, which eliminate any regularities in the input data ABCD: current MD
Output:
ABCD: new MD
a,b,c,d refer to the 4 words of the buffer, but used in varying permutations
note this updates 1 word only of the buffer after 16 steps each word is updated 4 times
General Logic
Message is processed in 512-bit blocks sequentially
Message digest is 160 bits SHA design is similar to MD5, but a lot stronger
Basic Steps
Step1: Padding Step2: Appending length as 64 bit unsigned
C = 98badcfe
D = 10325476 E = c3d2e1f0
Basic Steps...
Step 4: the 80-step processing of 512-bit blocks 4 rounds, 20 steps each. Each step t (0 <= t <= 79):
Input:
Wt a 32-bit word from the message
Kt a constant. ABCDE: current MD.
Output:
ABCDE: new MD.
Basic Steps...
Only 4 per-round distinctive additive constants
0 <=t<= 19 Kt = 5A827999 20<=t<=39 Kt = 6ED9EBA1 40<=t<=59 Kt = 8F1BBCDC 60<=t<=79 Kt = CA62C1D6
designed for compatibility with increased security provided by the AES cipher
structure & detail is similar to SHA-1