• 2024. 3. 26.

    by. 플로픽

    메시지 인증코드(MAC)

    메시지 인증코드란 무결성을 확인하고 메시지에 대한 인증을 하는 기술이다. 첫 글자를 따서 MAC이라 부른다(MAC을 사용하면 변경과 거짓행세 검출 가능). 메시지 인증코드는 임의 길이의 메시지와 송신자 및 수신자가 공유하는 키라는 2개의 입력을 기초로 해서 고정 비트길이의 출력을 계산하는 함수이다. 이 출력을 MAC 값이라 부른다. MAC의 한 가지 장점은 블록 암호나 해시 함수에 기반을 두기 때문에 전자 서명보다 훨씬 빠르다는 것이다. 변경감지 코드는 메시지의 무결성을 보장하는 메시지 다이제스트이다. 즉, 해당 메시지가 변경되지 않았다는 것을 보장해 준다. 예를 들어 철수가 미애에게 메시지를 송신하는 경우, 미애는 수신한 메시지로부터 새로운 MDC를 생성하여 철수에게 받은 MDC와 비교한다. 만약 이 두 값이 동일하다면 해당 메시지는 변경되지 않았다는 뜻이 된다. 메시지의 무결성은 물론 철수가 메시지의 원래 전송자이며 다른 사람이 철수인 척하는 것이 아니라는 것을 말해주는 데이터 출원지 인증을 보장하기 위해 변경 감지 코드를 메시지 인증코드(MAC, message authentication code)로 바꿀 필요가 있다. MDC와 MAC의 차이를 보면 MAC에는 철수와 미애 사이에 비밀값이 포함된다는 것이다. 예를 들어 영희는 가지고 있지 않은 비밀키가 두 사람 사이의 비밀 값이 될 수 있다.

     

    MAC의 구현 사례

    1) 축소 MAC
    MAC의 안전성을 높이기 위해서 축소 MAC(nested MAC)이 설계되었는데 이 안에서는 해싱이 두 단계로 이루어져 있다. 첫 번째 단계에서는 키에 메시지를 이어 붙이고 해시하여 중간 단계의 다이제스트를 생성한다. 두 번째 단계에서는 키에 중간단계 다이제스트를 이어 붙이고 최종적인 다이제스트를 생성한다.

    2) HMAC
    HMAC은 SHA-1과 같은 일방향 해시함수를 이용하여 메시지 인증코드를 구성하는 방 법이다. HIMAC의 H는 Hash를 의미한다. HMAC에서는 사용하는 일방향 해시함수를 단 한 종류로 한정하는 것은 아니다. 강한 일방향 해시함수라면 뭐든지 HMAC에 이용할 수 있다. 장래 새로운 일방향 해시함수 가 고안된다면 그것을 사용할 수도 있다. HMAC은 RFC 2104로 출판되었으며 TLS(Transport Layer Security), IPSec(IP Security), SET(Secure Blectronic Transaction) 같은 프로토콜에 사용되고 있다.

     

    СМАС(Cipher-based Message Authentication Code)

    NIST는 데이터 인증 알고리즘 혹은 OMAC 또는 OBC-MAC(cipher block chaining message authentication code)이라 부르는 표준 FIPS 113을 정의하였다. 이 방법은 대칭키 암호시스템에 대한 암호 블록체인(CBC) 모드와 유사한 방법이다. 하 지만 여기에서 사용한 아이디어는 N개의 평문 블록으로부터 N개의 암호문 블록을 만 드는 것이 아니다.

    MAC 검증
    모든 MAC과 마찬가지로 검증은 MAC 생성에 사용되었던 연산을 단순히 반복하는 것이다. 실제로 검증 결정을 위해 계산된 MAC'와 수신된 MAC 값 1을 비교하면 된다. m'=m인 경우 메시지는 올바른 것으로 판단한다. m'= m인 경우 메시지 또는 MAC 값 m이 전송 중에 변경된 것이다.

     

    카운터 암호 블록 체이닝 - 메시지 인증 코드

    CCM(Counter with Cipher Block Chaining - Message Authentication Code) 연산 모드는 NIST에 의하여 IBEE802.11 WiFi 무선 근거리 통신망의 보안 요구사항을 지원하기 위하여 표준화되었으나, 인증 암호를 요구하는 다양한 네트워크 응용에서 사용될 수 있다. CCM의 주요 알고리즘 구성요소는 AES 암호 알고리즘, CTR 연산모드, CMAC 인증 알고리즘이다. 하나의 키 K가 암호화와 MAC 알고리즘에 모두 사용된다.

     


    MAC에 대한 공격

    1) 재전송 공격
    적극적 공격자 맬로리는 자신이 보존해 둔 MAC 값을 반복해서 송신하는 공격을 감행한 다. 이와 같은 공격을 재전송 공격(replay attack), 혹은 리플레이 공격이라고 부른다. 재전송 공격을 막을 수 있는 방법은 순서번호, 타임스탬프, 비표, 시도/ 응답 등이 있다.

    2) 순서 번호(sequence number)
    송신 메시지에 매회 1회씩 증가하는 번호(순서번호, sequence number)를 붙이기로 약속하고, MAC 값의 계산에서도 순서번호를 메시지에 포함시키도록 한다. 이렇게 해두면 재전송 공격자는 순서번호를 늘렸을 때의 MAC 값을 계산할 수 없기 때문에 재전송 공격을 막을 수 있다. 이 방법은 유효하지만 통신상대마다 마지막 순서번호를 기록해두어야 하는 번거로움이 있다.

    3) 타임스탬프(timestamp)
    송신 메시지에 현재 시각을 넣기로 약속해 두고 그 이전의 메시지가 왔을 경우에는 MAC 값이 바르더라도 오류라고 판단한다. 송• 수신자 사이에 시계를 일치시켜 두는 동기화를 하지 않으면 안 된다.

    4) 비표(nonce)
    메시지를 수신하기에 앞서 수신자는 송신자에게 일회용의 랜덤 한 값을 건네준다. 이 값을 일반적으로 비표(nonce)라 부른다. 송신자는 메시지 안에 비표를 포함해서 MAC 값을 계산한다. 비표의 값은 통신 때마 다 바뀌기 때문에 재전송 공격을 할 수 없다. 이 방법은 유효하지만 통신 데이터의 양이 약간 증가하게 된다.

    5) 시도/응답(Challenge/Response)
    통신 상대방 A는 B로부터의 정당한 메시지를 기대하고, B에게 우선 난수(신청)를 송신한 다음, B로부터 송신 이후에 수신되는 메시지(응답)가 정확한 난수 값을 포함할 것을 요구한다.

     

    MAC으로 해결할 수 없는 문제

    메시지 인증코드(MAC)
    메시지 인증코드(MAC)

    1) 제3자에 대한 증명
    MAC은 공유키를 사용하기에 MAC 값을 계산할 수 있는 것은 앨리스 또는 밥이다. 두 사람이 서로 통신하고 있는 동안은 「그 MAC 값을 계산한 것은 상대방』이라고 말할 수 있다. 공유기를 알고 있는 두 사람 중 한 사람은 자신이기 때문이다. 그러나 제3자 빅터에게 이 MAC 값을 계산한 것은 자신이 아니라 상대방」이라고 증 명할 방법은 없다. 전자서명을 사용하면 제3자에 대한 증명이 가능해진다.

    2) 부인 방지
    송신자 앨리스는 「나는 밥에게 그런 메시지를 보내지 않았어.」라고 빅터에게 주장할 수 있다. 이와 같은 주장을 부인(repudiation)이라고 한다. MAC에서는 철수와 미애 중 어느 쪽 주장이 맞는지를 판단할 수 없기 때문에 부인방지(nonrepudiation)를 할 방법이 없다. 해결책 : 전자서명을 사용하면 부인방지가 가능해진다.

    '컴퓨터공학' 카테고리의 다른 글

    기본 보안용어 정의  (0) 2024.03.23
    OSI 보안 구조  (0) 2024.03.22
    정보보호 관리  (0) 2024.03.21
    정보화 사회의 정보보호  (1) 2024.03.20
    SQL 대 NoSQL: 어떤 데이터베이스를 사용해야 할까?  (0) 2024.03.19