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 |