본문 바로가기
공부/정보보안

블록 암호 운용 방식

by Skogkatt의 개인 블로그 2019. 8. 6.
반응형

블록 암호 운용 방식

  • 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다.
  • 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며,
    그 블록들을 어떻게 암호화할지를 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식으로 부른다.
  • 현대의 일부 운용 방식은 암호화와 인증을 효율적인 방식으로 병합해 놓고 있는데, 이를 인증된 암호 방식(authenticated encryption) 방식으로 부른다.
  • 운용 방식이 일반적으로 대칭형 암호화와 관련하는 것이 일반적이지만 RSA와 같은 공개 키 암호 방식 원칙에도 적용할 수 있다. [각주:1]

초기화 벡터(initialization vector, IV)

  • 첫 블록을 암호화할 때 사용되는 값을 의미한다.
  • 같은 IV가 반복 사용되어서는 안 된다.
    초기화 벡터가 같은 경우 비슷한 두 개의 평문을 암호화했을 때, 결과물이 똑같이 나오는 등의 보안 문제가 발생할 수 있다.
  • CTR 등의 일부 운용 방식에서는 초기화 벡터라는 용어 대신 Nonce(number used once)라는 용어를 사용한다.
    이 표현은 보통 초기화 벡터가 매번 달라야 하는 것 외에 별다른 요구 조건이 없을 경우 사용한다.

블록 암호 운용 방식의 종류

ECB(Electric Code Book) mode

  • 운영 모드 중 가장 간단한 구조를 가진다.
  • 평문을 여러 블록으로 나누어 나눠진 각각의 블록을 암호화한다. [각주:2]
  • 각 블록은 독립적으로 처리되므로 특정 블록에서 에러가 발생하더라도 다른 블록에는 전혀 영향을 주지 않는다.
  • 모든 블록이 같은 암호화 키를 사용하기 때문에 한 개의 블록이 해독되면 나머지 블록 또한 해독된다. [각주:3]

CBC(Cipher Block Chaining) mode

  • 각각의 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR 된다. [각주:4]
  • 첫 블록의 경우 이전의 암호문 블록이 존재하지 않기 때문에 IV(Initialization Vector, 초기화 벡터)가 사용된다.
  • 암호화 시에는 이전 블록 암호화 결과에 의존하기 때문에 병렬화가 불가능하지만,
    복호화의 경우 각 블록을 복호화한 다음 이전 암호화 블록과 XOR 하여 복구할 수 있기 때문에 병렬화가 가능하다.
  • 복호화 시 CBC모드의 암호문 블록이 1개 파손된 경우 암호문 블록의 길이가 바뀌지 않았다면 평문 블록에 미치는 영향은 2개 블록에 머문다.
    반면 평문 블록의 1bit 오류는 모든 암호문에 영향을 미친다.

CFB(Cipher FeedBack) mode

  • CBC의 변형된 방식으로, 블록 암호를 비동기식 스트림 암호로 변환한다.
  • 어떠한 값과 평문을 XOR 한 결괏값이 암호문으로 나오는 형태가 스트림 암호와 같다.
    비록 CFB 모드가 DES, AES 같은 블록 암호를 이용한 모드지만, 그 결과는 스트림 암호와 같기 때문에
    키 스트림이 암호문에 의존하는 비동기식 스트림 암호라 할 수 있다.
  • 스트림 암호의 특성상 Padding이 필요 없고 문자가 암호화되는 즉시 전송할 수 있으며,
    키 스트림과 평문의 XOR형태와 같기 때문에 블록 암호의 복호화 과정 없이 해당 평문을 복호화할 수 있다.

OFB(Output FeedBack) mode

  • 블록 암호를 동기식 스트림 암호로 변환한다.
  • 평문 블록이 동일하면 암호문이 같아지는 ECB 모드의 단점과 오류 전파가 발생하는 CBC, CFB 모드를 개선한 운용 방식이다.
  • CFB는 다음 블록에 IV를 암호화 한 값과 평문을 XOR 한 결과를 사용하지만, OFB는 IV를 암호화 한 값을 사용한다.
  • 전송 중인 암호문의 비트 손실이나 삽입 등이 발생하면 그다음에 오는 평문은 모두 오류가 발생하기 때문에 동기를 새로 맞추어야 한다.

 

