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와 같은 스트림 암호의 일종
병렬처리 가능
'Crypto' 카테고리의 다른 글
RSA (0) | 2020.06.28 |
---|---|
Side Channel Attack(부채널 공격) (0) | 2020.05.04 |
블록 암호의 원리 (0) | 2020.05.03 |
블록암호 VS 스트림 암호 (0) | 2020.05.02 |
의사 난수 생성의 원리 (0) | 2020.05.02 |