해시 함수 (Hash Function)

컴퓨터과학·AI
한 줄 정의: 임의 길이의 입력 데이터를 고정된 길이의 짧은 값(해시값)으로 변환하는 함수로, 같은 입력은 항상 같은 해시값을 내지만 원래 입력을 역으로 알아내기는 어렵게 설계된다.

쉽게 풀면

해시 함수는 아무리 긴 데이터라도 정해진 길이의 짧은 지문 같은 값으로 바꿔주는 함수이다. 같은 데이터를 넣으면 항상 같은 결과가 나오지만, 데이터가 아주 조금만 달라져도 결과값은 완전히 달라진다. 이런 성질 덕분에 두 데이터가 같은지 빠르게 비교하거나(중복 파일 검사), 데이터가 중간에 변조되지 않았는지 확인하거나, 비밀번호를 원문 그대로 저장하지 않고 안전하게 저장하는 데 널리 쓰인다.

왜 중요한가

해시 함수는 데이터의 무결성 검증, 효율적인 검색, 암호학적 보안에 이르기까지 광범위하게 쓰이는 기초 도구이기 때문에, 컴퓨터과학의 여러 세부 분야 논문에서 방법론의 근간으로 자주 등장합니다. 데이터베이스와 자료구조 연구에서는 빠른 검색을 위한 색인 도구로, 보안 연구에서는 비밀번호 저장과 디지털 서명의 핵심 요소로, 블록체인 연구에서는 데이터 변조 방지의 기반 기술로 각각 다른 역할을 수행하며 폭넓게 인용됩니다.

논문에서는 이렇게 쓰입니다

"데이터셋 내 중복 이미지는 지각적 해시 함수를 사용해 탐지 및 제거되었다."

이미지마다 고유한 해시값을 계산해서, 같은 해시값을 가진 이미지끼리 중복으로 판단해 제거했다는 뜻이다.

"사용자 비밀번호는 원문 대신 솔트를 추가한 암호학적 해시 함수의 결과값으로 데이터베이스에 저장된다."

비밀번호 자체를 저장하지 않고, 해시 함수로 변환된 값만 저장해 데이터가 유출되더라도 원문을 알아내기 어렵게 만든다는 보안 분야의 활용 사례이다.

"블록체인의 각 블록은 이전 블록의 해시값을 포함함으로써 데이터가 변조되면 이후 모든 블록의 해시값이 연쇄적으로 달라지도록 설계되었다."

해시 함수의 민감성(입력이 조금만 바뀌어도 출력이 완전히 달라지는 성질)을 이용해 데이터 변조를 쉽게 탐지할 수 있게 만든 구조를 설명한다.

조금 더 깊게 보면

해시 함수는 용도에 따라 요구되는 성질이 다릅니다. 자료구조에서 쓰이는 해시 함수는 속도와 고른 분포가 중요한 반면, 암호학적 해시 함수(SHA 계열 등)는 여기에 더해 원상 저항성(해시값에서 원본을 역산하기 어려움)과 충돌 저항성(같은 해시값을 내는 서로 다른 입력을 찾기 어려움) 같은 보안 요구사항을 만족해야 합니다. 또한 이미지나 오디오처럼 조금만 달라도 사실상 같은 데이터로 취급하고 싶을 때는 입력이 비슷하면 해시값도 비슷하게 나오는 지각적 해시(perceptual hash)를 쓰는 등, 목적에 따라 서로 다른 계열의 해시 함수가 선택된다는 점이 논문에서 자주 논의됩니다.

주의할 점

해시값이 같다고 반드시 원본 데이터가 완전히 같다는 보장은 이론적으로 100%는 아니며(해시 충돌 가능성), 용도에 맞는 해시 함수의 특성을 이해하고 사용해야 한다.

관련 용어