Hash Function
임의의 긴 입력값을 적절하게 처리하여 고정된 길이의 짧은 값을 출력하는 함수
Hash Value의 특징
- 입력길이에 상관없이 출력 길이가 일정하다.
- 조금이라도 입력 값이 다르면 출력값은 완전히 다르다. -> integrity(무결성)
- x = h(x)는 쉽지만 reverse는 어렵다. -> 암호화 복호화와 차이점
MAC : Message Authentication Code
- 메시지 무결성 : 변경되지 않은 원본이 맞음

- 송신자와 수신자는 사전에 키를 공유해 둔다.
- 송신자는 메시지와 비밀키를 결합하여 해시 함수를 적용시킨다.
- 해시 함수의 결과로 MAC을 생성한다.
- 메시지와 MAC을 같이 묶어서 전송한다.
- 서버에서는 동일한 키를 이용해 수신한 메시지와 MAC을 검증한다.
- 돌려서 나온 해시값이랑 들어온 해시값이 같은지 확인한다. (무결성)
Hash Attack
- 같은 해시값을 갖는 다른 입력값을 찾는다.
- ID, PWD 값은 해시로 저장되어 있다, 충돌쌍을 찾으면 로그인 가능
Birthday paradox
- 1번째 사람의 생일 확률 = 1/365
- 2번째 사람이 1번째 사람과 생일이 다를 확률 = 1 - 1/365
- 이렇게 계산하면 최소한 2사람이 생일이 같을 확률은 n>=22.3일때 50%이상이 됨
- 30명이면 70.6%가 됨
Birthday Attack
- 해시의 충돌쌍을 찾는다.
- Md4는 2^20번 계산으로 발견 가능
전자 서명
: 보내려는 데이터를 해시한 내용을 송신자의 개인키로 암호화 한것
: 전자셔명을 하면 인증과 부인방지가 보장됨