
해시함수는 임의의 길이를 가진 데이터를 고정된 길이의 값(해시값)으로 변환하는 함수입니다. 해시함수는 단방향 암호화에 이용되며, 안전한 해시함수가 되려면 역상저항성, 제2역상저항성, 충돌저항성을 만족해야 합니다.
아래에서는 안전한 해시함수가 되기위한 3가지 특성에 대해 알아봅니다.
[ Contents ]
1. 역상 저항성 (Preimage Resistance)

해시값 h가 주어졌을 때, H(x) = h를 만족하는 x를 역으로 계산하기가 현실적으로 불가능
해시값을 통해 본래의 값을 유추할 수 없는 특성이 '역상 저항성'이며, 쉽게 일방향성(One-wayness)이라고도 부릅니다.
이렇듯 단방향 암호화만 가능하며, 복호화가 불가능하기 때문에 비밀번호를 저장할 때 해시함수를 주로 이용합니다. 그래서 아이디와 달리, 비밀번호는 새로 초기화하는 방법으로 사용자에게 안내하죠.
2. 제2 역상 저항성 (Second Preimage Resistance)

x가 주어졌을 때, H(x) = H(x')인 다른 x'을 찾기가 불가능
f(x)가 x^2이라고 하고, x가 1이라고 하면 f(x) = f(x')인 x'은 -1입니다. 1을 입력해도 1이 나오고, -1을 입력해도 1이 나오죠.
이렇듯 해시함수도 간혹 입력값 x는 다르나, 출력값이 같은 경우가 있습니다. 이를 해시 충돌이라고 합니다. 만약 전자서명에서 제 서명값의 해시값과, 기관장의 해시값이 같다면 위조가 가능하겠죠.
이를 방지한 특성이 '제2 역상 저항성'입니다.
3. 충돌 저항성 (Collision Resistance)

H(x) = H(x')인 쌍을 만들기가 불가능
충돌 저항성은 애초에 해시가 충돌나지 않도록 방지한 특성입니다. 해시값을 충분히 길게 만들어서 충돌나는 일이 없도록 방지합니다. 그래서 요즘은 SHA-256, SHA-512 등으로 점점 해시값이 길어지고 있습니다.
SHA-256은 해시 길이가 256bit인 해시함수 알고리즘입니다.

해시함수의 3가지 특성을 밴다이어그램으로 표현하면 위와 같습니다.

공격자가 해시 충돌을 찾기 위해 필요한 연산횟수는 해시 길이(n)에 따라 좌우됩니다. 해시 길이를 늘리면 필요 연산횟수가 기하급수적으로 늘어나므로, 기본적으로 해시 길이를 늘려서 제2역상저항성과 충돌저항성을 강화합니다.

'CS > 보안' 카테고리의 다른 글
| [보안] OSCP(Online Certificate Status Protocol) 개념 및 동작방식 알아보기 (0) | 2026.05.23 |
|---|---|
| [보안] ISMS/ISMS-P 인증체계 개념 및 인증기준, 인증대상, 절차 알아보기 (0) | 2026.05.19 |
| [보안] CSRF(Cross-Site Request Forgery, 교차 사이트 요청 위조) 보안 취약점 정의, XSS와의 차이점 (0) | 2026.05.16 |
| [보안] AI DLP란? AI 데이터 유출 방지 솔루션 작동방식과 한계점 알아보기 (0) | 2026.02.26 |
| [보안] NAC 네트워크 접근제어 개념 및 주요 기능, 특징 (1) | 2025.09.14 |
댓글