1.1. 해시 함수의 종류
해시 함수의 종류로는 md5, SHA-1, SHA-256, SHA-384, SHA-512, BLAKE2 등이 있다.
1. MD5: Rivest가 1991년에 만든 해시 함수로 128비트의 해시 값을 가진다. MD5 내부 구조 일부에 대한 공격 방법이 몇 개 발견되었기 때문에 더이상 사용되지 않는다.
2. SHA
- SHA-1: 1995년에 제작되어 1650비트로 해시 값이 출력된다. 해시 충돌에 취약해 MD5 및 SHA-1는 2005년에 이론적으로 중단되었다,
- SHA-2(224 및 256/384 및 512)는 2001년에 발표되어 가장 보편적으로 사용되고 있다. 보안 애플리케이션 및 프로토콜, 암호 화페 거래 검증, 디지털 인증서 및 기타 어플리케이션에 사용한다.
- SHA-3(224/256/384/512)는 SHA-3 경쟁에서 우승 한 Keccak을 기반으로 2015년 미국 연방 표준 FIPS 202 로 표준화 되었다 현재는 필요한 경우(특정 상황에서) SHA-2를 교체하는 데 사용된다.
3. BLAKE2: BLAKE2는 SHA-3 경쟁에 제출되고 4년동안 검토된 BLAKE를 기반으로 한다. 또한 BLAKE 내부는 새로운 TLS 1.3의 세가지 암호 중의 하나인 ChaCha를 기반으로 한다. BLAKE2는 소프트웨어에서 속도가 가장 빠르고 추가 기능을 지원한다.
hash-identifier라는 Kali 툴은 Hash 값이 어떤 알고리즘을 썼는지 등을 구분해주기도 한다.
1.2. 해시 함수의 역상 저항성과 충돌 저항성
주어진 해시 값 H에 대해 Hash(M)=H를 만족하는 임의의 메세지 M을 가리켜 그 해시 값의 역상이라고 한다.
역상 저항성은 어떤 무작위 해시 값이 주어졌을 때 그 해시의 역상을 찾을 수 없다는 속성이다. 해시는 일방향 함수이기 때문에 반대 방향으로의 변환은 할 수 없는데 이를 제 1역상 저항성이라고 한다.
제 2 역상 저항성은 어떤 메세지 M1이 주어졌을 때 해당 메세지와 동일한 해시값을 갖는 M2를 찾기가 불가능 한 속성을 말한다. 역상 하나를 찾을 때 2^n의 시도가 필요한데 현대적인 해시처럼 n=256이면 현실적으로 역상을 찾기는 불가능하다.
충돌 저항성이란 해시 값에 중복으로 인해 발생한다. 같은 해시 값을 생성하는 두개의 입력 값을 찾는 것이 계산상 어려워야 한다. 해시 충돌에 대해 안전해야 한다는 것을 의미한다.
강한 충돌 회피성은 H(X) = H(Y) 인 서로 다른 임의의 두 입력 X, Y 를 찾는 것이 불가능한 특성이며 약한 충돌회피성은 X가 주어졌을 때 H(X) = H(Y) 인 X!=Y을 찾는 것이 불가능한 특성이다.
'CS & Reversing' 카테고리의 다른 글
[book] 리버스 엔지니어링 기드라 실전 가이드: Chapter 1 (0) | 2023.05.04 |
---|---|
[book]리버싱과 시스템 해킹의 원리(x64dbg 디버거) (0) | 2023.05.04 |
리눅스 방화벽/ iptable, ufw, firewall (0) | 2022.10.01 |
configure: error: no acceptable C compiler found in $PATH 해결 (0) | 2022.09.28 |
[정보보안] 버퍼 오버 플로우(BOF) 개념, 원리, 대응방안 (0) | 2022.03.06 |