Hash Function
Table of Contents
공격 시나리오
- 노출: 기밀성 => 암호
- 무결성 및 인증 => 해시함수, 전자서명
해시 함수의 목적: 입력값보다 작은 길이의 출력값 도출
ex. x = 524840101
H(x) = 5 + 2 + 4 + 8 + 4 + 1 + 1 = 30
요구사항
- 메시지 압축: 출력값은 고정된 짧은 길이
- 계산의 효율: 임의의 x에서 H(x)는 쉽게 도출
- 단방향: 임의의 y에서 H(x) = y를 만족시키는 x를 찾는 것은 거의 불가능
- 충돌방지: H(x1), H(x2), H(x3) = y x1, x2, x3 구하기 어려움
H(x1) = H(x2) = H(x3) 일 때, H(x1) = y의 값을 알더라도 x2, x3의 값은 몰라야 한다. -> 충돌이 되는 “입력값"을 알아내기가 어려워야 보안도 좋다.
충돌이 불가능하기 위해서는 256비트에서 512비트정도의 길이가 필요하다.

눈사태효과 #
입력값이 1bit만 다르더라도 출력값은 반 이상이 바뀌어야한다.