공부/네트워크 보안

네트워크 보안(9) - 메시지 인증 코드

minsun24 2024. 11. 22. 00:16

메시지 인증 코드(MAC)

  : 메시지의 무결성 및 송신자 확인을 위한 코드

  : 해시 함수만 이용할 시 송신자 확인은 불가하다.

 

증명(Prove)와 검증(Verify)

  • 증명: 송신자가 메시지를 인증받는 것.
  • 검증: 수신자가 메시지를 검사하는 것.

사용 예시

  : SWIFT(Society for Worldwide Internet Financial Telecommunication, 금융 기관을 위한 국제 협력 네트워크)

  : IPSec(Internet Protocol + Security)

      *대부분 메시지 인증 후 암호화하는데 이 경우 암호화 후 메시지 인증 수행

  : SSL/TLS 


MAC 의 기본 구조

입력: 메시지, 공유하는 키

출력: 고정 길이의 코드

 

프로세스 

  1. 공유 키 K, 해시 함수 H, 메시지 M에 대해 MAC = H(K||M)
  2. 수신자에게 M과 MAC 전송
  3. M을 통해 MAC를 연산하여 비교한다.

HMAC

  : 기존 MAC보다 보안성이 뛰어난 인증 방법.

 

설계 목표

  : 암호 알고리즘 없이 해시 함수만으로 구현 >> 속도에서 이점

  : 해시 함수는 시중에 나와있는 것으로, 변경에 대비하여 구현

 

HMAC 구현

  : HMAC(K, M) = H[(K⊕opad)∥H((K⊕ipad)∥M)]

    *ipad = i_pad = Inner Padding / opad = o_pad = Outer Padding

    *패딩 / XOR / 결합 / 해시 값 연산으로 구성


CMAC (Cipher-based MAC)

  : 기존의 블록 암호 알고리즘(DES, 3DES, AES 등)을 이용하여 메시지 인증


MAC 운영 이슈

키 공유 문제

  : 대칭키를 사용하기 때문에 키 공유가 문제가 됨.

 

해결 방안

  : 공개 키 암호 / Diffie-Hellman 키 교환 / 키 배포 센터 / 키를 안전한 별도의 방법으로 전송

 

재전송 공격(Replay Attack) 

  : 송신자를 인증할 수 없기 때문에 재전송 공격에 취약하다.

 

해결 방안

  : Sequence Number 이용

        > 송/수신자 간 동기화되어 있는 번호를 추가

 

  : Timestamp 이용 

        > 현재 시각과 관련된 Timestamp 값을 추가

        > 단, 공격자가 해당 시간대에 공격할 경우 성공할 수 있는 문제

 

  : Challenge and Response 이용 

        > 매 송신마다 송신자의 송신 요청과 수신자의 난수 생성 과정을 추가, 송신자는 해당 난수를  MAC 연산에 추가한다.

        > 해당 난수를 Challenge(Nonce, 비표)라고 한다.


MAC의 한계

  • 공유키를 가진 자만 검증 가능하기 때문에, 제 3자에게 증명 및 부인 방지가 불가하다.
  • 이러한 점은 디지털 서명으로 보안 가능.