네트워크보안에센셜

Chapter 03. 공개키 암호와 메시지 인증 - 3.3 메시지 인증 코드(2) - 블록암호기반 MAC

영차영차33 2020. 10. 12. 19:07

오늘은 메시지 인증코드 공부 두 번째 포스팅이다.

오늘 포스팅은 블록암호기반 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)

CMAC 구조

 

 

 

□ 암호블록체인 카운터 - 메시지 인증 코드(CCM : Counter with Cipher Block Chaining-Message Authentication Code)

 - 인증된 암호화 모드 : 기밀성 + 무결성(인증) 동시에 제공

 - AES + CTR + CMAC

 

 <CCM>

 

 P : 평문 데이터 블록 (인증하고 암호화할 예정)

 A : 인증은 하지만 암호화 하지 않을 데이터 (ex. 프로토콜 헤더 : 평문 상태로 전달되어야 하나 인증은 받아야 함)

 N : 페이로드와 유관한 데이터에 할당되는 비표, 재전송 공격 방지용, 시간에 따라 값이 달라짐

CCM

 

<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 모드 너무 어렵다. ㅠㅠ