보안/암호학 / / 2025. 1. 11. 04:26

해시 함수란? 원리, 특징, 활용 사례까지

1. 해시 함수란 무엇인가?

해시 함수(Hash Function)는 임의의 길이의 입력 데이터를 고정된 길이의 출력 값으로 변환하는 수학적 알고리즘이다. 특정 수학적 알고리즘을 사용하여 input으로 들어온 데이터를 압축하고 변환한다. 이 과정은 단방향(입력값 → 출력값)으로 이루어지며, 출력값에서 원래 입력 데이터인 입력값을 복원할 수 없다는 대표적인 특징을 가지고 있다. 대표적인 해시 함수로는 SHA 시리즈와 MD5 등이 있다.

 

2. SHA-256 예시를 통한 해시 함수 설명

앞서 설명한 글로는 이해하기가 쉽지 않기 때문에 자주 사용되는 'SHA-256'을 사용하여 예시를 통한 설명을 하려고 한다. #링크에서 직접 실습해 볼 수 있다.

 

< 해시 함수 >

 

해시 함수에 입력값을 넣으면 다음과 같은 출력값을 획득할 수 있다.

 

입력값 (UTF-8) 출력값 (Hex)
안녕하세요 2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4
안녕하세요. 8b118d6741f7cfa1a7ee246d0dda39f2f00bf9fd207b4e6c7fad87a15434a513
안녕하세요. 해시 함수는 뭘까요? f03a13d115c5640f0992cc36961a03fcc1d484e3e8ab1ff0a5233ef3cf418e98

 

3번에 걸쳐서 해시 함수를 실행하여 위와 같은 결과를 얻었다. 같은 글자에 마침표만 추가하여도 완전히 다른 결과를 얻어낼 수도 있고, 출력값의 글자수가 항상 동일하다는 특이점을 확인할 수 있다.

 

3. 해시 함수의 주요 특징

  • 어떤 입력값을 넣든지 관계없이 출력값은 항상 고정된 길이의 데이터가 나온다.
'항상 고정된 길이의 데이터가 출력된다.'라는 의미는 SHA-256 해시 함수를 실행했을 때 출력값이 모두 64글자로 출력된다는 뜻이다. SHA-256의 출력값이 64글자인 이유는 256bit를 4bit씩 나누어 16진수로 표현한 결과이기 때문이다. ( 4 × 64 = 256 )

 

  • 같은 입력값을 넣으면 항상 동일한 출력값이 나온다.
닝닝이가 '안녕하세요'를 입력하든 지젤이 '안녕하세요'를 입력하든 해시 함수의 결과는 모두 '2c68318e352971...'로 동일하다는 의미이다.

 

  • 출력값을 보고 입력값을 유추하기 어렵다.
해커가 출력값을 탈취하더라도 해시 함수를 취하기 전인 입력값을 찾아내기가 매우 어렵다. 이를 '일방향성' 혹은 '단방향성'을 지닌다고 표현한다.

 

  • 같은 출력값을 가지는 입력값을 찾아내기 매우 어렵다.
같은 출력값을 가지는 입력값이 존재하기 할터이나 그 값을 찾아내기가 매우 어렵다. 지속적으로 입력값을 변경하여 넣어보며 같은 출력값을 찾아내야 하기 때문이다. 이를 '충돌 저항성'을 지닌다고 표현한다.

 

4. 해시 함수를 활용한 무결성 검증 과정

위에서 살펴보았듯이 해시 함수의 특징이 명확하기 때문에 다양한 방면에서 활용가능하다. 다음은 CMS(Cryptographic Message Syntax) 중 DigestedData를 활용한 무결성 확인 과정을 설명한 예시이다. 이를 통해 해시 함수가 어떤 방식으로 사용되는지 확인할 수 있다.

 

< 해시 함수를 활용한 무결성 확인 : DigestedData >

 

  1. 닝닝이는 메시지를 작성한다.
  2. 닝닝이는 메시지를 해시 함수에 넣어 해시 값 A를 생성한다.
  3. 닝닝이는 다음의 데이터를 묶어 DigestedData를 생성한다.
    • 메시지
    • 해시 값 A
    • 사용된 해시 알고리즘 정보
  4. 닝닝이는 지젤에게 DiestedData를 전송한다.
  5. 지젤은 동봉된 DiestedData에서 메시지를 추출한다.
  6. 지젤은 추출한 메시지를 같은 해시 함수에 넣어 해시 값 B를 생성한다.
  7. 지젤은 전달받은 해시 값 A와 자신이 생성한 해시 값 B를 비교하여 일치여부를 확인한다.

 

해시 값이 일치한다면, 메시지의 변조가 없음을 확인할 수 있다.

 

5. 마무리

이번 글을 정리하면 다음과 같다.

 

  • 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수를 해시 함수라고 한다.
  • 해시 함수는 일방향성, 충돌저항성 등의 특징을 가지고 있다. 따라서 무결성 확인 등에 많이 활용된다.

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유