암호 해시 함수

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

각주[편집 | 원본 편집]