본문 바로가기
system_fundamentals/security_cryptography

IV는 왜 필요한가

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

IV(Initialization Vector)는 쉽게 말하면:

암호화를 시작할 때 넣는 랜덤한 시작값
 

이다.

왜 필요하냐면 핵심은 딱 하나다:

같은 데이터가 항상 같은 암호문이 되는 걸 막기 위해
 

서다.


IV가 없으면 생기는 문제

AES는 기본적으로:

같은 평문 + 같은 키
=
항상 같은 암호문
 

이 나온다.

예:

비밀번호 = HELLO
키 = KEY123
 

이면 결과가 매번 동일하다.

즉:

HELLO -> ABCDEF
HELLO -> ABCDEF
HELLO -> ABCDEF
 

이렇게 된다.


이게 왜 위험할까?

공격자는 내용을 몰라도:

"아 이 둘은 같은 데이터구나"
 

를 알 수 있다.

예를 들어 DB 암호화에서:

사용자암호문
A X1Y2Z3
B X1Y2Z3

라면 공격자는:

"A와 B의 값이 동일"
 

하다는 걸 알게 된다.


IV의 역할

IV를 추가하면:

같은 평문이어도
매번 다른 시작 상태
 

로 암호화가 시작된다.

즉:

HELLO + IV1 -> AAA111
HELLO + IV2 -> BBB222
HELLO + IV3 -> CCC333
 

가 된다.


CBC에서 IV 사용 방식

CBC 첫 블록은 이전 암호문이 없다.

그래서 첫 번째 블록은:

C1=EK(P1⊕IV)C_1 = E_K(P_1 \oplus IV)

즉:

평문 XOR IV
→ AES 암호화
 

한다.


왜 첫 블록이 중요할까?

만약 IV 없으면:

첫 블록 패턴
 

이 그대로 반복된다.

실제로 파일 포맷들은 앞부분이 비슷하다.

예:

PNG 파일 헤더
ZIP 파일 헤더
PDF 헤더
 

이런 건 거의 고정이다.

IV가 없으면:

파일 종류 추측 가능
 

해진다.


IV는 비밀이어야 할까?

중요한 포인트다.

보통:

IV는 공개돼도 된다
 

오히려 대부분:

  • 암호문 앞에 같이 저장
  • 네트워크로 같이 전송

한다.

예:

[IV][암호문]
 

형태.


그럼 공개되는데 왜 의미가 있나?

IV의 목적은:

비밀 유지
 

가 아니다.

목적은:

매번 다른 암호화 결과 생성
 

이다.

즉 공격자가 IV를 알아도:

  • 키를 모르므로 복호화 불가
  • 단지 반복 패턴만 제거됨

이다.


하지만 IV는 “예측 가능하면” 위험

CBC에서는 랜덤 IV가 중요하다.

만약:

IV = 항상 0
 

이면 사실상 의미가 거의 없다.

또 predictable IV도 일부 공격 가능성이 생긴다.

그래서 보통:

cryptographically secure random
 

으로 생성한다.


GCM에서는 IV 대신 Nonce 개념

GCM에서는 보통:

Nonce
 

라는 표현을 더 많이 쓴다.

역할은 비슷하다:

매 암호화마다 고유값 제공
 

그런데 GCM은 더 엄격함

CBC는 IV 재사용해도 패턴 노출 정도 문제인데,

GCM은:

같은 키 + 같은 nonce 재사용
=
심각한 보안 붕괴
 

가 발생할 수 있다.

그래서 GCM에서는 nonce 중복 금지가 매우 중요하다.


Java 실무 예시

CBC:

 
Cipher.getInstance("AES/CBC/PKCS5Padding")
 

GCM:

 
Cipher.getInstance("AES/GCM/NoPadding")
 

보통:

 
SecureRandom
 

으로 IV/nonce 생성한다.


핵심 요약

IV가 필요한 이유는:

같은 데이터라도 매번 다른 암호문이 나오게 만들어
패턴 분석 공격을 막기 위해서
 

다.

즉 IV는:

암호화의 "랜덤 시작점"
 

역할을 한다.

반응형

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

파일 암호화 구조  (0) 2026.05.14
스트림 암호 vs 블록 암호  (0) 2026.05.14
CBC/GCM 차이  (1) 2026.05.14
AES는 왜 빠른가  (0) 2026.05.14
ECB 모드는 왜 위험한가  (0) 2026.05.14

댓글