해시 기반 보안 체계와 무결성·인증의 확장
해시 함수의 일방향성과 충돌 저항성을 바탕으로 MDC, MAC, 디지털 서명, 디지털 봉투가 제공하는 보안 속성을 정리한다.
2026-08-14 · 최초 발행 2025-06-28
해시값에서 보안 속성이 확장되는 방식
해시 함수는 임의 길이의 입력을 고정 길이 값으로 바꾸는 일방향 함수다. 이 특성은 단순한 메시지 변경 감지에서 출발해 인증, 부인방지, 기밀성까지 갖춘 보호 방식으로 이어진다.
해시 기반 구조를 판단할 때는 다음 성질이 출발점이 된다.
- 일방향성(One-way): 원본 데이터로부터 해시값은 쉽게 계산되지만, 해시값으로부터 원본을 유추할 수 없음
- 충돌 저항성(Collision Resistance): 서로 다른 입력값이 동일한 해시값을 생성할 확률이 극히 낮음
- 고정 길이 출력: 입력 데이터 크기와 관계없이 항상 동일한 길이의 출력값 생성
- 결정적(Deterministic): 동일한 입력에 대해 항상 동일한 출력값 생성
메시지 변경만 확인하는 MDC
MDC(Message Digest Code)는 메시지가 전송 중 바뀌었는지 검증하는 가장 기본적인 해시 활용 방식이다. 수신자는 전달받은 메시지에서 해시값을 다시 계산하고, 함께 전달된 MDC와 비교한다.
이 방식은 소프트웨어 다운로드 뒤의 무결성 검증이나 데이터 중복 확인에 쓸 수 있다. 다만 원본 메시지와 해시값을 모두 바꾸는 것은 누구나 가능하므로, 발신자가 누구인지 확인하는 기능은 없다.
공유 비밀키를 더한 MAC
MAC(Message Authentication Code)은 MDC 계산에 비밀키를 결합한다. 발신자와 수신자가 공유한 비밀키가 있어야 유효한 MAC 값을 만들 수 있으므로, 메시지의 무결성과 발신자 인증을 함께 확인할 수 있다.
공격자는 비밀키가 없으면 유효한 MAC 값을 생성할 수 없다. HMAC(Hash-based MAC), 금융 거래 메시지 인증, API 인증이 이 구조의 활용 사례다. 반면 같은 비밀키를 공유한 당사자 외 제3자에게는 증명할 수 없으므로 부인방지 기능은 제공하지 않는다.
공개키 검증으로 부인방지까지 다루는 디지털 서명
디지털 서명은 비대칭키 암호화를 사용해 MAC의 범위를 넓힌다. 발신자가 개인키로 서명을 만들고, 수신자를 포함한 검증자는 공개키로 그 서명을 확인한다.
발신자는 메시지의 해시값을 자신의 개인키로 암호화해 서명을 만든다. 수신자는 공개키로 서명을 복호화해 해시값을 복원한 뒤, 메시지에서 계산한 해시값과 비교한다.
개인키를 가진 발신자만 서명을 생성할 수 있고, 공개키를 가진 누구나 검증할 수 있다. 따라서 전자문서 서명, 소프트웨어 배포 인증, 이메일 인증(S/MIME), 계약서 서명에 활용된다.
메시지와 키를 함께 보호하는 디지털 봉투
디지털 봉투는 디지털 서명에 기밀성을 추가한다. 메시지는 임의로 생성한 세션키로 암호화하고, 세션키는 수신자의 공개키로 암호화한다. 여기에 원본 메시지의 디지털 서명을 함께 전송한다.
대칭키 암호화의 효율성과 비대칭키 암호화의 키 관리 용이성을 함께 활용하며, 기밀성·무결성·인증·부인방지를 제공한다. 대용량 데이터 처리에도 효율적이어서 PGP(Pretty Good Privacy) 이메일 암호화, 안전한 파일 전송 시스템, 전자상거래 플랫폼, 기업 간 중요 데이터 교환에 적용된다.
보안 속성과 키 구조 비교
| 기술 | 무결성 | 인증 | 부인방지 | 기밀성 | 키 종류 | 복잡성 |
|---|---|---|---|---|---|---|
| MDC | ✓ | ✗ | ✗ | ✗ | 없음 | 낮음 |
| MAC | ✓ | ✓ | ✗ | ✗ | 대칭키 | 중간 |
| 디지털 서명 | ✓ | ✓ | ✓ | ✗ | 비대칭키 | 높음 |
| 디지털 봉투 | ✓ | ✓ | ✓ | ✓ | 대칭키+비대칭키 | 매우 높음 |
HMAC과 RSA 서명식
HMAC(Hash-based Message Authentication Code)은 해시 함수와 비밀키를 결합한 MAC 방식이다.
HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))
여기서 K는 비밀키, m은 메시지, H는 해시 함수(SHA-256 등)다. opad와 ipad는 상수 패딩 값이며, ⊕는 XOR 연산, ||는 연결 연산을 뜻한다.
RSA 디지털 서명은 메시지 m의 해시값 h = H(m)을 계산한 뒤 개인키 d로 s = h^d mod n을 만들어 서명한다. 공개키 e를 이용한 검증은 h' = s^e mod n으로 수행하며, h와 h'가 일치하면 서명이 유효하다.
블록체인과 제로지식 증명에서의 해시
블록체인은 각 블록에 이전 블록의 해시값을 포함해 체인을 형성한다. 한 블록을 변조하면 이후 블록의 해시값도 바꿔야 하며, 작업증명(Proof of Work)에도 해시 함수를 활용한다.
제로지식 증명(Zero-Knowledge Proof)은 비밀 정보를 공개하지 않고도 해당 정보의 소유를 증명하는 방식이다. 해시 함수를 활용해 증명 시스템을 구축하며, zkSNARKs와 zkSTARKs 등의 기술에서도 해시 함수가 핵심 요소로 쓰인다.