위키득계정 ↗
기술

해시 함수

해시 함수기술
영문명
Hash function
출력의 이름
해시값 또는 다이제스트
대표 용도
자료 탐색, 무결성 확인, 암호학
주요 개념
충돌과 입력 분포
해시 함수는 입력 데이터를 일정한 범위의 값으로 대응시키는 함수다. 데이터 구조의 빠른 탐색과 무결성 확인 등에 쓰이며, 암호학적 목적의 함수에는 추가적인 안전성 조건이 요구된다.

긴 입력을 짧은 값으로

대용량 파일을 비교할 때 정해진 해시 함수의 출력값을 비교하면 차이를 빠르게 찾는 데 도움이 된다. 동일한 함수와 처리 규칙에서 입력이 같으면 출력도 같다. 출력이 다르면 입력이 다르다는 판단을 할 수 있다.

그러나 해시값이 같다는 사실만으로 원본이 수학적으로 반드시 같다고 결론 내릴 수는 없다. 출력의 가능한 수가 입력보다 적으면 서로 다른 입력이 같은 출력에 대응하는 충돌이 존재한다.

자료 구조에서의 사용

해시 테이블은 키의 해시값으로 후보 위치를 정한 뒤 실제 키를 확인한다. 충돌이 나면 별도의 규칙으로 함께 저장하거나 다른 위치를 탐색한다. 따라서 해시값이 고유한 원본 식별자라는 가정 없이도 동작하도록 설계한다.

암호학적 함수의 추가 조건

암호학적 해시는 주어진 출력에 맞는 입력을 찾거나 충돌 쌍을 찾는 계산이 어렵도록 설계한다. 단순히 값이 고르게 퍼지거나 계산이 빠르다는 특성만으로 이런 안전성이 확보되지는 않는다.

보안 목적에서는 용도에 맞는 검증된 구성과 알고리즘을 사용해야 한다. 빠른 일반 해시를 한 번 계산하는 방식과 비밀번호를 보호하기 위한 전용 처리 방식은 구분한다.

암호화와 다른 점

암호화는 적절한 키로 복호화하여 내용을 되찾는 기능을 갖는다. 해시는 일반적으로 원문 복원을 위한 역변환을 제공하지 않는다. 출력만 안다고 원본을 항상 알아낼 수 있는 것도 아니지만, 쉽게 추측할 수 있는 후보는 직접 해시하여 비교할 수 있다.

관련 문서

자료 구조 / 암호화 / 블록체인 / 알고리즘