# 암호 해시값 (Cryptographic Digest)

해시 함수의 출력값을 암호 해시값(다이제스트, digest)이라고 합니다. 해시값은 하나의 데이터를 나타내는 고정 길이의 고유한 값입니다. 해시 함수에 입력되는 데이터가 아주 조금만 변경되어도 완전히 다른 출력이 생성되므로, 변조 감지를 위해 사용됩니다.

## 해시값의 원리

해시값은 데이터의 디지털 지문과 같습니다. 데이터를 해시 함수에 입력해 얻은 고정 길이의 태그로, 정보가 변경되었는지 확인하는 봉인과 비슷한 역할을 합니다. 예를 들어 큰 냄비의 수프(데이터)를 블렌더(해시 함수)에 넣어 한 숟가락 분량의 고유한 향신료 블렌드(해시값)로 바꾼다고 생각해 보세요. 수프 재료를 아주 조금만 바꿔도 완전히 다른 블렌드가 나옵니다.

## 주요 성질

- **고유한 표현:** 해시값은 입력 데이터마다 사실상 고유하며(충돌은 이론적으로 존재합니다), 사람마다 지문이 다른 것과 비슷합니다.
- **고정 길이:** 입력 데이터의 크기가 아무리 크거나 작더라도 결과 해시값의 길이는 항상 동일합니다. 그래서 저장하고 비교하기가 간편합니다.
- **단방향성:** 해시값은 단방향 함수로 만들어지므로, 해시값에서 원래 정보를 복구할 수 없습니다. 해시는 암호화(복호화가 가능한 변환)와 다릅니다.

## 변조는 어떻게 감지합니까?

원본 데이터를 아주 조금만 변경해도 해시값이 완전히 달라집니다(눈사태 효과). 누군가가 메시지의 문자 하나만 바꿔도, 변경된 메시지의 해시값은 원본의 해시값과 전혀 다르게 나옵니다. 이 속성을 이용하면 원본의 해시값과 비교해 변경 여부를 확인할 수 있습니다.

1. **오류·변조 감지:** 누군가가 허가 없이 데이터를 변조하거나 변경했는지 쉽게 감지합니다.
2. **데이터 무결성:** 전송하거나 저장하는 데이터가 의도한 대로 정확하게 유지되는지 확인합니다. 다만 비교 기준이 되는 해시값 자체도 신뢰할 수 있는 경로로 받아야 합니다.

## 한계

- **충돌 위험 (매우 드물지만):** 서로 다른 데이터가 동일한 해시값을 생성하는 충돌이 이론적으로 존재합니다. 충돌 저항성이 검증된 해시 함수를 쓰면 현실적으로 충돌을 찾기 어렵지만, 충돌이 실제로 발견된 MD5·SHA-1 같은 함수는 보안 용도로 권장되지 않습니다.
- **보호 수단이 아닙니다:** 해시만으로 데이터를 숨기거나 보호하지는 못하므로 암호화나 디지털 서명 같은 다른 기법과 함께 사용됩니다.

## 실제 예

- **비밀번호 저장:** 웹사이트는 비밀번호 자체가 아니라 비밀번호의 해시값을 저장합니다. 따라서 데이터베이스가 유출되어도 비밀번호가 그대로 드러나지는 않습니다. 다만 단순한 비밀번호는 대입 공격으로 알아낼 수 있어 솔트(salt)와 계산이 느린 해시 함수를 함께 사용합니다.
- **파일 무결성:** 파일을 다운로드할 때 해시값을 소스에서 제공된 해시값과 비교하여 무결성을 확인할 수 있습니다. 해시값이 일치하면 파일이 변조되지 않았다는 것을 알 수 있습니다.
- **디지털 서명:** 문서 전체 대신 문서의 해시값에 서명하여 발신자와 문서의 진정성·무결성을 확인합니다.
- **블록체인 기술:** 각 블록은 이전 블록의 해시값을 담고 있어, 과거 트랜잭션을 바꾸면 이후 모든 해시가 어긋나므로 변경 사실이 드러납니다.

결론적으로 **해시값**은 무결성 검증, 비밀번호 저장, 디지털 서명, 블록체인 등에서 데이터가 변경되지 않았는지 확인하는 기본 구성 요소로 쓰입니다. 장점과 한계를 함께 이해해야 올바르게 활용할 수 있습니다.

---
출처: https://achivx.kr/glossary/cryptographic-digest-%EC%95%94%ED%98%B8%ED%99%94-%ED%95%B4%EC%8B%9C/ · ACHIVX 용어 사전 · 수정일 2026-10-20
