본문 바로가기
system_fundamentals/security_cryptography

ECB 모드는 왜 위험한가

by 죄니안죄니 2026. 5. 14.
반응형
 

 

 
 
 

이미지도 결국 픽셀 데이터의 반복 덩어리인데, ECB(Electronic Codebook) 모드가 위험한 이유는 각 블록을 독립적으로 암호화 하므로:

같은 평문 블록 → 항상 같은 암호문 블록

이 되기 때문이다.

즉, 암호화는 했는데 “패턴”이 그대로 남는다. 반복영역, 경계, 구조가 노출됨


먼저 AES 자체는 안전하다

많이 헷갈리는 부분인데:

  • AES 알고리즘 자체는 매우 안전
  • 문제는 "어떻게 사용하느냐"

다.

AES는 블록 암호다.

즉:

128bit 단위로 끊어서 암호화
 

한다.

근데 여러 블록을 어떻게 연결해서 암호화할지 결정하는 게:

  • ECB
  • CBC
  • GCM
  • CTR

같은 “모드”다.


ECB의 동작 방식

ECB는 그냥 블록마다 독립적으로 암호화한다.

즉:

평문1 -> AES -> 암호문1
평문2 -> AES -> 암호문2
평문3 -> AES -> 암호문3
 

끝이다.

연결성이 없다.


문제의 핵심

AES는 같은 입력 + 같은 키면 항상 같은 출력이 나온다.

즉:

"A" -> XYZ123
"A" -> XYZ123
"A" -> XYZ123
 

항상 동일하다.

따라서 ECB에서는:

같은 데이터 패턴
=
같은 암호문 패턴
 

이 된다.


그래서 이미지 암호화하면 충격적인 결과가 나옴

펭귄이미지
암호화했는데 형태가 남아있다

유명한 예시가 펭귄 이미지다.

ECB로 이미지 암호화하면:

  • 색상 정보는 깨지는데
  • 윤곽/패턴은 남는다

즉:

"암호화했는데 그림이 보임"
 

현상이 생긴다.

왜냐면:

  • 하얀 영역 반복
  • 검정 영역 반복
  • 같은 픽셀 패턴 반복

이 모두 동일 암호문 블록으로 변환되기 때문이다.


실무에서 진짜 위험한 이유

예를 들어 DB에 이런 값 저장:

사용자 역할
user1 ADMIN
user2 USER
user3 USER

ECB면:

"USER" 블록
=
항상 같은 암호문
 

이 된다.

공격자는:

  • 어떤 값이 반복되는지
  • 어떤 사용자끼리 같은 값인지
  • 특정 패턴 존재 여부

를 알 수 있다.

즉:

내용은 몰라도 구조는 노출
 

된다.

이게 엄청 위험하다.


더 위험한 점 — 블록 치환 공격

ECB는 블록이 독립적이라:

암호문 블록 순서 교체
 

도 가능하다.

예를 들어:

[USER]
[1000원]
 

블록을:

[ADMIN]
[1000000원]
 

같은 다른 블록으로 교체 가능성이 생긴다.

즉:

  • 무결성 보장 안됨
  • 블록 재조립 공격 가능

CBC/GCM은 왜 안전한가

ECB와 다르게:

  • 이전 블록 영향
  • IV(초기값)
  • nonce

를 사용한다.

예를 들어 CBC:

현재 평문 XOR 이전 암호문
 

후 암호화한다.

따라서 같은 평문이어도:

매번 다른 암호문
 

이 나온다.


GCM이 현재 가장 많이 쓰이는 이유

요즘은 보통:

  • AES-GCM
  • ChaCha20-Poly1305

쓴다.

특히 Galois/Counter Mode 는:

  • 빠름
  • 병렬처리 가능
  • 무결성 검증 포함
  • 패턴 노출 방지

라서 HTTPS에서도 많이 사용된다.


ECB를 쓰면 안 되는 경우

사실상 대부분.

특히:

  • 개인정보
  • 로그인 토큰
  • DB 암호화
  • 네트워크 통신
  • 파일 암호화

에서 ECB는 거의 금기 수준이다.


그런데 ECB를 아직 쓰는 곳도 있나?

의외로 있다.

주로:

  • 레거시 시스템
  • 옛 금융 장비
  • 잘못 만든 사내 암호화
  • "AES니까 안전하겠지" 착각

때문이다.

실무 보안 점검에서도:

AES/ECB/PKCS5Padding
 

보이면 거의 바로 지적 사항이다.


Java에서도 실수 많이 함

예:

Cipher.getInstance("AES");
 

이렇게 쓰면 일부 환경에서 기본값이:

AES/ECB/PKCS5Padding
 

될 수 있다.

그래서 실무에서는 명시적으로:

 
AES/GCM/NoPadding
 

같이 적는다.


핵심 요약

ECB가 위험한 이유는:

같은 평문 블록이 항상 같은 암호문 블록이 되어
데이터 패턴과 구조가 노출되기 때문
 

이다.

즉:

"암호화는 했는데 정보가 새고 있다"
 

상태가 된다.

반응형

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

CBC/GCM 차이  (1) 2026.05.14
AES는 왜 빠른가  (0) 2026.05.14
파일 checksum 원리  (0) 2026.05.13
무결성이란 무엇인가  (0) 2026.05.13
Argon2 vs bcrypt  (0) 2026.05.13

댓글