암호화 해시 함수(Cryptographic Hash Function)는 암호학에서 사용되는 수학적 함수로, 일반 해시 함수가 가진 메시지 처리 능력에 보안 기능을 결합한 것입니다.
'해시 함수'라는 용어는 컴퓨터 과학에서 오랫동안 사용되어 왔으며, 임의 길이의 입력 문자열을 고정된 길이의 문자열로 압축하는 함수로 정의됩니다. 그러나 이 함수가 몇 가지 추가적인 보안 요구 사항을 충족하면 암호학적 응용에 활용할 수 있으며, 이때 이를 암호화 해시 함수라고 부릅니다.
암호화 해시 함수는 암호학 분야에서 가장 필수적인 도구 중 하나로, 인증(Authenticity), 디지털 서명, 의사 난수 생성, 디지털 스테가노그래피(은닉 기술), 디지털 타임스탬프 등 다양한 보안 목표를 달성하는 데 활용됩니다.
암호화 해시 함수의 기본 개념
해시 함수는 임의의 길이를 가진 메시지를 입력으로 받아, 이를 해시 값(hash value), 메시지 다이제스트(message digest), 체크섬(checksum), 또는 디지털 지문(digital fingerprint)이라고 불리는 고정 길이의 출력값으로 변환하는 함수입니다.
수학적 정의
해시 함수는 f: D → R 로 표현할 수 있습니다. 여기서 정의역 D = {0, 1}* 은 가변 길이의 이진 문자열들로 구성되며, 치역 R = {0, 1}ⁿ (n ≥ 1)은 고정 길이의 이진 문자열들로 구성됩니다. 즉, 함수 f는 크기와 상관없는 메시지 M을 입력받아 크기 n의 고정 길이 해시 결과 h를 생성하는 함수입니다.
만약 해시 함수 f의 정의역 D가 유한하다면, 즉 함수 f가 고정 길이의 메시지를 입력받아 더 짧은 고정 길이의 출력을 만든다면, 이를 압축 함수(compression function)라고 정의합니다.
암호화 해시 함수의 주요 속성
암호화 해시 함수가 갖추어야 할 대표적인 속성은 다음과 같습니다.
- 계산 용이성: 주어진 데이터에 대한 해시 값을 매우 쉽고 빠르게 계산할 수 있어야 합니다.
- 임의 크기 입력 허용: 어떤 크기의 데이터 블록이든 입력으로 받아들일 수 있어야 합니다.
- 고정 길이 출력: 입력 크기와 관계없이 항상 고정된 길이의 출력을 생성해야 합니다.
- 결정론적 동작: 난수처럼 보이면서도 결정적(deterministic)이며, 효율적으로 재현 가능해야 합니다.
- 일관성: 동일한 입력에 대해 H는 항상 같은 출력을 생성해야 합니다.
- 다항 시간 계산: 메시지 M이 주어지면 해당 다이제스트 h를 쉽게 계산할 수 있어야 하며, 이때 h는 입력 메시지 길이 n에 대해 다항 시간 O(n) 내에 계산 가능해야 합니다.
핵심 보안 속성
- 역상 저항성(One-way / Pre-image Resistance): 메시지 다이제스트 h가 주어졌을 때, H(M) = h를 만족하는 메시지 M을 찾는 것은 계산적으로 매우 어려워야 합니다. 즉, 해시 값으로부터 원래 메시지를 역으로 추론할 수 없어야 합니다.
- 약한 충돌 저항성(Weak Collision Resistance / 제2 역상 저항성): 메시지 M₁이 주어졌을 때, H(M₁) = H(M₂)를 만족하는 또 다른 메시지 M₂ ≠ M₁을 찾는 것은 계산적으로 불가능해야 합니다.
- 강한 충돌 저항성(Strong Collision Resistance): H(M₁) = H(M₂)를 만족하는 서로 다른 두 메시지 쌍 (M₁, M₂) 자체를 찾는 것이 계산적으로 불가능해야 합니다.
이러한 속성들을 통해 암호화 해시 함수는 데이터 무결성 검증, 비밀번호 저장, 디지털 서명 등 현대 정보보안 시스템의 신뢰성을 뒷받침하는 핵심 역할을 수행합니다.