일반적인 해시 함수(Hash Function)는 임의의 유한한 길이를 가진 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
x
👇🏻
|Hash function|
👇🏻
y = h(x)
해쉬 함수 h는 압축성과 계산 용이성의 성질을 가지고 있다.
- 압축성(compression) : 임의의 유한 길이의 입력 비트 스트링 x를 고정된 길이의 출력 비트 스트링 h(x)로 변환한다.
- 계산 용이성(ease of computation) : 주어진 h와 x에 대하여 h(x)를 계산하기 쉽다.
해시 함수는 출력값으로 고정된 길이의 데이터를 생성하기 때문에 서로 다른 입력값이 동일한 해시값을 출력할 수 있지 않을까?
그래서 암호학적 해시 함수(Cryptographic Hash Function)는 아래 3가지 성질을 만족해야 한다.
- 역상 저항성(Preimage resistance) : 임의의 출력값 y가 주어졌을 때, y = h(x)를 만족하는 x 값을 찾는 것이 계산적으로 불가능하다.
- 제 2 역상 저항성(Second preimage resistance) : 주어진 입력값 x에 대해 h(x) = h(x'), x != x' 를 만족하는 x'를 찾는 것이 계산적으로 불가능하다.
- 충돌 저항성(Collision resistance) : h(x)에 대해 h(x) = h(x')를 만족하는 x와 x'를 찾는 것이 계산적으로 불가능하다. ex) 전자 서명
충돌 저항성을 만족하면 > 제 2 역상 저항성도 만족하게 된다.
생일 문제(Birthday problem)
P(N) : N명 중 생일이 같은 사람이 두 명 이상일 확률
P(N) = 1 - (N명의 생일이 모두 다를 확률)
P(N) = 1 - (365/365) * (364/365) * ... * ((365-(N-1))/365) > 1/2 을 만족하는 최솟값 N은 23이 된다.
(100명의 사람이 존재할 때, 생일 같은 사람이 두 명 이상일 확률을 생각해본다면, 흔히 N = 50이 답일 것이라 생각하지만 정답은 그 보다 적은 사람이 존재할 때이다.)
생일 공격(Birthday attack)
- 암호학적 해시 함수의 해시 충돌을 찾아내는 암호해독 공격으로 생일 문제의 확률적 결과를 기반으로 한다. 생일 문제에 따르면 해시 함수의 입력값을 다양하게 할수록 해시값이 같은 두 입력값을 발견할 확률이 빠르게 증가하기 때문에 모든 값을 대입하지 않고도 해시 충돌을 찾아낼 확률을 충분히 크게 만들 수 있다.(wiki)
👉🏻 서로 다른 입력값 x, x'에 대해 h(x) = h(x')를 만족하는 x와 x'을 찾는 문제이다.
- 해시 함수 h의 출력이 n비트일 때, h의 충돌을 발견할 확률이 절반이 넘기 위한 복잡도는 약 n/2비트이다.
👉🏻 128bit 암호키는 256bit 해시 함수와 동일한 효과를 보인다.
해시 함수의 종류는 다음과 같다.
/ | MD5 | SHA-1 | SHA-256 | SHA-512 | LSH |
출력 비트 | 128 | 160 | 256 | 512 | 256/512 |
블록 크기 | 512 | 512 | 512 | 1024 | 1024/2048 |
워드 길이 | 32 | 32 | 32 | 64 | 32/64 |
단계 수 | 64 | 80 | 64 | 80 | 26/28 |
MD(Message Digest)
MD2 -> MD4 -> MD5로 발전되었다. 그러나 128비트의 해시값은 너무 짧아 해시값의 충돌을 발견하는 방법이 고안되어 현재는 MD5를 제외하고 사용되지 않고 있다. (MD5는 2005년 깨졌으나, 아직 사용되는 곳이 존재함)
SHA(Secure Hash Algorithm)
SHA는 NIST에서 만들어진 160비트의 해시값을 가지는 일방향 해시 함수이다. SHA-224, SHA-256, SHA-384, SHA-512는 SHA-2라고도 부른다. 미국 국립표준기술연구소는 SHA-3을 공모하여 2015년 8월 SHA-3 암호화 해시 함수 표준을 발표했다.
LSH
국내에서 개발된 암호화 해시 함수이다. 다양한 소프트웨어 환경에서 국제 표준(SHA2/3) 대비 2배 이상의 성능을 가지고 있다.
참고
https://continuetochallenge.tistory.com/86
암호화 해시함수
1. 암호화 해시 함수(cryptographic hash function) 해시 함수의 일종으로, 해시 값으로부터 원래의 입력값과의 관계를 찾기 어려운 성질을 가지는 경우를 의미한다. 2. 암호화 해시 함수의 성질 (1) 역상
continuetochallenge.tistory.com
'Security > Network Cryptography' 카테고리의 다른 글
SSL/TLS Protocol handshake (0) | 2022.09.19 |
---|