---
title: 'Lecture 05 Crytographic Hash'
disqus: hackmd
---
:::info
ST2504 Applied Crytography
:::
Lecture 05 Cryptographic Hash
===
<style>
img{
/* border: 2px solid red; */
margin-left: auto;
margin-right: auto;
width: 80%;
display: block;
}
</style>
## Table of Contents
[TOC]
Security != Encryption
---
### Possible Attacks
- msg confidentiality
- disclosure
- traffic analysis
- msg auth
- masquerade
- content modification
- sequence modification
- timing modification
- source repudiation
- destination repudiation
### Requirements of Message Security
- msg confidentiality
- adversary cannot understand/decrypt msg
- msg auth concerned with
- integrity of msg
- validating identity of originator
- ascertain sender
- non-repudiation of origin (dispute resolution)
- recipient passes msg + proof to 3rd pt
- 3rd pt confident that msg originated from sender
### Encryption
- strong encryption provides confidentiality
- provides some auth
- using symmetric key encryption
- receiver assum sender created msg
- since only sender & receiver know key
- receiver assume msg content not altered
- encrypted + alter msg = corrupted msg
- if msg has suitable structure like redundancy/checksum
- using public key encryption
- encryption provides no info of sender
- in public key system, sender can sign msg using private key then encrypt with recipient's public key
- provide both secrecy & auth
- note - 2 pairs of public-private keys used

### Tools for Msg Auth
- hash
- msg auth code (MAC)
- digital signature
Hash
---

### Hash Algo Requirements

### Merkle-Damgard Construction
- like chained blk cipher
- append padding & length to msg
- break input into equal-sized blks
- 1024 or 512 bits
- apply compression func f iteratively
- saves state from 1 iter to next
- hash as strong as compression func

- merkle-damgard construction for handling big var input msg is proven collision resistant __if hash func f is collision resistant__

- hashing algo (Eg. MD5, SHA1, SHA2) ue diff hash func but based on same Merkle-Damgard construction concept
### Known Hash Algos

### Simple Hash Functions
- based on XOR of msg blks + rotate bits
- insecure > predictable effect on digest by manipulating msg > non collision resistant
- if msg not encrypted, easy to modify msg & append blk that will set hash code as needed
### Applications of Hash Algos
- public key algos
- password logins
- encryption key management
- digital signatures
- integrity checking
- virus & malware scanning
- auth
- secure web connections
- PGP, SSL, SSH, S/MIME
#### Requirements

Secure Hash Algo (SHA)
---
- originally designed by NIST & NSA in 1993
- revised in 1995 as SHA-1
- US standard for use with DSA signature scheme
- standard is FIPS 180-1 1995, also Internet RFC3174
- note
- algo = SHA, standard = SHS
- based on design of hash func MD4 with key diff
- produces 160bit hash values
- in 2005 SHA-1 raised concerns on use in future appps
### Revised SHA (SHA-2)
- NIST issued revision FIPS 180-2 in 2002
- FIPS PUB 180-4 in 2012
- total 6 vers of SHA2
- SHA-224, SHA-256, SHA-384, SHA-512
- SHA-512/224, SHA-512/256
- added in FIPS PUB 180-4
- with digests (hash vals) that are 224, 384 or 512 bits
- designed for compatibility + increased security
- structure & detail similar to SHA-1
- analysis shld be similar
- higher security
### SHA-512

#### Processing
1. append padding bits
2. append length of msg
3. initialise hash buffers (words)
4. process msg in 1024bit blks (the f func in the overview)
5. output final state val as resulting hash

#### Round Function

#### Message Expansion
- 1024bit msg fed multiple times into f func as W
- 

- msg size limitations
- corr to num of reserved bitsa in pad length blk, diff hash funcs have diff max msg size limitations

### Comparison of SHA Functions

Attacks
---
- preimage resistance
- easy to generate code given a msg but virtually impossible to generate msg (or part of it) given a code
- given y, difficult to find an x such that `h(x) = y`
- hash is 1 way
- 2nd preimage resistance
- computationally infeasible to find pair of msgs with same hash val
- given x, difficult to find 2nd preimage `x' != x` such that `h(x) = h(x')`
- no collisions

- birthday atk
- general purpose atk on hash funcs
- higher likelihood of collisions found between random atk attempts & fixed degree of permutations
### Problem Statement
- what's probability that any 2 students in class have same bday when there's 23 students?
- 50
- wtf is this
#### Birthday Attacks

#### Birthday Paradox

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