Crypto

블록 암호 운용 모드

부산형 2020. 5. 3. 20:04

ECB(Electronic Code Book)

가장 간단한 구조이며 암호화하려는 메시지를

여러 블록으로 나누어 각각 암호화하는 방식

모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약

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

암호화한 결과 역시 같음

공격자가 비슷한 메시지를 반복적으로 암호화 하는

반복 공격에 취약한 성질

한 개의 블록이 해독되면 나머지 블록도 해독됨

각 블록이 독립적으로 동작하므로

한 블록에서 에러가 난다고 해도

다른 블록에 영향을 주지 않음

출처: 위키백과
출처: 위키백과

 

 

 

CBC(Cipher Block Chaining)

각 블록은 암호화되기 전에

이전 블록의 암호화 결과와 XOR되며 

첫 블록의 경우에는 초기화 벡터가 사용됨

초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에

매 암호화마다 다른 초기화 벡터를 사용

블록 암호화 운영 모드 중 제일 높은 암호화 방법으로 가장 많이 사용

암호화가 병렬처리가 아닌 순차적으로 수행(단점)

깨진 암호문의 해당 블록과 이후 블록의 암호문까지 영향을 미침

*초기화 벡터IV(Initialization Vector)

첫 블록을 암호화할 때 사용되는 값

1단계 앞의 암호문 블록이 존재하지 않으므로

대신하는 비트 블록을 의미

출처: 위키백과

 

 

CFB(Cipher FeedBack)

CBC모드의 변형으로 블록 암호를 자기 동기 스트림 암호로 변환

CFB의 동작 방식은 CBC와 비슷하며 

암호 해제 방식은 CBC모드와 거의 비슷

출처: 위키백과

 

 

OFB(Output FeedBack)

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

XOR 명령의 대칭 때문에 암호화와 암호 해체 방식은 완전 동일

블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같음

->패딩이 필요 없음

해당블록까지만 대응되는 한 블록에만 영향을 미치므로

영상이나 음성과 같은 digitized analog신호에 많이 사용

 

출처: 위키백과

 

 

CTR(Counter)

블록암호를 스트림 암호로 바꾸는 구조를 가짐

카운터 방식에서는 각 블록마다 현재 블록이 몇 번째인지 값을 얻어

그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용

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

카운터 모드는 각 블록의 암호화 및 복호화가 이전 블록에 의존하지 않으며

따라서 병렬적으로 동작하는 것이 가능

혹은 암호화된 문자열에서 원하는 부분만 복호화하는 것도 가능

CTR모드는 OFB와 같은 스트림 암호의 일종

병렬처리 가능

출처: 위키백과