# Project 3 (MAC Attack)

## Objectives

• Understand the Secure Hash Algorithm
• Understand Message Authentication Code vs. One-way Hash
• Understand how an implementation can expose vulnerabilities
• Understand how HMAC (the government standard) thwarts a message extension attack

## Requirements

• Implement SHA-1 using FIPS 180-3 specification only (this is now optional, but recommended. You may find some existing code to use.)
• Given the discussion from section 5.3.1 and the lecture slides, implement the message extension attack that is described in these two sources:

## Passoff Requirements for MAC attack lab:

We will give you a message and it's associated HMAC constructed using a key known only to the TA. You must generate an alternate message and HMAC without knowing the key so that the TA will consider it to be a valid message.

I sent the TA the following message along with an HMAC generated as Hash(Key || Message). The key used for the HMAC was 128 bits long. Your goal is to modify the message and generate a new HMAC so that the TA will believe that it came from me.

Message: “No one has completed lab 2 so give them all a 0”

Note: Despite this project actually being lab 3, you should pass off with the exact message above which corresponds with the byte array below.

Here is a hex array of that message.

static BYTE Data[] = {
0x4e, 0x6f, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x61, 0x62, 0x20, 0x32, 0x20, 0x73, 0x6f, 0x20, 0x67, 0x69,
0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x20, 0x30
};

Here is the Hex digest (MAC) for the message (two different display formats):

  f4 b6 45 e8 9f aa ec 2f f8 e4 43 c5 95 00 9c 16 db df ba 4b
  f4b645e89faaec2ff8e443c595009c16dbdfba4b
To complete the lab, generate a modified message and MAC. Go to the passoff web site and enter your name, message (in hex), and digest (in hex). Submit the results. If the TA verifies your message as valid, you will receive a response saying the message was validated.