정보보안기사(암호학) - 대칭 블록 암호 운영모드

Kim Dae Hyun·2021년 5월 8일
2

정보보안기사

목록 보기
1/1
post-thumbnail

블럭 암호 운영모드?

  • 블럭 암호를 다양하게 응용하기 위해 NIST에서 정의한 5가지 운영모드이다.
  • 대표적인 블럭 암호 알고리즘인 DES와 AES를 포함하여 어떤 대칭 블록 암호 알고리즘에도 적용 가능하다.
  • 하나의 키를 사용하여 반복적으로 블럭 암호를 수행하기 위해 이용된다.

종류

  • ECB모드 (전자 부호표 모드, Electronic CodeBook Mode)
  • CBC모드 (암호 블록 연쇄 모드, Cipher Block Chaining Mode)
  • CFB모드 (암호 피드백 모드, Cipher-FeedBack Mode)
  • OFB모드 (출력 피드백 모드, Output-FeedBack Mode)
  • CTR모드 (Counter Mode, 카운터 모드)

초기 벡터 (IV, Initialization Vectior)

  • IV는 반드시 송수신자 모두가 알고 있어야 한다.
  • IV는 제 3자로부터 예측이 불가능해야 한다.
  • 평문과 연관지어 IV를 예측할 수 없어야 한다.
  • IV는 암호화할 때마다 다른 랜덤 비트열을 사용해야 한다.

ECB모드

개요 및 특징

  • 운영 모드 중 가장 간단한 모드
  • 사전에 난수표와 같은 전자 코드북을 송수신자 간에 공유
  • 평문은 N개의 n비트 블럭으로 분할
  • 마지막 블럭에서 평문의 크기가 부족하다면 패딩 값을 두어 모두 동일한 크기의 블럭으로 만든다.
  • 암호화, 복호화에 쓰이는 키는 동일하다.

장점

  • 블럭 간 독립적이기 때문에 암,복호화를 병렬적으로 수행 가능하다.
  • 다수 평문 블럭 중 특정 블럭만 독립적으로 암호화 할 수 있다.
  • 오류 발생 시 다른 블럭으로 오류가 전파되거나 영향을 미치지 않는다.

단점

  • 동일한 평문 블럭에 대해 항상 같은 암호문이 출력되기 때문에 암호 해독 가능성이 높다. (평문 블럭 패턴와 암호문 블럭 패턴이 일정하게 유지됨.)

CBC모드

개요

  • 암호화 시 암호화 하고자 하는 평문 블럭과 이전 암호문 블럭을 XOR한다.
    이후, XOR의 결과를 암호화 모듈을 통해 암호화 하여 암호문 블럭을 생성한다.
  • 복호화 시 복호화 하고자 하는 암호문 블럭을 복호화 모듈을 통해 복호화하고
    이후, 복호화 모듈의 결과를 이전 암호문 블럭과 XOR하여 평문 블럭을 생성한다.
  • CBC에서 암호화와 복호화는 정반대이다. 하나만 정확히 이해하고 외우자.
  • 암호화 시 첫 번째 평문 블럭은 이전 암호문 블럭이 없기 때문에 XOR연산을 위해 초기 벡터(Initialization Vector, IV)를 사전에 송수신자 간 공유해야 한다.
  • 첫 번째 평문 블럭은 IV와 XOR연산 후에 연산 결과를 암호화하여 암호문 블럭을 생성한다.

특징

  • n번째 암호문 블럭은 n-1까지의 평문 블럭의 영향을 받는다. 때문에 암호문을 제대로 복호화하기 위해 평문은 순서대로 배열되어 있어야 한다.
  • 에러의 전파
  • 복호화 시 암호문 블럭 n번째(Cn)에서 에러가 발생하면 m번째 평문 블럭(Pm)과 m+1번째 평문 블럭(Pm+1)에서 에러가 발생한다.
  • 복호화 시 Cn에서 에러가 발생해도 Cn+2부터는 정상적으로 복호화 된다.
    (에러가 발생한 암호문 블럭과 다음 암호문 블럭까지만 영향을 미친다)

