Dreamhack | 강의 | Dreamhack
dreamhack.io
해시 함수(Hash Function)
– 실습과 함께 배우는 데이터 무결성의 핵심 개념 –
안녕하세요! 이번 포스팅에서는 **디지털 포렌식과 보안 분야에서 아주 중요한 ‘해시 함수(Hash Function)’**에 대해 알아보겠습니다. HashCalc 프로그램을 통해 직접 실습하면서 배워보고, PowerShell을 이용한 고급 활용법까지 소개할게요 :)
해시 함수란?
해시 함수(Hash Function)는 입력된 데이터의 길이와 상관없이, 항상 고정된 길이의 값(해시 값)을 출력해주는 함수입니다.
예를 들어, “Hello”나 “안녕하세요”처럼 짧은 문장을 넣든, 아주 긴 텍스트 파일을 넣든, 항상 같은 길이의 해시 값이 나와요. 이 출력 값을 보통 **해시(Hash) 또는 다이제스트(Digest)**라고 부릅니다.
실습 도구 – HashCalc 프로그램 설치 및 실행
HashCalc는 다양한 해시 함수를 간편하게 테스트해볼 수 있는 유틸리티입니다.
[HashCalc 다운로드 링크] (※링크는 본문에 삽입)
설치 후 실행하면 아래와 같은 화면을 볼 수 있습니다.
- Data Format: 입력 방식 선택 (Text, File, Hex)
- Hash Function 체크박스: MD5, SHA1, SHA256 등 다양한 해시 알고리즘 선택 가능
- Calculate 버튼: 해시 계산 실행
눈사태 효과(Avalanche Effect) 실험
입력 데이터에 단 한 글자(!)만 추가해도, 해시 값은 전혀 다른 값으로 바뀌게 됩니다.
이런 현상을 눈사태 효과라고 부르며, 해시 함수의 핵심 특성 중 하나입니다.
알고리즘 데이터 변경 전 해시 데이터 변경 후 해시
| MD5 | eecdeb...d12 | bb5b96...100 |
| SHA1 | f582b6...bf1 | e47efd...6bd |
| SHA256 | 48bc02...6df | 78df38...27b |
→ 단 하나의 느낌표만 추가했을 뿐인데, 결과는 완전히 달라졌죠?
이런 특성 덕분에 해시 값은 데이터 위변조 여부를 확인하는 데 유용합니다.
해시 계산 실습 (Text vs File 비교)
같은 데이터를 텍스트 입력과 파일 입력으로 넣어도 해시 값이 다를 수 있습니다.
예를 들어 HxD 에디터로 입력한 내용을 파일로 저장한 뒤, HashCalc에서 각각 비교해보세요.
- Text 입력: 순수 문자열 데이터
- File 입력: 파일 내부에 포함된 줄바꿈 문자, EOF 등의 정보까지 포함됨
→ 완전히 같은 문자라도, 저장 방식이 다르면 해시 값도 달라질 수 있습니다.
PowerShell로 해시 계산하기 (고급 활용법)
복잡한 데이터나 여러 파일을 동시에 해시해야 할 때는 PowerShell을 사용하는 게 더 효율적입니다.
Get-FileHash <파일경로> -Algorithm <해시알고리즘> | Format-List
예시:
Get-FileHash report.docx -Algorithm SHA256 | Format-List
여러 파일의 해시값을 한 번에 계산하고 싶다면 와일드카드(*)를 사용하세요:
Get-FileHash *.txt -Algorithm SHA256
해시 함수의 종류와 특징 요약
해시 함수 출력 길이 특징
| MD5 | 128비트 (16바이트) | 취약. 사용 지양 |
| SHA1 | 160비트 (20바이트) | 취약. 사용 지양 |
| SHA256 | 256비트 (32바이트) | 안전. 권장 |
| SHA512 | 512비트 (64바이트) | 매우 안전. 권장 |
→ MD5, SHA1은 이미 충돌이 발견된 바 있어, 보안이나 법적 증거에는 SHA256 이상을 사용하는 것이 좋습니다.
'드림핵' 카테고리의 다른 글
| [드림핵] 윈도우 포렌식 - 레지스트리, find the USB, Autoruns (0) | 2025.05.20 |
|---|---|
| [드림핵] 파일 시스템 + 실습 (2) | 2025.05.13 |
| [드림핵] 디지털 데이터와 디지털 장치 (6) | 2025.04.08 |
| [드림핵] 디지털 증거-2 (메모리 덤프) (0) | 2025.04.01 |
| [드림핵] 디지털 증거-1 (디스크 이미징) (0) | 2025.04.01 |