본문 바로가기

개념정리/Cryptography

[Cryptography] CBC Bit-Flipping Attack

 

CBC 모드에 대한 설명은 밑에 링크를 참고하세요.

 

6. 패딩과 운영모드

저번 시간에는 AES에 대하여 공부하였다. 이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과 블록 암호의 운영모드에 대하여 공부할 것이다. 1. 패딩 블록 암호는 블록 단위로 암호화

sungw00k.tistory.com

 


CBC 모드 (출처 : 드림핵)

CBC모드에서 블록을 암호화 하기 전에 블록을 직전 블록의 암호문과 XOR 연산을 한다. 평문의 첫 번째 블록은 이전 블록이 존재하지 않으므로 초기 벡터(IV)라고 불리는 무작위 값과 XOR 연산을 한다. 초기 벡터를 이용하여 복호화 시, 공격자가 초기 벡터를 원하는 값으로 조작할 수 있다면 CBC Bit-Flipping Attack을 할 수 있다. 

● CBC Bit-Flipping Attack

CBC Bit-Flipping Attack 공격은 공격자가 초기 벡터를 원하는 값으로 조작하여 복호화된 평문의 첫 번째 블록을 조작하는 공격이다. 

P1 = Dk(C1) ⨁ IV (P1 = 첫 번째 평문, Dk = key로 복호화, C1 = 첫 번째 암호문, IV = 초기 벡터)

첫 번째 암호문 블록의 복호화 과정을 수식으로 표현한 것이다. 첫 번째 암호문 블록은 먼저 복호화를 한 다음 IV와 XOR연산을 한다.

즉, C1을 Dk로 복호화하면 P1 ⨁ IV 값이 나오고 여기에 IV를 XOR 연산을 해주면 평문인 P1을 구할 수 있다.(XOR 연산 규칙 : A ⨁ A = 0, A ⨁ 0 = A)

Dk(C1) ⨁ IV 
= (P1 ⨁ IV) ⨁ IV
= P1 ⨁ 0
= P1

 

그러나 만약 공격자가 초기 벡터를 조작할 수 있다면 IV를 IV' = P1 ⨁ P1' ⨁ IV 로 조작하여 첫 번째 블록을 P1'로 조작할 수 있다.

Dk(C1) ⨁ IV'
= (P1 ⨁ IV) ⨁ IV'
= (P1 ⨁ IV) ⨁ P1 ⨁ P1' ⨁ IV
= 0 ⨁ 0 ⨁ P1'
= P1'

 

EX)

4바이트씩 블록 암호화한다고 하면 "AAAABBBB"인 평문은 IV' = "AAAA" ⨁ "BBBB" ⨁ IV로 IV를 조작하여 "BBBBBBBB"라는 조작된 평문을 얻게 된다. 이것이 CBC Bit-Flipping Attack 공격이다.

 

'개념정리 > Cryptography' 카테고리의 다른 글

7. Diffie-Hellman 알고리즘  (0) 2022.08.08
[Cryptography] Replay Attack  (0) 2022.08.02
6. 패딩과 운영모드  (0) 2022.08.01
5. 블록 암호 : AES  (0) 2022.07.28
4. 블록 암호 : DES  (0) 2022.07.25