정보보안 - 메시지 인증 코드

Dayon·2023년 11월 6일
0
post-thumbnail

메시지 인증 코드를 사용하면 자신에게 도착한 메시지가 송신자에게 보낸 그대로인지를 확인 할 수 있다. 즉, 메시지 인증코드를 사용하면 메시지가 ‘변경’되지는 않았는지, 누군가 거짓 송신자로 ‘위장’을 하고 있지 않은지를 확인할 수 있는 것이다.

인증

  1. 일방향 해쉬함수 (→ 무결성 )
  2. 메시지 인증 코드 (→ 무결성 + 인증)
  3. 디지털 서명

01. 메시지 인증 코드

올바른 송금 의뢰

  • 엘리스 : 은행 A의 고객
  • 밥 : 은행 B의 고객
  • A은행에 앨리스로부터 송금 의뢰가 도착
    ”나의 계좌 앨리스### 에서 B 은행의 계좌 밥###으로 1억 원을 송금 바랍니다.

A은행은 메시지 출처를 인증하고, 통신 중 내용 변경 유무에 대해 무결성을 보장해야 한다.

  • 무결성 : 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것

메시지 인증 이란?

  • 메시지가 올바른 송신자로부터 온것이다 → 무결성과 인증에 대한 위협 : 멜로리에 의한 메시지 변경 또는 앨리스로 위장

메시지 인증 코드

  • 무결성을 확인하고, 메시지에 대한 인증을 위한 코드

  • Message Authentication Code , MAC

  • 입력 : 메시지, 공유하는 키 / 출력 : 고정 비트 길이의 코드

  • 일방향 해시는 키를 사용하지 않지만, 메시지 인증 코드는 키를 사용하는 차이점이 있다.

메시지 인증 코드 적용 순서

  1. 앨리스와 수신자 A은행 : 사전에 키(K) 공유

  2. 앨리스 : 송금 의뢰 메시지(M) 작성 → MAC값(MACK(M)MAC_K(M))을 계산

  3. 앨리스 : 수신자 A은행으로 송금 의뢰 메시지와 MAC값을 전송

  4. 수신자 A 은행 : 수신한 송금 의뢰 메시지를 기초로해서 MAC값을 계산

  5. 수신자 A 은행 : 앨리스로부터 수신한 MAC 값과 자신이 계산한 MAC 값을 비교

  6. 수신자 A 은행 :

    1. 인증 성공 : 2개의 MAC 값이 동일하면 송금 의뢰가 틀림없이 앨리스로부터 온 것이라고 판단

    2. 인증 실패 : 2개의 MAC 값이 동일하지 않으면 앨리스로부터 온것이 아니라고 판단


메시지 인증 코드의 키 배송 문제

  • 대칭 암호때의 키 배송 문제와 같은 문제가 메시지 인증 코드에서도 발생

  • 키 배송 문제를 해결하는 방법

    • 공개 키 암호

    • Diffie-Hellman 키 교환

    • 키 배포 센터

    • 키를 안전한 방법으로 별도로 보내기


02. 메시지 인증 코드 이용 예

SWIFT

  • SWIFT는 Society for Worldwide Internet Financial Telecommunication(국제은행간 통신협회)로 1973년에 설립된 단체이며, 설립 당시 15개국이 참가하였고, 현재 200개국 11,000 이상의 금융 기관이 서비스를 이용한다

  • 은행과 은행은 SWIFT를 통해 거래 메시지를 교환하여 무결성을 확인하고 메시지 인증 코드를 사용한다.

IPsec

  • 인터넷 기반의 통신 프로토콜인 IP에 보안 기능을 첨가한 것 이다.

  • 통신 내용 인증과 무결성을 위해 메시지 인증 코드를 이용한다.

SSL/TLS

  • 웹에서 온라인 쇼핑을 할 때 사용되는 통신 프로토콜이다.

  • 통신 내용의 인증과 무결성 확인을 위해 메시지 인증 코드를 이용한다.


03. 메시지 인증 코드의 실현 방법

일방향 해시 함수를 이용한 실현

  • SHA-3인 Keccak와 같은 일방향 해시 함수를 이용하여 메시지 인증 코드를 실현

  • HMAC(Hash-based Message Authentication Code)

블록 암호를 이용한 실현

  • AES와 같은 블록 암호를 사용해 메시지 인증 코드를 실현

    • 블록 암호 키를 메시지 인증 코드의 공유 키로 사용
    • CBC 모드로 메시지 전체를 암호화
    • 메시지 인증 코드에서는 복호화를 할 필요가 없으므로 최종 블록 이외는 폐기
    • 최종 블록을 MAC 값으로 이용

그 밖의 방법으로 실현

  • 스트림 암호
  • 공개 키 암호

