imredzZ

[해시 함수] 해시 함수와 무결성 본문

카테고리 없음

[해시 함수] 해시 함수와 무결성

hhaye_ 2024. 9. 8. 01:33

1. 해시 함수 (Hash Function)

  • 해시 함수란, 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 것을 의미함(디지털 증거 수집편 참고하기!)
  • 아무리 크거나 작은 데이터를 입력 값으로 넣어도 정해진 길이의 데이터가 출력 값으로 나오게 되고, 이렇게 출력된 값을 해시 값 혹은 해시라고 부름
  • 입력 값에 주어진 작은 변화가 출력 값에서는 굉장히 큰 차이를 보이기 때문에, 디지털 포렌식에서 증거의 위변조 여부를 파악하기 위해 정말 많이 해시 함수가 사용된다! = 데이터의 무결성을 검증한다!

 

2. 해시 함수 확인해보기

 

 

이렇게 메모장에 해두고 cmd에서 다음과 같이 입력해준다.

certutil -hashfile <파일명> <계산하고자 하는 해시 알고리즘>

 

 

그러면 이렇게 나오는 것을 알 수 있다!

 

hash.txt로 저장된 파일에 느낌표 하나를 붙인 뒤, 새로 저장해서 다시 한 번 MD5 알고리즘을 구해보도록 하자. 무결성이 이렇게 훼손이 되면, 실제로 해시값이 많이 바뀔까?

 

해시 값이 바뀐 것을 볼 수 있다. 이렇게 디지털 포렌식 절차가 시작이 되면, 수집하자마자 해시 값을 계산을 하고, 법정 제출 할 때도 계산을 해서 해시 값이 동일하다는 것을 증빙해서 무결성을 지킬 수 있다. 보통은 압수되는 증거물의 용량이 매우 크고 방대하기 때문에 분석하는 프로그램이나 툴로 자동으로 해시 값을 계산하고 보고서에 기입하는 형식으로 절차가 진행이 된다. MD5는 예시로 든 것이고, SHA1이나 SHA256, SHA512도 많이 사용된다.

 

 

3. MD5

  • 가장 간단하면서도 많이 사용되는 함수이다. 실제 해시 값을 계산해보면, 타 해시 함수들에 비해 가장 짧은 값이 나오는 것을 확인할 수 있고, 해시 함수에서 결과 값의 길이가 짧다는 것은 그만큼 안정성이 떨어짐을 의미하고, 충돌 저항성이 낮다고도 표현할 수 있다. 
  • 출력값 : 128비트 (16바이트)

4. SHA 

  • 현재 디지털 포렌식 증거 분석 시, 가장 많이 사용되고 있는 해시 함수로, SHA-1 계열과 SHA-2 계열로 크게 나눠볼수 있다. SHA-224, 256, 384, 512로 출력 길이에 따라 분류가 된다.