호우동의 개발일지

Today :

article thumbnail

블록암호란?

- 기밀성 있는 정보를 고정된 크기의 블록단위로 구성하여 암호화 작업을 하는 대칭키 암호 시스템
- 운용 방식에는 크게 ECB, CBC, CTR 세 가지 운용 방식이 있다.

 


ECB(Electronic Code Book)

ECB 관련 그림
ECB 구조

  • 암호화 작업을 하려는 메시지를 여러 블록에 나누어
    순차적으로 각각 암호화하는 방식(가장 간단한 구조)

  • 모든 블록이 같은 암호화 키 사용 → 한 블록만 해석되면 나머지 블록도 해석
    → 보안에 취약(대표적인 공격 : 복사/붙여 넣기)

  • 각 블록이 독립적으로 동작 → 한 블록의 에러가 다른 블록에 영향 x
  • 복호화 후 평문을 알기 위해선 Padding 필요 ← 암호문이 블록의 배수가 되기 때문

 


CBC(Cipher Block Chain)

CBC 구조
CBC 구조

  • 평문의 각 블록은 XOR 연산을 통해 이전 암호문과 연산되고 첫 번째 암호문은 IV가 암호문
  • 보안성이 가장 높은 암호화 방법
  • 암호화가 병렬처리가 아닌 순차적으로 수행되어야 함(병렬화 불가능)
  • 깨진 암호문의 해당블록과 다음 블록의 평문까지 영향
  • 복호화 후 평문을 알기 위해선 Padding 필요 ← 암호문이 블록의 배수가 되기 때문

 


CTR(Counter)

CTR 구조
CTR 구조

  • 각 블록마다 (현재 블록의 순서 + Nonce)를 블록암호의 입력으로 사용,
    이후 각 블록에서 얻은 연속적인 난수를 평문과 XOR 연산
  • CTR 모드는 스트림 암호의 일종
  • CTR 모드의 암/복호화는 완전히 같은 구조가 되므로 구현이 간단
  • 블록의 순서 임의로 암/복호화 가능 → 병렬처리 가능
  • 블록이 서로 독립적임