[정보보안기사 필기 요약] 해시함수
해시함수와 응용
1) 일방향 해시함수
- One-Wayness-Function으로 무결성체크에 이용되며, 주로 포렌식에 사용
- 임의의 길이를 갖는 메시지를 고정된 길이의 해시값, 또는 해시함수로 출력하는 함수
- 고정 길이, 고속 계산
- 메시지가 다르면 해시값 다름
12345/6789 = 1.18...XXXX -> 앞에 버리고 XXXX만 사용
12348/6789 = 1.18...XXXX -> 앞에 버리고 XXXX만 사용
→ 앞의 내용을 버리기때문에 역방향 계산 불가, 복호화 불가능
2) 해시함수의 보안 요구사항 ★5
프리이미지 저항성 (역상 저항성) |
제2프리이미지 저항성 (두번째 역상 저항성, 약한 충돌 내성) |
충돌 저항성 (강한 충돌 내성) |
|
설명 | y=h(x)를 만족하는 x값을 찾는 것이 계산적으로 불가능 | h(x1) = h(x2), x1 != x2를 만족하는 다른 입력 값 x2를 찾는것이 계산적으로 불가능 | h(x1) = h(x2)을 만족하는 임의의 두 입력값 x1, x2를 찾는 것이 계산적으로 불가능 |
공격 난이도 | 2 ⁿ | 2 ⁿ | 2 (n/2)승 |
-> 두번째 역상 저항성을 깨는 방법 : 무차별 공격
-> 충돌 저항성을 깨는 방법 : 생일 공격 (생일이 동일한 두명이 50%인 확률은 최소 23명이 필요함)
3) 주요 해시 알고리즘
MD5 | SHA-1 | RIPEMD-160 | |
MD길이 | 128bit | 160bit | 160bit |
블록크기 | 512bit | 512bit | 512bit |
단계수 | 64(16*4) | 80(20*4) | 16(16*5병행라운드) |
최대 메세지 길이 | 무한 | (2의 64승)-1bit | (2의 64승)-1bit |
4) SHA 해시 알고리즘
SHA-1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 | |
MD길이 | 160 | 224 | 256 | 384 | 512 |
최대 메시지 길이 | (2의 64승)-1bit | (2의 64승)-1bit | (2의 64승)-1bit | (2의 128승)-1bit | (2의 128승)-1bit |
블록크기 | 512 | 512 | 512 | 1024 | 1024 |
워드길이 | 32 | 32 | 32 | 64 | 64 |
단계 수 | 80 | 64 | 64 | 80 | 80 |
SHA-1,2 : 반복 구조
SHA-3 : 스펀지 구조+듀플렉스 구조
(AES와 같은 경쟁방식의 표준화)
5) 변경 감지 코드 (MDC, Modification Detection Code) ★5
6) 메시지 인증 코드 (MAC, Message Authentication Code) ★5
7) MDC, MAC, 전자서명 비교
MDC | 해시함수 | 무결성 |
MAC | 해시함수 + 대칭키 | 무결성 + 인증 |
전자서명 | 해시함수 + 비대칭키 | 무결성 + 인증 + 부인방지 |
8) MAC의 종류 ★5
MAC의 종류
① 축소 MAC
해시가 두 단계로 이루어짐
1단계 : 키에 메시지를 이어 붙이고 해시하여 중단 단계의 다이제스트 생성
2단계 : 키의 중간단계 다이제스트를 이어붙이고 최종적인 다이제스트 생성
② HMAC
SHA-1과 같은 일방향 해시함수를 이용하여 메시지 인증코드를 구성하는 방법
TLS, IPSec, SET 프로토콜에서 사용
③ CBC-MAC -> 블록암호
대칭키 암호시스템에 대한 암호 블록체인(CBC)모드와 유사
대칭키 암호를 N번 사용하여 N개의 평문 블록에서 하나의 MAC생성
MAC에 대한 공격 -> 복사한 값은 구별하기 힘들다
① 재전송 공격
공격자가 메시지와 메시지 인증코드를 스니핑하여 수신자에게 전달하더라도 수신자는 이를 구분할 수 없음
막을 수 있는 방법 : 순서번호, 타임스탬프, 비표(난수), 시도/응답(비동기식)
② 제3자에 대한 증명
MAC은 공유키(대칭키)를 사용하기에 MAC값을 계산한 것은 서로 상대방이라고 말할 수 있음
제 3자에게 MAC값을 계산한 것은 자신이 아니라고 증명할 방법이 없음
증명할 수 있는 방법 : 전자서명
③ 부인 방지
MAC에서는 송수신자 중 어느 쪽 주장이 맞는지를 판단할 수 없음
증명할 수 있는 방법 : 전자서명