CTR(CounTeR) mode

  • CFB와 OFB와 같이 CTR 모드는 실제로 스트림 암호이다.
  • 암호에 사용할 Nonce을 구하고 1씩 증가하는 Counter을 결합하여 사용한다.
  • 이전 블록의 어떠한 값도 다음 블록에 영향을 주지 않기 때문에 오류 전파가 없고 병렬 처리가 가능하며 원하는 부분만 복호화하는 것도 가능하다.


모드 특징
ECB
  • IV가 사용되지 않는 가장 간단하고 빠른 모드이다. 

  • 암호화/복호화의 병렬 처리가 가능하다. 

  • 특정 블록에서 오류가 발생하더라도 다른 블록에는 영향을 주지 않는다.

  • 암호문을 분석하여 평문을 알아낼 수 있는 치명적인 단점이 존재한다.
  • 재전송 공격이 가능하다.
  • 평문 - 암호화 - 암호문 과정을 거친다.
CBC
  • 복호화 시 CBC모드의 암호문 블록이 1개 파손된 경우 암호문 블록의 길이가 바뀌지 않았다면 평문 블록에 미치는 영향은 2개 블록에 머문다.
    반면 평문 블록의 1bit 오류는 모든 암호문에 영향을 미친다.
  • 복호화 과정에서의 병렬 처리가 가능하다.
  • 평문 XOR IV - 암호화 - 암호문 과정을 거치며 암호문은 다음 블록에서 사용된다.
CFB
  • 비동기식 스트림 암호의 구조를 갖는다.
  • 복호화 과정에서의 병렬 처리가 가능하다.
  • IV 암호화 - 암호화결과 XOR 평문 - 암호문 과정을 거치며 암호문은 다음 블록에서 사용된다.
  • 재전송 공격이 가능하다.
OFB
  • 동기식 스트림 암호의 구조를 갖는다.
  • 병렬 처리가 불가능하다.
  • 평문 블록이 동일하면 암호문이 같아지는 ECB 모드의 단점과 오류 전파가 발생하는 CBC, CFB 모드를 개선한 운용 방식이다.
  • 전송중인 암호문의 비트 손실이나 삽입 등이 발생하면 그 다음에 오는 평문은 모두 오류가 발생하기 때문에 동기를 새로 맞추어야 한다.
  • IV 암호화 - 암호화결과 XOR 평문 - 암호문 과정을 거치며 IV 암호화 값은 다음 블록에서 사용된다.
CTR
  • 스트림 암호의 구조를 갖는다.
  • 암호에 사용할 Nonce을 구하고 1씩 증가하는 Counter을 결합하여 사용한다.
  • 암호화/복호화의 사전 준비가 가능하다.
  • 암호화/복호화의 병렬 처리가 가능하다.
  • 이전 블록의 어떠한 값도 다음 블록에 영향을 주지 않기 때문에 오류 전파가 없고 병렬처리가 가능하며 원하는 부분만 복호화 하는 것도 가능하다.
  1. 길이가 더 긴 메시지의 공개 키 암호 방식은 일반적으로 복합 암호 방식(hybrid encryption)이라 부른다. [본문으로]
  2. 평문을 고정된 길이로 나눌 때, 마지막 블록에서 채워지지 않는 비트가 발생할 수 있는데, 이럴 경우에는 Padding(빈 데이터)를 추가하여 크기를 맞춰준다. [본문으로]
  3. 이것은 공격자가 비슷한 메시지를 반복적으로 암호화하는 반복 공격에도 취약한 성질을 가진다. [본문으로]
  4. 블록이 암호화될 때 암호화된 블록은 전송되지만, 다음 블록을 암호화할 때 사용하기 위해 메모리에 저장되어야 한다. [본문으로]
반응형

'공부 > 정보보안' 카테고리의 다른 글

RSA 암호  (0) 2019.08.17
공개 키 암호(public-key cryptography)  (0) 2019.08.14
키 배송 문제(key distribution problem)  (0) 2019.08.04
DES(Data Encryption Standard)  (0) 2019.08.01
P-Box, S-Box  (0) 2019.07.27

댓글