Goomba

[블록 암호화] 블록 암호화 - CBC 모드

  • crypto

CBC 모드는 Cipher Block Chaining의 약자로, ECB보다 안전한 운용 방식입니다.

1. AES-CBC 란?

특징설명
암호 알고리즘AES (Advanced Encryption Standard)
지원 키 길이128비트, 192비트, 256비트
블록 크기128비트(16바이트) 고정
IV 길이128비트 (블록 크기와 동일)
암호화 방식이전 암호문 블록과 평문 블록을 XOR 후 AES 암호화

2. CBC 동작 원리

CBC의 동작은 다음 단계로 정리할 수 있습니다.

  1. 첫 블록은 IV와 평문 블록을 XOR 연산
  2. XOR된 결과를 AES 암호화하여 첫 암호문 생성
  3. 이후 블록은 직전 암호문과 평문 블록을 XOR하고 AES 암호화 (반복)

ECB와 동일하게 블록 단위로 암호화를 해야 하기 때문에 PKCS#7과 같은 패딩이 필요합니다.

2-2. CBC 장점

CBC는 IV가 필요하고 XOR로 인한 구조로 ECB에 비해 보안성이 높습니다.

2-2. CBC 문제

그렇다고 해서 ECB에 비해 보안성이 높을 뿐 여러 단점이 존재합니다.

단점설명
암호화 병렬화 불가능암호문을 생성하려면 이전 암호문이 있어야 하는 문제 (복호화는 병렬화 가능)
패딩 필요ECB와 동일하게 패딩 필요
무결성 없음단순 블록 암호화로 변조 탐지 불가능
오류 확산비트 에러 시 해당 블록과 다음 블록에 오류가 발생

2-3. CBC 주의사항

CBC 모드는 IV의 보안이 매우 중요한 알고리즘입니다.
IV는 키와 동일하게 재사용해서는 안되는데, 그 이유는 재사용 시 첫 블록의 패턴이 노출되기 때문입니다.
또한 IV는 반드시 무작위 값을 사용하여 공격 가능성을 줄여야 합니다.

3. 사용 사례

CBC는 CMAC(CBC-MAC)과 같은 알고리즘으로 활용합니다.