04. 인증 암호

  • 인증 암호 : 대칭 암호와 메시지 인증 코드를 조합하여 기밀성 • 무결성 • 인증을 동시에 충족시키는 구조

  • Encrypt-then-MAC

    • 평문을 대칭 암호로 암호화한 후 암호문의 MAC 값을 계산
    • 메시지 인증 코드 입력에 암호문을 부여
    • 선택 암호문 공격을 막을 수 있다.

      선택 암호문 공격 : 적당한 암호문을 위조하여 정보를 얻어내려는 공격

  • Encrypt-and-MAC

    • 평문을 대칭 암호로 암호화하고, 그 와는 별도로 평문의 MAC값을 얻는 방법
  • MAC-then-Encrypt

    • 미리 평문의 MAC 값을 얻고, 평문과 MAC 값 양쪽을 정리하여 대칭 암호로 암호화 하는 방법

GCM (Galois/Counter Mode)

  • 인증 모드의 일종

  • AES와 같은 128비트 블록 암호를 CTR 모드로 이용하여 MAC값을 얻기 위하여 덧셈고 곱셈을 반복하는 해시 함수를 사용

  • CTR 모드는 1씩 늘어가는 숫자를 암호화하기 때문에 각 블록을 병렬로 처리하여 실행 속도를 높일 수가 있음

  • CTR모드와 MAC 값 생성에 공통 키를 사용하기 때문에 키 관리도 편리하다

GMAC

GCM을 메시지 인증 코드 전용으로 사용



05. HMAC

HMAC (Hash-based Message Authentication Code)

: 일방향 해쉬 함수를 이용하여 메시지 인증 코드를 구성하는 방법

HMAC의 일방향 해쉬 함수는 모듈형으로 골라서 사용하며, 새 표준인 SHA-3 KECCAK을 사용해 HMAC 작성 가능하다.

HMAC의 순서

  1. 키에 대한 패딩
  2. 패딩한 키와 ipad의 XOR
  3. 메시지 결합
  4. 해시 값 계산
  5. 패딩한 키와 opad의 XOR
  6. 해시 값과 결합
  7. 해시 값 계산


칼럼 HMAC의 의사 코드

hash(opadkey || hash(ipadkey ||message))

ipadkey = key ⊕ipad

opadkey= key ⊕opad

ipadkey 가 내부이고 opadkey가 외부인지 알 수 있다


06. 메시지 인증 코드에 대한 공격

재전송 공격 (replay)

: 보존해 둔 정당한 MAC값을 반복해서 송신하는 공격

재전송 공격 방어

  • 순서 번호

    • 송신 메시지에 매회 1씩 증가하는 번호 (순서번호, sequence number) 를 붙이기
    • 마지막 통신시 순서번호를 저장
  • 타임스탬프

    • 송신 메시지에 현재 시각 넣기
    • 송수신자 사이의 동기화 필요
  • 비표(nonce)

    • 송산자에게 일회용의 랜덤한 값을 전송
    • 메시지와 비표를 합해 MAC값을 계산
    • 비표 값은 통신 때 마다 교체

키 추측 공격

  • 메시지 인증 코드에 대한 공격

    • 전사 공격 - 약한 충돌 내성을 깬다
    • 생일 공격 - 강한 충돌 내성을 깬다
  • MAC값만 획득한 공격자가 키를 추측하지 못하도록 해야 한다

    • 해시 함수의 일방향성

    • 해시 함수의 충돌 내성

    • 키 생성에 의사 난수 생성기 사용



07. 메시지 인증 코드로 해결 할 수 없는 문제

제3자에 대한 증명

  • 앨리스로부터 메시지를 받은 밥이 ‘이 메시지는 앨리스가 보낸 것이다’ 라는 것을 제 3자인 검증자 빅터에게 증명할 수 없다

  • 이유

    • 일단 키를 빅터에게 알려줘야 한다.

    • 앨리스와 밥 모두 키를 가지고 있으므로 둘 중 누가 작성했는지 말 할 수 없다.


부인 방지

  • 밥이 MAC 값이 딸린 메시지를 받았고, ‘이 메시지는 앨리스로부터 온 것이다’ 라는 걸 확실히 알 수 있다. 하지만 앨리스가 전송 자체를 부정할 경우 제3자는 이 사실을 증명할 수 없다.

  • 부인 : 앨리스가 송신자체를 부정

  • 메시지 인증코드로는 부인방지가 불가능하다



[정리]

메시지 인증 코드는 메시지를 인증하고 무결성을 확인하는 기술이다. 송신자와 수신자가 공유하는 키를 사용하여 ‘거짓행세’ 나 ‘조작’ 이 행하여지고 있는지 아닌지를 확인 할 수있다. 메시지 인증 코드는 일방향 해시 함수나 대칭 암호 등을 이용해 만들수 있다. 메시지 인증 코드에서는 송신자와 수신자가 키를 공유하고 있기 때문에 ‘제3자에게 증명하기’ 와 ‘부인방지’를 보장 할 수 없는 문제가 있다.


참고한 도서 ⌜알기 쉬운 정보보호개론 3판⌟ 인피니티북스

profile
success is within reach, allow yourself time

0개의 댓글