2025. 2. 4. 11:08ㆍNetwork 공부
데이터 무결성을보장하고 인증을 강화하기 위해 사용되는 암호화 함수
임의의 길이를 가진 입력 데이터를 고정된 길이의 값(해시 값, 해시 다이제스트)으로 변환하는 함수. 이 과정은 단방향(one-way) 변환이기 때문에, 원래 데이터를 해시 값에서 역산하는 것은 거의 불가능하다.
해시 함수의 특징
- 입력 값이 같으면 출력 값도 항상 같음 (Deterministic)
- 출력 값은 고정된 길이를 가짐
- 작은 변화에도 완전히 다른 값이 생성됨 (Avalanche Effect)
- 단방향성 (해시 값을 역으로 변환할 수 없음)
- 충돌 회피 (서로 다른 입력이 같은 해시 값을 갖는 경우가 드물어야 함)
해시 함수의 종류
1. Cryptographic Hash Function
데이터 무결성 보장과 디지털 서명, 비밀번호 저장 등에 사용되며, 보안이 중요한 경우에 사용되는 해시 함수
Whirlpool 512 비트 해시 값 / AES 보안 강도와 유사함
2. Non - Cryptographic Hash Function
보안보다는 빠른 검색, 데이터 검증 및 로드 밸런싱 등에 사용되는 해시 함수
CRC32 (Cyclic Redundancy Check)
파일 오류 검출에 주로 사용됨.
MurmurHash
빠르고 충돌률이 낮아, 데이터베이스 및 검색 엔진에서 많이 사용됨.
FNV-1, FNV-1a
단순하면서도 효율적이라 해시 테이블에서 자주 사용됨.
해시 함수의 종류
1) 데이터 무결성 검사
전송된 데이터가 손상되지 않았는 지 확인할 때 사용
파일 다운로드 시 제공되는 해시 값을 비교해 파일 변조 가능성을 검증
2) 비밀번호 저장
비밀번호를 해시 값으로 저장하여 직접적인 노출 방지
예) 웹사이트의 로그인 시스템에서 비밀번호를 직접 저장하지 않고 bcrypt, PBKDF2, Argon2 같은 키 도출 함수로 저장.
3) 디지털 서명 및 인증
전자 서명(디지털 서명)에서 원본 데이터의 해시 값을 서명하여 무결성을 보장.
예) SSH 키, TLS/SSL 인증서, PGP 서명 등에서 사용
4) 블록 체인
각 블록의 데이터는 해시 값을 기반으로 연결되어 있음.
비트코인과 이더리움 같은 블록체인은 SHA-256 또는 Keccak-256 해시 함수를 사용
5) 데이터 베이스 및 검색 엔진
대용량 데이터의 빠른 검색을 위해 해시 인덱싱 사용.
해시 테이블을 이용한 효율적인 키-값 검색.
Hash Collision - 해시 충돌
해시 충돌이란 서로 다른 두 개의 입력값이 같은 해시 값을 가지는 상황을 의미한다.
해시 함수는 무한한 입력 값을 유한한 크기 출력으로 변환하기 때문에 이론적으로 충돌이 발생할 수 밖에 없다.
예시:
hash("hello") → aaf4c61d...
hash("h3llo") → aaf4c61d... (충돌 발생!)
해시 충돌의 종류
1) Birthday Attack (생일 공격)
해시 충돌을 찾는 데 걸리는 시간은 단순히 가능한 해시 값의 개수(N)와 같지 않고, √N(루트 N) 정도의 연산만 필요해.
이를 Birthday Paradox(생일 역설)라고 부르며, 같은 해시 값을 가지는 두 개의 입력을 찾는 데 사용됨.
예를 들어, SHA-256 해시 함수의 경우 2^128번의 연산만 수행하면 충돌을 찾을 확률이 매우 높아짐. (2^256이 아닌 2^128)
ex) 교실에 23명의 학생이 있을 때, 생일이 같은 두 사람이 존재할 확률이 약 **50%**가 되는 현상과 비슷한 원리
2) Preimage Attack (원상 이미지 공격)
특정 해시 값(h)이 주어졌을 때, 그 해시 값을 만들어내는 입력값(m)을 찾는 공격.
즉, 해시 함수의 역함수를 찾는 것과 같지만, 대부분의 강력한 해시 함수는 단방향(one-way) 특성을 가지기 때문에 현실적으로 불가능에 가까움.
3) Second Preimage Attack (제2 원상 이미지 공격)
특정 입력값(m1)이 주어졌을 때, 동일한 해시 값을 가지는 또 다른 입력값(m2)을 찾는 공격.
즉, H(m1) = H(m2)이 되는 m2를 찾는 것이 목표.
이 공격이 성공하면, 디지털 서명을 위조하거나 데이터 위변조가 가능해짐.
4) Collision Attack (충돌 공격)
서로 아무 입력값이나 두 개 찾아서 같은 해시 값을 가지는 경우를 찾는 공격.
보통 Birthday Attack을 이용하여 실행됨.
해시 충돌이 보안에 미치는 영향
해시 충돌이 발생하면, 해시를 이용한 무결성 검증, 디지털 서명, 인증 등의 보안 기능이 무력화될 수 있다.
1. 디지털 서명 공격
악의적인 공격자가 원본 문서(m1)와 동일한 해시 값을 가지는 가짜 문서(m2)를 생성하면, 서명을 위조할 수 있음.
예를 들어, 정부 문서의 디지털 서명을 사용하여 위조된 문서를 인증하는 공격이 가능해짐.
2. 파일 위변조
파일의 해시 값이 동일하면 사용자는 정상적인 파일이라고 믿을 수 있음.
공격자가 같은 해시 값을 가지는 악성 파일을 만들어 배포하면, 사용자가 이를 신뢰하고 실행할 위험이 있음.
3. 인증 시스템 공격
해시 기반 비밀번호 저장 시스템에서 충돌이 발생하면, 공격자는 다른 입력값을 이용해 동일한 인증을 받을 수 있음.
'Network 공부' 카테고리의 다른 글
Static Request vs Dynamic Request (1) | 2025.02.04 |
---|---|
SSH(Secure Shell) (0) | 2025.02.04 |
Proxy Server (0) | 2025.02.04 |
WordPress / Web Server / PHP (0) | 2025.01.31 |
API / RESTful API / GraphQL (0) | 2025.01.28 |