해시 함수
기술노트
🧮 해시 함수 (Hash Function)
해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터(해시 값, Hash Value)로 변환하는 함수입니다. 이 변환 과정은 '단방향성(One-way)'을 가지므로, 해시 값만으로는 원본 데이터를 역추적할 수 없습니다.
⚙️ 해시 함수의 주요 특징
좋은 해시 함수는 다음과 같은 특징을 가집니다.
- 단방향성 : 해시 값에서 원본 데이터를 추론할 수 없어야 합니다.
- 결정성 : 동일한 입력 값에 대해서는 항상 동일한 해시 값이 출력되어야 합니다.
- 충돌 저항성 : 서로 다른 입력 값에서 동일한 해시 값이 나올 확률(해시 충돌, Hash Collision)이 매우 낮아야 합니다.
- 눈사태 효과 (Avalanche Effect) : 입력 값의 아주 작은 변화에도 해시 값이 완전히 달라져야 합니다.
🔐 해시 함수의 활용
- 비밀번호 저장 : 사용자의 비밀번호를 데이터베이스에 저장할 때, 원본 비밀번호 대신 해시 값을 저장하여 보안을 강화합니다. (복호화가 필요 없으므로)
- 데이터 무결성 검증 : 파일이나 메시지가 전송되는 도중에 변조되지 않았는지 확인하는 데 사용됩니다. 원본 데이터의 해시 값과 수신된 데이터의 해시 값을 비교하여 일치하면 무결성이 보장됩니다.
- 전자 서명 : 메시지의 해시 값에 서명하여, 메시지의 위변조 여부를 확인하고 송신자의 부인 방지를 제공합니다.
- 블록체인 : 블록체인에서 각 블록의 무결성을 보장하고, 블록들을 연결하는 데 해시 함수가 사용됩니다。
📚 대표적인 해시 알고리즘
- MD5 (Message-Digest Algorithm 5) : 과거에 널리 사용되었으나, 보안 취약점(충돌 공격)이 발견되어 현재는 무결성 검증 용도로만 제한적으로 사용됩니다。
- SHA (Secure Hash Algorithm) : 미국 국가안보국(NSA)이 개발한 해시 함수 시리즈. `SHA-256`, `SHA-512` 등이 널리 사용되며, 현재 가장 안전하다고 평가받는 해시 알고리즘 중 하나입니다。
💡 정보처리기사 핵심 Point
- 정보처리기사 시험에서는 해시 함수의 개념, 주요 특징(단방향성, 충돌 저항성 등), 그리고 활용 분야를 묻는 문제가 자주 출제됩니다.
- 특히 비밀번호 저장 시 해싱을 사용하는 이유와, `솔트(Salt)`를 함께 사용하는 이유를 이해하는 것이 중요합니다。
- 해싱은 암호화와 달리 복호화가 불가능하다는 점을 명확히 구분해야 합니다。