암호 해시 함수
IT 위키
암호 해시 함수(cryptographic hash function)는 임의 길이의 입력 데이터를 고정 길이의 해시 값으로 매핑하며, 암호학적 보안을 만족하는 여러 특성을 가진 함수이다.
정의와 기본 개념[편집 | 원본 편집]
- 입력: 임의 길이의 비트열 또는 메시지
- 출력: 고정 길이의 비트열 (해시 값 또는 다이제스트)
- 결정론성: 동일한 입력에 대해 항상 동일한 출력이 나와야 한다
- 역산 불가능성 (Preimage resistance): 주어진 해시 값으로부터 원래 입력을 찾는 것은 계산적으로 불가능해야 한다
- 제2 역상 저항성 (Second preimage resistance): 주어진 입력과 동일한 해시 값을 갖는 다른 입력을 찾는 것이 불가능해야 한다
- 충돌 저항성 (Collision resistance): 서로 다른 두 입력이 동일한 해시 값을 갖는 경우를 찾는 것이 불가능해야 한다
주요 속성[편집 | 원본 편집]
- 입력 길이에 민감 (Avalanche effect): 입력이 조금만 변화해도 출력 전체가 크게 바뀐다
- 빠른 계산성: 해시 함수는 입력을 해시 값으로 빠르게 계산할 수 있어야 한다
- 일방향성: 해시 함수의 계산은 쉬워야 하지만 역방향 탐색은 어려워야 한다
- 해시 값의 균등 분포: 가능한 출력 공간을 고르게 활용해야 한다
대표 알고리즘[편집 | 원본 편집]
- MD5
- 128비트 해시 출력
- 현재는 실용적 공격 가능성이 알려져 있어 보안 목적에는 부적절하다
- SHA-1
- 160비트 출력
- 충돌 공격이 실질적으로 가능해져 현대 시스템에서는 더 이상 권장되지 않는다
- SHA-2 계열
- SHA-224, SHA-256, SHA-384, SHA-512 등의 다양한 길이 제공
- 널리 사용되는 안전한 해시 계열
- SHA-3 (Keccak 기반)
- 스펀지 구조(sponge construction)를 사용
- 길이 확장 공격(length-extension attack)에 강한 저항성을 가짐
- BLAKE2 / BLAKE3
- SHA-3 후보였던 BLAKE의 후속으로, 빠르고 안전한 해시 함수
- 다양한 플랫폼에서 성능 최적화가 잘 되어 있음
활용 예[편집 | 원본 편집]
- 데이터 무결성 검증: 파일 다운로드나 통신 메시지의 위변조 감지
- 디지털 서명: 메시지를 먼저 해시한 뒤 해시 값을 서명
- 비밀번호 저장: 비밀번호를 직접 저장하지 않고 해시 값과 솔트 값을 저장
- 블록체인 및 분산 원장: 트랜잭션 해시, 머클 트리 구축 등
- 메시지 인증 코드(MAC), KDF 구성 요소 등
한계 및 보안 고려[편집 | 원본 편집]
- 해시 함수만으로는 비밀번호 저장에 충분하지 않다 — 빠르게 연산 가능하므로 무차별 대입 공격에 취약하다
- 길이 확장 공격 (특히 Merkle‑Damgård 기반 해시 함수에서 발생 가능)
- 기존 알고리즘의 취약점 발견 가능성 — 새 알고리즘 또는 보완 방식 도입 필요
- 출력 길이 제한 — 보안 수준에 맞는 해시 길이를 선택해야 한다
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Bruce Schneier, Applied Cryptography
- NIST, FIPS PUB 180-4: Secure Hash Standard (SHS)
- Jean-Philippe Aumasson, The Hash Function BLAKE