본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

GCM 모드(Galois/Counter Mode, GCM)는 카운터(CTR) 모드로 데이터를 암호화하고 갈루아 체(유한체) 위의 곱셈으로 만든 인증 태그를 함께 붙여, 기밀성과 무결성·인증을 한 번에 제공하는 블록 암호의 인증 암호(AEAD) 운용 모드이다.

ECB, CBC, CTR 같은 전통적인 블록 암호 모드는 기밀성만 준다. 암호문이 중간에 바뀌어도 수신자가 알아채지 못하므로 따로 메시지 인증 코드를 붙여야 했다. GCM 은 이 두 일을 하나의 모드로 묶었다. 미국 NIST 는 SP 800-38D 에서 GCM 을 승인된 128비트 블록 암호(실제로는 AES)의 운용 모드로 정하고, 기밀성은 카운터 모드의 변형으로, 인증은 이진 갈루아 체 위에서 정의한 범용 해시 함수(universal hash function)로 보장한다고 설명한다.[1]

GCM 의 인증 암호 함수는 키 K, 초기화 벡터 IV, 평문 P, 추가 인증 데이터 A 를 받아 암호문 C 와 인증 태그 T 를 낸다.[1]

  1. 해시 부분키 H 를 만든다. 128비트 0 블록을 키 K 로 암호화한 값이다.
  2. IV 로 첫 카운터 블록 J0 를 만든다. IV 는 96비트를 권장하며, 이 경우 IV 뒤에 1 을 붙여 J0 로 쓴다.
  3. GCTR - J0 를 하나씩 늘린 카운터 블록들을 암호화해 키 스트림을 만들고 평문과 XOR 해 암호문 C 를 얻는다. 카운터 모드이므로 블록마다 따로 계산할 수 있다.
  4. GHASH - 추가 인증 데이터 A 와 암호문 C, 그리고 두 길이를 이어 붙인 것을 H 와의 GF(2128) 곱셈으로 차례로 누적한다. 이것이 GCM 의 해시 함수이다.
  5. GHASH 결과를 J0 로 암호화한 블록과 XOR 하고 정해진 길이로 잘라 태그 T 를 만든다.

복호화하는 쪽은 받은 C 와 A 로 태그를 다시 계산해 받은 T 와 비교하고, 다르면 평문을 내주지 않고 실패를 돌려준다.

  • 기밀성 + 무결성 + 인증 - 암호문이나 추가 데이터가 한 비트라도 바뀌면 태그 검증에 실패한다. 우연한 변경과 의도적 위조를 모두 잡아낸다.[1]
  • 추가 인증 데이터 - 패킷 헤더처럼 암호화하지 않고 평문으로 보내야 하지만 변조는 막아야 하는 데이터를 A 로 넣어 인증만 받을 수 있다.
  • 병렬 처리와 고속 - 카운터 블록 암호화는 서로 독립이고 GHASH 의 곱셈도 미리 계산·파이프라인화할 수 있어, 하드웨어와 소프트웨어 모두에서 처리량이 높다. 이 성질 덕분에 TLS 1.2·1.3, IPSec ESP 등에서 AES-GCM 이 기본 암호 스위트로 널리 쓰인다.[2]
  • IV 재사용 금지 - 같은 키로 같은 IV 를 두 번 쓰면 키 스트림이 겹쳐 평문 관계가 드러나고, 해시 부분키 H 가 노출되어 태그 위조까지 가능해진다.
  • GMAC - 암호화할 데이터 없이 A 만 넣으면 인증 태그만 만드는 메시지 인증 코드가 되며, 이를 GMAC 이라 부른다.

다른 운용 모드와 구별하기

편집 원본 편집
모드 기밀성 무결성·인증 암호화 병렬 처리
ECB 제공(패턴 노출) 없음 가능
CBC 제공 없음 불가
CTR 제공 없음 가능
GCM 제공(CTR 방식) 제공(GHASH 태그) 가능
  • GCM 이 기밀성만 주고 무결성은 보장하지 않는다는 말은 틀렸다. 무결성과 인증을 함께 주는 것이 GCM 을 쓰는 이유이다.
  1. ↑ 1.0 1.1 1.2 「Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC」(NIST SP 800-38D), NIST, https://doi.org/10.6028/NIST.SP.800-38D, 확인일: 2026-11-04.
  2. ↑ 「AES Galois Counter Mode (GCM) Cipher Suites for TLS」(RFC 5288), IETF, https://www.rfc-editor.org/rfc/rfc5288, 확인일: 2026-11-04.