106. GMAC (Galois Message Authentication Code)

⚠️ 이 문서는 현대 인터넷 표준인 GCM(Galois/Counter Mode)에서 암호화를 제외하고 순수하게 데이터의 무결성과 인증(MAC)만을 제공하는 파트로, 갈루아 체(Galois Field) 수학을 이용해 막대한 데이터를 병렬로 눈 깜짝할 새 갈아버리는 초고속 인증 태그 생성기, GMAC을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: GMAC(갈루아 메시지 인증 코드)은 복잡한 해시 함수(SHA)나 블록 암호 반복(CMAC)을 쓰지 않고, $GF(2^{128})$ 공간에서의 고속 수학적 곱셈(다항식 연산)을 통해 데이터의 인증 태그(Tag)를 계산해 내는 MAC 알고리즘이다.
  2. 가치: CBC-MAC이나 CMAC이 가진 앞 블록이 끝나야 뒤 블록을 처리하는 직렬 처리의 병목(거북이 속도)을 박살 냈다. 블록들을 독립적으로 수학 계산에 던져 넣을 수 있어 **기가비트급 네트워크에서 완벽한 병렬 처리(초고속 인증)**가 가능하다.
  3. 융합: GMAC 자체만 단독으로 쓰이기보다는 기밀성을 제공하는 CTR 암호화 모드와 결합하여 **GCM(Galois/Counter Mode)이라는 완전체 AEAD 규격의 핵심 인증 엔진(심장)**으로 인터넷(TLS, IPsec)을 지배하고 있다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

클라우드 센터 간에 1초에 10GB짜리 데이터를 쏟아붓는 시대다. 이 데이터가 전송 중에 변조되지 않았는지(무결성) 검사 도장을 찍어주는 MAC(메시지 인증 코드)이 필수적이다.

하지만 앞서 배운 HMAC(해시 함수 2번 돌리기)이나 CMAC(AES 기계에 블록을 꼬리에 꼬리를 물고 돌리기)은 데이터가 테라바이트급으로 커지면 연산 속도가 트래픽을 따라가지 못해 서버의 목을 조르는 병목의 주범이 되었다. 앞 블록 처리를 기다려야 하니, 64코어짜리 짐승 같은 CPU를 꽂아놔도 1개의 코어만 땀을 뻘뻘 흘리는 가내수공업이었기 때문이다.

이 병목을 뚫기 위해 데이비드 맥그루(David McGrew) 등이 제안한 혁명적 아이디어가 바로 GMAC이다. 암호학의 복잡한 믹서기 대신, CPU가 가장 좋아하고 병렬 처리가 가능한 **'단순 다항식 곱셈(갈루아 체 연산)'**으로 인증 도장을 찍어버리는 수학적 사이다.

📢 섹션 요약 비유: 수만 장의 서류에 '확인 도장'을 찍을 때, CMAC은 서류 1번과 2번을 본드(XOR)로 붙인 뒤에야 도장을 찍을 수 있는 느린 수작업이었습니다. GMAC은 서류 수만 장을 공중에 확 뿌려놓고 100개의 컨베이어 벨트(병렬 곱셈)에서 1초 만에 바바바박! 하고 수학적 도장을 찍어내는 초고속 자동화 공장입니다.


Ⅱ. GMAC의 뼈대: 갈루아 체(Galois Field) 곱셈의 마법

GMAC의 핵심은 "데이터를 곱한다"는 것이다. 하지만 평범한 구구단 곱셈을 하면 숫자가 너무 커져서 컴퓨터가 감당을 못 한다. 그래서 숫자가 아무리 커져도 무조건 128비트 상자 안으로 다시 튕겨 들어오는(모듈러 연산) 특수한 수학 세계인 **갈루아 체 $GF(2^{128})$**를 사용한다.

GMAC의 작동 순서

  1. 인증 키($H$) 생성: AES 암호 기계에 0으로 꽉 찬 블록을 넣고 돌려, 128비트짜리 기준점 비밀키($H$, Hash Key)를 하나 만든다.
  2. 데이터 갈아 넣기 (GHASH 함수):
    • 데이터 1번 블록 $\times$ $H$
    • 데이터 2번 블록 더하고 $\times$ $H$
    • 데이터 3번 블록 더하고 $\times$ $H$
    • 이 짓을 끝까지 다 한 결과를 무자비하게 섞는다.
  3. 마지막 난수(Nonce) 마감: 이 섞인 쓰레기 결과물에 다시 한번 AES로 암호화한 비밀 난수를 XOR 하여 도장을 쾅 찍으면 **128비트짜리 최종 인증 태그(Tag)**가 완성된다.
