Company LOGO Midterm Presentation Hash Function using MD5 algorithm Students: Eyal Mendel & Aleks Dyskin Instructor: Evgeny Fiksman High Speed Digital Systems Laboratory
Content 1. MD5 algorithm description. 2. System block diagram. 3. Project progress. 4. Schedule.
MD5 description The MD5 (Message Digest 5)algorithm is intended for digital signature applications, where a large file must be "compressed" in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem. The MD5 algorithm takes as input a message of arbitrary length and produces as output a 128-bit signature of the input. The algorithm consists of 5 steps, that are performed to compute the message digest of the message/ file. The MD5 (Message Digest 5)algorithm is intended for digital signature applications, where a large file must be "compressed" in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem. The MD5 algorithm takes as input a message of arbitrary length and produces as output a 128-bit signature of the input. The algorithm consists of 5 steps, that are performed to compute the message digest of the message/ file. Brief introduction
Algorithm Steps MD5 steps. Step 1: Append Padding Bits. Step 2: Append Length. Step 3: Initialize MD buffer. Step 4: Process Message in 16-Word Blocks. Step 5: Output.
Steps: Description The message is "padded" so that its length (in bits) is congruent to 448, modulo 512. The message is "padded" so that its length (in bits) is congruent to 448, modulo 512. Step 1: Append Padding Bits.
Steps: Description A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. A 64-bit representation of b (the length of the message before the padding bits were added) is appended to the result of the previous step. Step 2: Append Length.
Steps: Description A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): A four-word buffer (A,B,C,D) is used to compute the message digest. Here each of A, B, C, D is a 32-bit register. These registers are initialized to the following values in hexadecimal, low-order bytes first): Step 3: Initialize MD buffer. word A: word B: 89 ab cd ef word C: fe dc ba 98 word D:
Steps: Description We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word: We first define four auxiliary functions that each take as input three 32-bit words and produce as output one 32-bit word: Step 4: Process Message in 16-Word Blocks.
Steps: Description This step also uses a 64-element table T[ ] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of where i is in radians. The elements of the table are given in the MD5 code. This step also uses a 64-element table T[ ] constructed from the sine function. Let T[i] denote the i-th element of the table, which is equal to the integer part of where i is in radians. The elements of the table are given in the MD5 code. Step 4: Process Message in 16-Word Blocks. (continued)
Steps: Description Step 4: Process Message in 16-Word Blocks. (continued) SETi(a, b, c, d, k, s, Ti): {a=b + ((a + Function(b,c,d) + X[k] + T[i]) << s)} When the Function is one of the functions that were defined previously, and a,b,c,d are one of the A,B,C,D buffers. Each of the rounds of the process (i=1,2,3,4) has its SETi function.
Steps: Description The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. The message digest produced as output is A, B, C, D. That is, we begin with the low-order byte of A, and end with the high-order byte of D. Step 5: Output.
System Block Diagram The user interface is MS HyperTerminal. Communicating via COM1 serial port. TEXT JTAG programming cable RS232 serial communication MD5 is running on FPGA as a software and getting as an input via the UART RS232. Incoming string Outgoing signature
System Arch. Block Diagram CPUBRAM UART Serial Com. Desktop PC comm. BUS ASC module (future) Software code is here
Timing String\function InitappendfinishTotal ‘a’ ‘Aleks’ ‘message digest’ All16-byte strings All the times are in microseconds.
Project Progress Till now: Studying EDK MD5 code research MD5 software implementation User interface using HyperTerminal
Schedule Final Performance evaluation Midterm presentation Getting started with ASC. Modifying the MD5 code to ASC env. Net list synth. Debugging
At the End Thank you for your time.