Replicated

암호학적 해시 함수(Cryptographic Hash Function), MAC(Message Authentication Code) - HMAC, CMAC 본문

소프트웨어 보안개발방법론

암호학적 해시 함수(Cryptographic Hash Function), MAC(Message Authentication Code) - HMAC, CMAC

라구넹 2025. 4. 19. 19:32

해시 함수

- 가변 길이 입력 -> 고정 길이 출력

- 적은 입력 값 변화 -> 완전히 다른 출력값

- 단방향 함수 (One-way function)

 

빠른 검색을 위한 인덱싱으로 사용

- 충돌 가능성 있음

- Chaining 기법으로 보완

 

파일 무결성 검증에 사용

 

 

암호학적 해시 함수

h(M) = y

- 암호학적 해시 함수 h에 M을 입력하면 해시 값 y 출력

- 부분적 병렬 처리 가능

 

특성

- 역상 저항성

    - 해시 값 y를 이용해 입력 값 M 계산 불가

    - == h(M) = y인 y가 주어졌을 때 M을 도출하기 어려움

- 제2 역상 저항성

    - 입력값 M, 해시값 y를 이용해 동일한 해시값 y를 출력하는 입력값 M'을 계산할 수 없음

    -  == h(M) = y일때 동일한 해시값 y를 갖는 M'을 도출하기 어려움

- 충돌 저항성

    - 동일한 해시값 y를 갖는 서로 다른 입력 값 2개(M, M')를 계산할 수 없음

    - == 동일한 해시 값을 갖는 임의의 서로 다른 입력값을 도출하기 어려움

 

범위

역상 저항성 > 제2 역상 저항성 > 충돌 저항성

 

 

암호학적 해시함수 용도

패스워드 저장

- 솔트값 더해서 해시 돌려서 저장하기

메시지(데이터) 무결성

- MDC(Modification Detection Code), 메시지 해시 돌리고 변조에 강한 채널로 전송.. * 키 안 씀

 

 

MAC (Message Authentication Code)

- 메시지에 대한 무결성 강화(변조확인)

- 비밀키와 메시지 M을 이용하여 고정 길이 인증값을 출력

- 수신자와 송신자가 소유한 비밀키를 사용

- 메시지 인증 -> 송신자 확인 가능

 

HMAC(Hash based MAC)

- 암호학적 해시 함수 기반의 MAC

- 2번의 해시 연산 수행

 

* n: HMAC의 크기

 

1. 비밀키 준비

- 최소 n비트 이상 (해시함수 출력 길이)

- 키가 해시 블록 크기(b비트)보다 짧으면 패딩

 

2. ipad, opad

ipad = 00110110 시퀀스 (0x36을 b 바이트만큼 반복)

opad = 01011100 시퀀스 (0x5C를 b 바이트만큼 반복)

 

3. 연산

1. 내부 해시

Inner = H( (K ⊕ ipad) || M )

- b비트 패딩된 키랑 ipad XOR하고, 메시지 앞에다가 붙이고, 해시

 

2. 외부 해시

HMAC(K, M) = H( (K ⊕ opad) || Inner )

- inner 결과(intermediate HMAC)를 b비트로 패딩

- b비트 패딩된 키랑 opad XOR, inner결과 이어붙이고, 해시

- n비트짜리 해시 결과

 

 

CMAC (Ciper based MAC)

- 블록 암호 기반의 MAC

- 블록암호 CBC와 유사

- 각 메시지 블록마다 이전 암호문 XOR하고 키를 써서 인크립션

- 왼쪽부터 n비트 선택 -> n-bit CMAC