오늘은 메시지 인증코드 공부 두 번째 포스팅이다.
오늘 포스팅은 블록암호기반 MAC에 관한 내용이다.
그럼 오늘 포스팅 시작합니다.
Chapter 03. 공개키 암호와 메시지 인증 - 3.3 메시지 인증 코드(2) - 블록 암호기반 MAC
□ 암호 기반 메시지 인증코드(CMAC)
- AES 또는 3DES 용
b : 블록길이( AES : b=128, 3DES : b=64)
n : 블록 개수 (n x b = 메시지길이)
M_1, M_2, M_3, ..... , M_n : 메시지 블록 ( 메시지 길이가 b의 정수배가 아닐 경우 패딩 비트를 붙임)
K : k비트 암호키( AES : k=128 or 192 or 256, 3DES : k = 112 or 168 )
K' : n비트 암호키
T : 메시지 인증코드 (tag)
Tlen : T의 비트 길이
MSB_s(X) : 비트열 X의 왼쪽부터 s개 비트
<CMAC>
C_1 = E(K, M_1)
C_2 = E(K, [M_2⊕C_2])
.
.
.
C_n = E(K, [M_n⊕C_n-1])
T = MSB_Tlen(C_n)
□ 암호블록체인 카운터 - 메시지 인증 코드(CCM : Counter with Cipher Block Chaining-Message Authentication Code)
- 인증된 암호화 모드 : 기밀성 + 무결성(인증) 동시에 제공
- AES + CTR + CMAC
<CCM>
P : 평문 데이터 블록 (인증하고 암호화할 예정)
A : 인증은 하지만 암호화 하지 않을 데이터 (ex. 프로토콜 헤더 : 평문 상태로 전달되어야 하나 인증은 받아야 함)
N : 페이로드와 유관한 데이터에 할당되는 비표, 재전송 공격 방지용, 시간에 따라 값이 달라짐
<a. 인증 과정 설명>
- 인증 과정에서 입력값으로 비표(N), 유관데이터(A), 평문(P)이 사용됨
- 입력값을 블록으로 나눈다.(B_0, B_1, ...., B_r)
- 첫 번째 블록에는 비표 외의 요소 N,A,P의 길이를 나타내는 형식 비트가 추가됨
- 그 뒤를 이어 0 또는 A를 포함하는 여러개의 블록이 이어짐
- 그 뒤를 이어 0 또는 P를 포함하는 여러개의 블록이 이어짐
- 그 결과 이어진 블록 열은 CMAC 알고리즘의 입력값으로 사용됨
- 이 알고리즘의 결과, 길이가 Tlen인 MAC 값이 생성 : Tag
<b. 암호화 과정 설명>
- 비표와 독립적으로 카운터 열 생성
- 인증 태그를 하나의 카운터 Ctr_0를 이용하여 CTR 모드로 암호화
- 출력된 비트 중 Tlen 개의 유효비트를 Tag와 XOR 하여 암호화된 태그를 생성
- 암호화된 평문에 암호화된 태그를 붙여 암호문으로 출력
CCM 모드 너무 어렵다. ㅠㅠ
'네트워크보안에센셜' 카테고리의 다른 글
Chapter 03. 공개키 암호와 메시지 인증 - 3.3 메시지 인증 코드(1) (1) | 2020.10.05 |
---|---|
네트워크보안에센셜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 |