정보보안 일반 - 블록암호 운영모드 CBC, ECB, CTR, CFB
본문 바로가기

정보보안 일반 - 블록암호 운영모드 CBC, ECB, CTR, CFB

액트 2019. 8. 26.

정보보안 일반 - 블록암호 운영모드 CBC, ECB, CTR, CFB

 


다음 그림은 블록암호 운용모드의 한 종류를 나타낸 것이다. 다음 그림에 해당하는 블록암호 운용모드는?

 < 그림은 안보이지만.. 아래 보기에 대한 설명만 하자면.. >
① CBC(Cipher Block Chaining) 
② ECB(Electronic CodeBook) 
③ CTR(CounTeR)
④ CFB(Cipher FeedBack)


블록 암호 운용 방식(block cipher modes of operation)

암호학에서 블록 암호 운용 방식은 하나의 키에서 블록 암호를 반복적으로 안전하게 이용하게하는 절차를 말한다.

블록암호는 특정한 길이의 블록 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그 블록들을 어떻게 암호화할지 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식이라 부른다.

 

초기화 벡터IV(Initialization vector)

첫 블록을 암호화할 때 사용되는 값(1단계 앞의 암호문 블록이 존재하지 않으므로 대신하는 비트 블록을 의미)

=> CBC모드에서 사용

암호화 때마다 다른 랜덤 비트열을 이용하는 것이 보통

 

패딩(padding)

마지막 블록이 블록의 길이와 항상 딱 맞아 떨어지지 않기 때문에, 부족한 길이만큼을 '0'으로 채우거나 임의의 비트들로 채워 넣는 것을 의미

 

 

종류


ECB 모드(electronic codebook, 전자코드북)

운용 방식 중 가장 간단한 구주를 가지며, 암호화하려는 메시지를 여러 블록으로 나누어 각각 암호화하는 방식으로 되어 있다.

ECB 모드(electronic codebook, 전자코드북)
ECB 모드(electronic codebook, 전자코드북)

전자 코드북(ECB)는 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약하다.

만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값을 가진다면, 암호화한 값 역시 같다.

=> 반복공격(Brute-Froce Attack, Dictionary ATtack)에 취약

 

 

CBC 모드(cipher block chaining, 암호 블록 체인 방식)

각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며, 첫 블록의 경우 초기화 벡터(IV)가 사용된다.

초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에, 매 암호화마다 다른 초기화 벡터를 사용해야 한다.

CBC 모드(cipher block chaining, 암호 블록 체인 방식)
CBC 모드(cipher block chaining, 암호 블록 체인 방식)

 

CBC방식은 널리 사용되는 운용 방식중 하나이며, CBC는 암호화 입력 값이 이전 결과에 의존하기 때문에 병렬화가 불가능하다.

하지만 복호화의 경우 각 블록을 복호화한 다음 이전 암호화 블록과 XOR하여 복구할 수 있기 때문에 병렬화가 가능하다.

 

 

CFB 모드(cipher feedback, 암호 피드백)

CBC의 변형으로, 블록 암호를 자기 동기 스트림 암호로 변환한다.

CFB 모드(cipher feedback, 암호 피드백)
CFB 모드(cipher feedback, 암호 피드백)

 

 

OFB 모드(output feedback, 출력 피드백)

블록 암호를 동기식 스트림 암호로 변환한다.

XOR 명령의 대칭 때문에 암호화와 복호화 방식은 완전히 동일하다.

OFB 모드(output feedback, 출력 피드백)
OFB 모드(output feedback, 출력 피드백)

 

CTR 모드(Counter, 카운터)

블록 암호를 스트림 암호로 바꾸는 구조를 가진다.

카운터 방식에서는 각 블록마다 현재 블록이 몇 번째인지 값을 얻어, 그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용한다.

그렇게 각 블록 암호에서 연속적인 난수를 얻은 다음 암호화하려는 문자열과 XOR한다.

카운터 모드는 각 블록의 암호화 및 복호화가 이전 블록에 의존하지 않으며, 따라서 병렬적으로 동작하는 것이 가능하다.

CTR 모드(Counter, 카운터)

'

CTR 모드(Counter, 카운터)

 

댓글