오늘은 HMAC에 대해서 공부를 하였다.
다행히도 HMAC 알고리즘이 머리 아프게 어렵지 않았다.
그래도 하루에 알고리즘 2개를 공부하기는 무리인 것 같아서, 3.3 메시지 인증 코드 단원을 쪼개서 정리하기로 했다.
올해 안에 이 책을 끝내는 것은 아무래도 무리인 듯하다.
Chapter 03. 공개키 암호와 메시지 인증 - 3.3 메시지 인증 코드
□ 암호적 해시함수의 장점
- DES에 비해 빠르게 실행 가능
- 코드를 쉽게 구할 수 있음
- 수출 규제가 없음
-> SHA-1은 비밀키를 사용하지 않으나, 비밀키를 사용하는 HASH함수를 위해서 HMAC이 탄생
-> HMAC은 전송계층 보안(TLS), 안전한 전자 결제(SET) 등 인터넷 프로토콜에서 사용
□ HMAC 설계 목표 (RFC에서 열거)
- 수정하지 않고 쓸 수 있는 해시함수를 만든다. 특히 SW에서 잘 돌아가고 코드를 무료로 제공하고 널리 쓰일 수 있도록 한다.
- 더 빠르고 안전한 해시함수가 있거나, 필요하다면 기존의 해시함수를 쉽게 바꿀 수 있도록 한다.
- 심각하게 기능저하를 유발하지 않고 해시함수의 원래 성능을 유지한다.
- 키를 쉽게 다룬다.
- 내장된 해시함수에 대해 인증 메커니즘 강도에 대해 암호해독을 확실히 파악할 수 있다.
□ HMAC 알고리즘
HMAC(K,M) = H[K'⊕opad || H[K'⊕ipad||M]] |
- H : 내장된 해시함수
- M : HMAC의 입력 메시지
- Y_i : M의 i번째 블록
- L : M의 블록 수
- b : 블록의 비트 수
- n : 내장된 해시함수에 의해 생성된 해시 코드의 길이
- K : 비밀키
- K' : K의 왼쪽에 0을 붙여서 길이가 b비트가 되도록 한 것
- ipad : 00110110를 b/8번 반복한 2진 수열
- opad : 01011100를 b/8번 반복한 2진 수열
- b-비트 스트링 K'를 만들기 위해 K의 왼쪽에 0을 붙인다.
- b비트 블록 S_i를 생성하기 위해 K'와 ipad를 XOR 한다.
- S_i에 M을 붙인다.
- 3단계에서 생성된 스트림에 H를 적요한다.
- b비트 블록 S_0를 생성하기 위해 K'와 opad를 XOR한다.
- 4단계에서 얻은 해시 결과를 S_0에 붙인다.
- 6단계에서 생성된 스트림에 H를 적용해서 결과를 얻는다.
'네트워크보안에센셜' 카테고리의 다른 글
Chapter 03. 공개키 암호와 메시지 인증 - 3.3 메시지 인증 코드(2) - 블록암호기반 MAC (1) | 2020.10.12 |
---|---|
네트워크보안에센셜Chapter 03. 공개키 암호와 메시지 인증 - 3.2 안전 해시함수(2) (0) | 2020.10.04 |
Chapter 03. 공개키 암호와 메시지 인증 - 3.2 안전 해시함수(1) (0) | 2020.09.22 |
Chapter 03. 공개키 암호와 메시지 인증 - 3.1 메시지 인증 방법 (0) | 2020.09.19 |
Chapter 02. 대칭 암호와 메시지 기밀성 - 복습문제 (0) | 2020.09.15 |