본문 바로가기
system_fundamentals/security_cryptography

CBC/GCM 차이

by 죄니안죄니 2026. 5. 14.
반응형
CBC/GCM 차이
CBC/GCM 차이
CBC/GCM 차이
CBC/GCM 차이
 
 

CBC(Cipher Block Chaining)와 GCM(Galois/Counter Mode)의 가장 큰 차이는:

CBC = 암호화만 잘함
GCM = 암호화 + 위변조 검증까지 함
 

이다.

현재 실무에서는 거의 GCM이 표준처럼 쓰인다.


먼저 공통점

둘 다:

  • AES 사용
  • ECB 문제 해결
  • 패턴 노출 방지
  • 같은 평문도 매번 다른 암호문 생성

을 한다.

즉 둘 다 ECB보다 훨씬 안전하다.


CBC 동작 원리

CBC는:

현재 평문
XOR 이전 암호문
→ AES 암호화
 

구조다.

첫 블록은 이전 암호문이 없으므로 IV(초기값)를 사용한다.


CBC 흐름

Ci=EK(Pi⊕Ci−1)C_i = E_K(P_i \oplus C_{i-1})

그림으로 보면:

P1 XOR IV -> AES -> C1
P2 XOR C1 -> AES -> C2
P3 XOR C2 -> AES -> C3
 

이런 느낌이다.


CBC 장점

  • ECB 패턴 노출 해결
  • 구현 단순
  • 오래 검증됨

과거 HTTPS에서도 엄청 많이 사용했다.


CBC 치명적 단점

1. 위변조 검증이 없음

CBC는:

암호화만 함
 

즉 공격자가 암호문 일부를 조작해도:

  • 복호화 자체는 될 수 있음
  • 데이터 변조 탐지 못할 수 있음

그래서 별도로:

  • HMAC
  • SHA 인증

등을 추가해야 했다.


2. Padding Oracle Attack 문제

CBC는 블록 맞추려고 padding 사용한다.

예:

HELLO
→ 뒤에 패딩 추가
 

이 패딩 오류 메시지를 잘못 처리하면:

Padding Oracle Attack
 

이라는 매우 위험한 공격이 가능하다.

실제 HTTPS에서도 큰 문제였다.


3. 병렬 처리 비효율

CBC는:

이전 블록 결과 필요
 

하다.

즉:

C1 계산 끝나야 C2 가능
 

이라 CPU 병렬처리에 불리하다.


GCM은 뭐가 다를까?

GCM은 내부적으로:

  • CTR 모드 기반 암호화
  • Galois 인증

을 결합했다.

즉:

암호화 + 인증(Authentication)
 

을 동시에 수행한다.


GCM 핵심 특징

1. AEAD 지원

GCM은:

Authenticated Encryption with Associated Data
 

즉:

  • 기밀성(confidentiality)
  • 무결성(integrity)
  • 인증(authentication)

을 함께 제공한다.


2. Authentication Tag 생성

GCM은 암호화 결과와 함께:

TAG
 

를 만든다.

예:

암호문 + 인증태그
 

복호화 시:

  • TAG 검증 실패
    → 즉시 오류

즉 데이터 조작을 바로 탐지한다.


3. 병렬 처리 매우 강함

GCM은 CTR 기반이라:

Ci=Pi⊕EK(Nonce∣∣Counteri)C_i = P_i \oplus E_K(Nonce || Counter_i)

각 블록이 독립적이다.

즉:

C1
C2
C3
 

동시에 계산 가능하다.

그래서 현대 CPU에서 엄청 빠르다.

특히 AES-NI와 궁합이 매우 좋다.


4. Padding 필요 없음

CTR 기반이라:

padding 자체가 필요 없음
 

따라서 CBC의 padding oracle 공격도 없다.


실제 현대 인터넷은 거의 GCM

현재:

  • HTTPS TLS 1.2+
  • TLS 1.3
  • VPN
  • 클라우드
  • 모바일 앱

거의 AES-GCM 사용한다.


Java 실무 기준

예전:

 
AES/CBC/PKCS5Padding
 

현재 권장:

 
AES/GCM/NoPadding
 

이다.


그런데 GCM도 주의점이 있다

핵심:

Nonce 재사용 절대 금지
 

다.

같은 키 + 같은 nonce 재사용하면 매우 위험하다.

실무에서는:

  • 랜덤 nonce 생성
  • 절대 중복 금지

가 핵심이다.


정리 비교

항목CBCGCM
패턴 숨김 O O
무결성 검증 X O
인증 태그 X O
병렬 처리 불리 매우 유리
Padding 필요 O X
현대 권장 거의 안씀 표준급
주요 위험 Padding Oracle Nonce 재사용

핵심 한 줄

CBC는:

"암호화만 하는 과거 방식"
 

이고,

GCM은:

"암호화 + 위변조 검증까지 포함한 현대 표준 방식"
 

이라고 보면 된다.

 
반응형

'system_fundamentals > security_cryptography' 카테고리의 다른 글

스트림 암호 vs 블록 암호  (0) 2026.05.14
IV는 왜 필요한가  (0) 2026.05.14
AES는 왜 빠른가  (0) 2026.05.14
ECB 모드는 왜 위험한가  (0) 2026.05.14
파일 checksum 원리  (0) 2026.05.13

댓글