---
# System prepended metadata

title: Lecture 06 Message Auth Code
tags: [School, Notes, DISM, ACG]

---

---
title: 'Lecture 06 Message Auth Code'
disqus: hackmd
---

:::info
ST2504 Applied Cryptography
:::

Lecture 06 Message Auth Code
===

<style>
img{
/*     border: 2px solid red; */
    margin-left: auto;
    margin-right: auto;
    width: 80%;
    display: block;
}
</style>


## Table of Contents

[TOC]

Message Auth Code (MAC)
---
- crypto checksum of msg
    - provides 
        - data integrity - unaltered
        - auth
- MAC (generated by MAC func) provides msg auth by validating the sender
    - receiver verify msg is from sender by
        - re-generating MAC
        - compare against sent MAC
- generated by algo that creates small fixed-size blk
    - appended to msg as "signature"
    - receiver performs same computations on msg & checks if matches with MAC
    - provides assurance that msg unaltered & comes from particular sender
- would hash digests help?
    - hash provides assurance that msg is unaltered accidentally - data integrity
    - but not protected against MITM atk
        - atker intercept orig msg & send fake one with required msg digest based on fake msg
- __note__ - when using MAC, both sender & receiver have common secret key

### MAC Function Requirements
![](https://i.imgur.com/SQICqJg.png)

### MAC Application
- MAC algos
    - generate small fixed-size blk called __authenticator/auth tag/tag/MAC/MAC code/crypto checksum__
    - output depending on msg + key
    - need not be reversible
- MAC appended to msg, validated by receiver

![](https://i.imgur.com/ssNOOhM.png)

- MAC with msg encryption
    - for secrecy with auth
    - preferred processing (from most to least secure)
        - encrypt-then-MAC - encrypt msg then generate MAC from ciphertext + IV
        - MAC-and-encrypt - generate MAC & encrypt both MAC & msg
        - encrypt-and-MAC - generate MAC & encrypt msg only
- MAC w/o msg encryption
    - for auth & data integrity only
        - usually separate keys for ea comm pair

### Keyed Hash Function as MAC
- MAC algo based on hash func
    - faster
    - widely available/understood
    - need modification to use key
- original (bad) proposal
    - ![](https://i.imgur.com/5sFNbFp.png)
    - prepending key to msg > hash
    - weaknesses found
        - development of HMAC


Hash-based MAC
---
- specified as internet standard RFC2104

![](https://i.imgur.com/KqX17E3.png)

- where K+ is key padded to blk size
- opad, ipad are specified padding consts
- small overhead
    - 3 more blks of hash calculations
- no encryption computation required
- can use any hash func
    - Eg. MD5, SHA-1, RIPEMD-160, Whirlpool

![](https://i.imgur.com/R9a58oo.png)

### Overview
![](https://i.imgur.com/oqROkFN.png)

![](https://i.imgur.com/idFyO4Z.png)

### HMAC Security
- security of HMAC relates to underlying hash algo
- atking HMAC requires either
    - brute force atk on key used 2^n
    - bday atk
        - 1 wanting matching pair from any 2 sets & need 2^(m/2) in ea to get matching m-bit hash
        - however, HMAC is keyed
        - need to observe large num of msgs
    - note - MD5 is considered safe when used with HMAC

Using Symmetric Ciphers for MACs
---
- can use any blk cipher chaining mode & use final blk as MAC
- __Data Auth Algo (DAA)__ is former US gov standard widely used for producing MAC codes
    - use IV=0 & zero-pad of final blk
    - encrypt msg using DES in CBC mode
    - send just final blk as MAC
        - or leftmost M bits (16 <= M <= 64) of final blk

- however, final MAC, output of DAA, 64bits checksum is now too small for security

### Data Auth Algo (DAA)
- blk cipher in chaining mode (DES-CBC)
    - DES (data encryption standard) is blk cipher
    - cipher blk chaining (CBC) is way of chaininig up blk cipher as shown
    - D = data
    - O = output

![](https://i.imgur.com/MrQq8gF.png)

Summary
---
![](https://i.imgur.com/0FYAt3g.png)




###### tags: `ACG` `DISM` `School` `Notes`