compression : 어떤 길이의 input에 대해서도 고정된 길이의 output 이 생성됨
Efficiency : h(x)를 통해 y값을 계산하는 것이 쉬움
One-way : hx)=y의 역함수를 구할 수 없음. 즉 y로부터 x를 계산하는 함수를 구할 수 없음
Weak collision resistanc(약한 충돌 저항성) : h(x)와 x를 알고있을 때, 동일한 해시값을 가지는 다른 입력데이터를 찾을 가능성이 매우 낮은 것.
Strong collision resistance(강한 충돌 저항성) : 동일한 해시값을 가지는 서로 다른 입력데이터를 찾을 가능성이 거의 없는 것
따라서 약한 충돌 저항성을 가지게 되면 해커입장에서 다른 입력 데이터들을 수동으로 넣어보며 공격할 가능성이 있긴함.
해시함수는 기본적으로 "약한 충돌 저항성"과 "강한 충돌 저항성"을 모두 가짐
h(x) = y값으로부터 x를 알아내는 것은 어려우나 같은 해시값을 가지는 h(x)=h(z)인 z를 구하는 것이 불가능한 것은 아님을 보여주는 사례.
- (1) N명의 생일이 모두 다를 확률
= 1 x x x x- (2) N명 중 생일이 같은 사람이 존재 할 확률
= 1 - 1 x x x x- (3) N명 중 생일이 같은 사람이 존재 할 확률이 50% 이상이 되기 위한 N의 최솟값? N =23
M (message)
R(공격자가 찾아야할 값)
T (현재 시간)
R값에 따라 H(M,R,T)의 앞 N bit가 '0'으로 설정된다.
=> 수신자 : N개의 '0'으로 시작되는 메일만 받도록하며 1번의 Hash만 필요로함
=> 공격자 : N개의 '0'으로 시작되는 R을 찾기위해 번의 Hash연산을 필요로함