CFB 모드

개요

  • CFB모드는 블럭 암호를 스트림 암호로 바꿀 수 있다. 때문에 메시지를 블럭의 크기에 맞게 패딩할 필요가 없어서 실시간으로 사용 가능하다.
  • 평문을 암호화 하지 않는다.
  • 이전 암호문 블럭 혹은 IV를 암호화 한다.
  • 암호화 시, IV혹은 이전 블럭 암호문을 암호화 한 결과를 평문 블럭과 XOR한 결과를 암호문 블럭으로 생성한다.
  • 복호화 시, IV혹은 이전 암호문 블럭을 암호화 모듈로 복호화한 결과를 암호문 블럭과 XOR하여 평문 블럭을 얻어낸다.

특징

  • 암호화와 복호화에 암호화 모듈만을 필요로 한다.
  • CFB는 DES, AES와 같은 블럭 암호를 이용하지만, 결과는 키 스트림이 암호문에 의존하는 비동기식 스트림 암호 방식과 같다.
  • CBC와 마찬가지로 오류가 전파된다.

OFB 모드

개요

  • OFB는 동일한 평문 블럭에 대해 같은 암호문을 도출하는 ECB모드의 단점과 오류가 전파되는 CBC, CFB모드의 단점을 개선한 운영모드이다.
  • 암호 모듈의 출력과 평문 블럭을 XOR하여 암호문 블럭을 생성하므로 오류가 전파되지 않는다.
  • IV 혹은 이전 암호 모듈의 결과를 암호화 한다.
  • 암호 모듈의 결과를 평문 블럭과 XOR한다.
  • 암호화와 복호화에 암호화 모듈만을 필요로 한다.

특징

  • 암호화와 복호화에 암호화 모듈만을 필요로 한다.
  • 오류가 전파되지 않는다.
  • 암호 모듈의 출력은 평문 블럭과 무관하다.
  • CFB모드와 마찬가지로 OFB모드는 블럭 암호 기반이지만 스트림 암호이다. CFB와 다른 점은 키 스트림이 평문이나 암호문에 독립적이므로 동기식 스트림 암호라는 것이다.

Counter모드

개요

  • 암호화 시 피드백 시 피드백이 존재하지 않는다.
  • 키 스트림의 pseudo random number(의사난수)는 카운터를 사용한다.
  • OFB모드와 같이 평문과 암호문에 독립적인 키 스트림을 생성한다.
  • 피드백이 없으므로 ECB모드처럼 서로 독립적인 암호문 블럭을 생성한다.

특징

  • 암호화와 복호화에 암호화 모듈만을 필요로 한다.
  • 오류가 전파되지 않는다.
  • 동기식 스트림 암호화를 지원한다.
  • 피드백이 없으므로 ECB와 마찬가지로 병렬처리가 가능하다.

Summary

  • 순수한 블럭 암호 모드: ECB, CBC
  • 스트림 암호방식 블럭 암호 모드: CFB, OFB, CTR
  • EBC: 간단, 병렬처리가능, 재전송 공격 가능
  • CBC: 복호화시 병렬처리가능, 오류전파
  • CFB: 복호화시 병렬처리가능, 패딩x, 암호화 모듈만 필요, 오류전파
  • OFB: 전처리 가능, 암호화 모듈만 필요, 병렬처리불가
  • CTR: 전처리 가능, 암호화 모듈만 필요, 병렬처리가능
profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

2개의 댓글

comment-user-thumbnail
2021년 5월 10일

도움이 정말 많이 되었습니다 감사합니다 :)

답글 달기
comment-user-thumbnail
2021년 5월 15일

미래가 기대되는 기술이네욤

답글 달기