┌───────────────────────────────────────────────────────────────────────────────┐
│           GMAC의 누적 곱셈(GHASH) 인증 태그 생성 시각화                       │
├───────────────────────────────────────────────────────────────────────────────┤
│                                                                               │
│       [비밀 인증키 H]          [비밀 인증키 H]          [비밀 인증키 H]       │
│             │                   │                    │                        │
│             ▼                   ▼                    ▼                        │
│  데이터 1 ─▶( ✖ )───( ➕ )──▶ ( ✖ )───( ➕ )──▶ ( ✖ )───┐                     │
│                      ▲                   ▲                   │                │
│                      │                   │                   │                │
│                   데이터 2            데이터 3               │                │
│                                                              ▼                │
│                                            (암호화된 일회용 난수 Nonce)       │
│                                                              │                │
│                                                              ▼                │
│                                            ★ [ 완벽한 인증 태그 ] ★           │
│                                                                               │
│ * 핵심: ➕(XOR)와 ✖(갈루아 곱셈) 연산은 컴퓨터가 밥 먹듯이 하는 가장 쉬운     │
│   계산이며, 수학적으로 병렬 연산(나눠서 계산 후 합치기)으로 변형이 가능하다!  │
└───────────────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] 이 곱셈(GHASH) 로직이 왜 엄청난 퍼포먼스를 낼까? 인텔과 AMD 같은 CPU 제조사들이 이 갈루아 곱셈 전용 칩셋 명령어(PCLMULQDQ)를 아예 CPU 안에 하드웨어로 박아 넣어버렸기 때문이다. 소프트웨어로 코딩해서 빙글빙글 돌리는 HMAC이나 CMAC과 달리, GMAC은 CPU가 1클럭 띡! 하는 순간 128비트를 갈아 마시는 압도적인 물리적 속도를 낸다.

  • 📢 섹션 요약 비유: 곱셈을 할 때 연필로 100자리를 계산(CMAC)하는 게 아니라, 계산기(하드웨어 가속)를 가져와 버튼 한 번 눌러 수만 개의 곱셈(GMAC)을 끝내버리는 겁니다. 어차피 인증 도장의 목적(조작되었는지 확인)만 달성하면 되니까, 느린 미로 찾기 대신 초스피드 계산기를 택한 것입니다.

Ⅲ. 실무 시나리오: GCM과의 완전체 결합

GMAC은 기밀성(데이터를 숨김)은 1도 챙기지 않는다. 오직 "이 데이터가 깨지거나 변조되지 않았다"는 도장만 찍어준다. 따라서 현대 인터넷 인프라는 데이터를 숨기는 CTR 모드와 도장을 찍는 GMAC을 레고처럼 결합한 **GCM (Galois/Counter Mode)**을 만들어 완벽한 보안(AEAD)을 달성했다.

  • 네트워크 헤더 보호 (AAD 적용)
    • IP 주소나 TCP/UDP 포트 번호는 라우터가 봐야 하니까 절대 암호화하면 안 된다. (평문 유지)
    • 하지만 해커가 길을 돌리려고 포트 번호를 고치면 안 된다. (무결성 필요)
    • 해결: 암호화는 안 하지만, 이 헤더 값들을 방금 말한 GMAC의 데이터 1, 데이터 2 자리에 던져 넣는다. 만약 해커가 1비트라도 건드리면 최종 태그 곱셈 결과가 완전히 틀어져 서버가 "헤더 조작됨!"이라며 트래픽을 버려버린다.

Ⅳ. 치명적 급소 (Trade-off)

이 엄청난 스피드의 GMAC에도 치명적인 맹점이 하나 있다. 초기화 난수(Nonce)를 절대로, 우주가 멸망해도 두 번 재사용(Reuse)하면 안 된다는 점이다.

  • 파멸의 원리: GMAC은 수학 다항식 곱셈에 의존한다. 해커가 똑같은 Nonce로 만들어진 두 개의 인증 태그를 훔쳐냈다고 치자.
  • 해커는 이 두 개의 태그를 수학적으로 빼버린다(방정식 풀기). 그러면 남는 것은 오직 갈루아 체 연산식뿐인데, 이것을 인수분해 하면 시스템의 생명 줄인 '비밀 인증키($H$)'가 고스란히 노출되어 버린다.
  • 인증키가 털리면? 해커는 이제 마음대로 수조 원짜리 가짜 송금 데이터에 완벽하게 일치하는 위조 인증 도장(Tag)을 쾅쾅 찍어 서버에 밀어 넣을 수 있다 (Universal Forgery). 이 약점 때문에 엔지니어는 시스템을 설계할 때 Nonce가 절대 겹치지 않게 카운터(Counter)를 철저히 통제해야만 한다.

Ⅴ. 결론

"극한의 퍼포먼스를 얻은 대신, 개발자에게는 한 치의 실수도 용납하지 않는 수학의 칼날." GMAC은 느려 터진 암호학의 족쇄를 풀고, 초당 수 기가바이트(GB)가 오가는 현대 클라우드와 5G 트래픽의 무결성을 지켜내는 최전선의 엔진이다. 비록 Nonce 관리가 조금만 틀어져도 키가 털리는 살얼음판 같은 잣대를 들이밀지만, 인텔 CPU의 하드웨어 가속 버프를 받는 GMAC의 압도적 효율성은 인터넷 표준인 TLS 1.3이 GCM을 절대 왕좌에 앉힐 수밖에 없는 명백한 공학적 이유가 되었다.


📌 관련 개념 맵

  • 소속 아키텍처: GCM (Galois/Counter Mode)의 인증 파트
  • 목표(제공 기능): MAC (Message Authentication Code) / 데이터 무결성 보장
  • 대비 개념 (경쟁자): HMAC (해시 기반, 무겁지만 안전함), CMAC (블록 암호 기반, 가볍지만 느림)
  • 치명적 위험: Nonce(IV) 재사용 시 비밀 인증키(H) 완전 노출 (수학적 방정식 취약점)

👶 어린이를 위한 3줄 비유 설명

  1. 편지에 나쁜 도둑이 낙서했는지 확인하려고 도장을 찍을 때, 옛날엔 꼬불꼬불한 미로(해시/블록 암호)를 통과하느라 시간이 너무 오래 걸렸어요.
  2. GMAC은 미로 대신 컴퓨터가 제일 좋아하는 '구구단(수학 곱셈)'으로 순식간에 계산을 끝내서 도장을 쾅 찍어버리는 천재적인 스피드광 기계랍니다.
  3. 속도는 세상에서 제일 빠르지만, 만약 주인이 번호표(Nonce)를 두 번 겹쳐서 쓰는 실수를 하면, 도둑이 역으로 구구단 공식을 풀어버려 마스터 열쇠를 훔쳐 갈 수 있는 조심해야 할 양날의 검이에요!