블록암호란?
- 기밀성 있는 정보를 고정된 크기의 블록단위로 구성하여 암호화 작업을 하는 대칭키 암호 시스템
- 운용 방식에는 크게 ECB, CBC, CTR 세 가지 운용 방식이 있다.
ECB(Electronic Code Book)
- 암호화 작업을 하려는 메시지를 여러 블록에 나누어
순차적으로 각각 암호화하는 방식(가장 간단한 구조) - 모든 블록이 같은 암호화 키 사용 → 한 블록만 해석되면 나머지 블록도 해석
→ 보안에 취약(대표적인 공격 : 복사/붙여 넣기) - 각 블록이 독립적으로 동작 → 한 블록의 에러가 다른 블록에 영향 x
- 복호화 후 평문을 알기 위해선 Padding 필요 ← 암호문이 블록의 배수가 되기 때문
CBC(Cipher Block Chain)
- 평문의 각 블록은 XOR 연산을 통해 이전 암호문과 연산되고 첫 번째 암호문은 IV가 암호문
- 보안성이 가장 높은 암호화 방법
- 암호화가 병렬처리가 아닌 순차적으로 수행되어야 함(병렬화 불가능)
- 깨진 암호문의 해당블록과 다음 블록의 평문까지 영향
- 복호화 후 평문을 알기 위해선 Padding 필요 ← 암호문이 블록의 배수가 되기 때문
CTR(Counter)
- 각 블록마다 (현재 블록의 순서 + Nonce)를 블록암호의 입력으로 사용,
이후 각 블록에서 얻은 연속적인 난수를 평문과 XOR 연산 - CTR 모드는 스트림 암호의 일종
- CTR 모드의 암/복호화는 완전히 같은 구조가 되므로 구현이 간단
- 블록의 순서 임의로 암/복호화 가능 → 병렬처리 가능
- 블록이 서로 독립적임