[암호학] MDC(Modification Detection Code)와 MAC(Message Authentication Code) 개념과 차이, CMAC 설명
컴퓨터/암호학 2020. 5. 19. 23:07
흔히 우리가 문서가 변조 또는 위조되었는지 확인하기 위해서 핑거프린트(finger frint)를 사용하지요. 디지털에서는 어떻게 위조되었는지 알 수 있을까요?
디지털 메시지를 다룰때 우리는 그 메시지가 변경이 되었는지 또는 이 메시지가 내가 알고 있는 그 사람에게 왔는지 확인해야할 필요가 있는데 메시지 변경 감지 코드(MDC:Modification Detection Code)와 메시지 인증 코드(Message Authentication Code)가 그 역할을 합니다.
MDC(Modification Detection Code)
메시지 변경 감지 코드는 메시지의 변경이 일어났는지 아닌지를 확인합니다. 즉, 데이터의 무결성을 판단하게 됩니다.
송신자 : 송신자는 원본의 메시지는 그대로 보내고 그 메시지를 암호학적 해쉬 함수를 통해 해쉬값을 만든게 MDC인데, 안전한 채널로 보내게 됩니다. 이때 안전한 채널로 외부로부터 변경이 되지 않는다는 보장이 되어야합니다.
암호학적 해쉬 함수 : 암호학적 해쉬 함수는 메시지의 해쉬 값을 만드는 함수로 일방향 함수여야합니다. 그러니까 해쉬값을 만드는 것은 되지만 해쉬값으로부터 원본 값을 알 수 없어야하고 메시지와 해쉬값이 1:1이 되어야합니다. 암호학적 해쉬함수의 기준은 3가지 저항성을 충족시켜야합니다. 1) preimage resistance 2) second preimage resistance 3) collision resistance 한마디로 깨기 어려워야한다는 것이고, 저도 암호학적 해쉬함수에 해박한 지식은 없으므로 이정도하고 넘어갑시다. |
수신자 : 수신자는 전달받은 메시지를 MDC로 다시 만들며 전달받은 MDC와 비교하여 이 둘이 같다면 변경이 되지 않은 것이고 변경이 되었다면 이 메시지는 변경되었다고 판단합니다.
MAC(Message Authentication Code), TCP/IP 2계층 아님.
메시지가 내가 원하는 바로 그 사람으로부터 왔는지 판단하려면 어떻게 하면 좋을까요? 서로만 아는 사실 하나만 추가하면 됩니다. 바로 키만 섞어주면 되죠.
송신자 : 송신자는 수신자와 미리 공유된 키를 가지고 메시지 해쉬값을 만들어 냅니다. 이것이 우리가 이야기하는 메시지 인증 코드, MAC입니다. 이것을 메시지와 함께 보냅니다.
수신자 : 송신자로부터 받은 MAC과 메시지를 키와 함께 해쉬값을 만든 후 비교합니다. 같다면 원하는 송신자로 온것이 확인이 되고 아니라면 메시지가 변경이 되었거나, 누군가가 임의로 보낸거겠죠?
MAC은 이처럼 무결성과 인증을 같이 제공합니다.
CMAC
메시지는 일반적으로 큰 경우가 많기 때문에 이 메시지를 한번에 MAC으로 만들 수는 없습니다. 그래서 메시지를 일정 비트 단위로 쪼개서 MAC을 만들어가는데 그 중 한가지가 CMAC입니다.
CMAC은 CBCMAC과 같은 의미로 불리는데 블록 암호에서 CBC와 유사한 방법을 사용하기 때문입니다. CMAC을 진행하기 전에 송신자와 수신자는 key를 공유한 상황이어야합니다.
CMAC은 다음의 과정을 거치게 됩니다.
1) 메시지를 m bit씩 n개로 쪼갭니다.
2) 만약 마지막 메시지 블록이 m bit가 못된다면 나머지 첫비트는 1, 다른 비트는 전부 0으로 채워버립니다. 패딩이라고 하지요.
3) 이제 앞의 메시지 블록부터 차례대로 사전에 공유된 키, key로 암호화하고 암호화한 값을 이 후의 블록과 xor을 진행합니다.
이 과정을 마지막 블록까지 진행합니다.
4) 마지막 블록에는 k와 xor 연산을 진행한 후 마지막 암호화를 진행합니다. k는 마지막에 한번만 xor연산을 위해 사용되는데 key로부터 파생된 값입니다. m bit의 메시지 블록을 xor하기 위해서는 k도 m bit의 크기를 갖고 있어야겠지요.
5) 그 결과를 왼쪽의 n비트를 뽑아서 메시지에 붙여서 보냅니다.
이상으로 메시지 변경 감지 코드, 메시지 인증 코드, 메시지 인증 코드의 CMAC 방식을 알아보았습니다.
'컴퓨터 > 암호학' 카테고리의 다른 글
[암호학] 디피-헬만 키 교환 개념 설명 및 예제(Diffie-Hellman), 중간자 공격 (0) | 2021.03.09 |
---|---|
[정보 보안] 보안의 3대 요소(기밀성, 무결성, 가용성)의 개념과 그것을 달성하기 위한 보안 서비스들 (0) | 2021.02.28 |
[암호학] HMAC(Hashed MAC) 개념과 과정 (1) | 2020.05.20 |
[암호학]비대칭키 암호와 RSA 과정 설명 (0) | 2020.05.18 |
[암호학] 대칭키(Symmetric key) 알고리즘 개념과 AES(Advanced Encryption Standard) (0) | 2020.05.17 |