- ECB모드 (전자 부호표 모드, Electronic CodeBook Mode)
- CBC모드 (암호 블록 연쇄 모드, Cipher Block Chaining Mode)
- CFB모드 (암호 피드백 모드, Cipher-FeedBack Mode)
- OFB모드 (출력 피드백 모드, Output-FeedBack Mode)
- CTR모드 (Counter Mode, 카운터 모드)
- IV는 반드시 송수신자 모두가 알고 있어야 한다.
- IV는 제 3자로부터 예측이 불가능해야 한다.
- 평문과 연관지어 IV를 예측할 수 없어야 한다.
- IV는 암호화할 때마다 다른 랜덤 비트열을 사용해야 한다.
개요 및 특징
- 운영 모드 중 가장 간단한 모드
- 사전에 난수표와 같은 전자 코드북을 송수신자 간에 공유
- 평문은 N개의 n비트 블럭으로 분할
- 마지막 블럭에서 평문의 크기가 부족하다면 패딩 값을 두어 모두 동일한 크기의 블럭으로 만든다.
- 암호화, 복호화에 쓰이는 키는 동일하다.
장점
- 블럭 간 독립적이기 때문에 암,복호화를 병렬적으로 수행 가능하다.
- 다수 평문 블럭 중 특정 블럭만 독립적으로 암호화 할 수 있다.
- 오류 발생 시 다른 블럭으로 오류가 전파되거나 영향을 미치지 않는다.
단점
- 동일한 평문 블럭에 대해 항상 같은 암호문이 출력되기 때문에 암호 해독 가능성이 높다. (평문 블럭 패턴와 암호문 블럭 패턴이 일정하게 유지됨.)
개요
- 암호화 시 암호화 하고자 하는 평문 블럭과 이전 암호문 블럭을 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모드는 블럭 암호를 스트림 암호로 바꿀 수 있다. 때문에 메시지를 블럭의 크기에 맞게 패딩할 필요가 없어서 실시간으로 사용 가능하다.
- 평문을 암호화 하지 않는다.
- 이전 암호문 블럭 혹은 IV를 암호화 한다.
- 암호화 시, IV혹은 이전 블럭 암호문을 암호화 한 결과를 평문 블럭과 XOR한 결과를 암호문 블럭으로 생성한다.
- 복호화 시, IV혹은 이전 암호문 블럭을 암호화 모듈로 복호화한 결과를 암호문 블럭과 XOR하여 평문 블럭을 얻어낸다.
특징
- 암호화와 복호화에 암호화 모듈만을 필요로 한다.
- CFB는 DES, AES와 같은 블럭 암호를 이용하지만, 결과는 키 스트림이 암호문에 의존하는 비동기식 스트림 암호 방식과 같다.
- CBC와 마찬가지로 오류가 전파된다.
개요
- OFB는 동일한 평문 블럭에 대해 같은 암호문을 도출하는 ECB모드의 단점과 오류가 전파되는 CBC, CFB모드의 단점을 개선한 운영모드이다.
- 암호 모듈의 출력과 평문 블럭을 XOR하여 암호문 블럭을 생성하므로 오류가 전파되지 않는다.
- IV 혹은 이전 암호 모듈의 결과를 암호화 한다.
- 암호 모듈의 결과를 평문 블럭과 XOR한다.
- 암호화와 복호화에 암호화 모듈만을 필요로 한다.
특징
- 암호화와 복호화에 암호화 모듈만을 필요로 한다.
- 오류가 전파되지 않는다.
- 암호 모듈의 출력은 평문 블럭과 무관하다.
- CFB모드와 마찬가지로 OFB모드는 블럭 암호 기반이지만 스트림 암호이다. CFB와 다른 점은 키 스트림이 평문이나 암호문에 독립적이므로 동기식 스트림 암호라는 것이다.
개요
- 암호화 시 피드백 시 피드백이 존재하지 않는다.
- 키 스트림의 pseudo random number(의사난수)는 카운터를 사용한다.
- OFB모드와 같이 평문과 암호문에 독립적인 키 스트림을 생성한다.
- 피드백이 없으므로 ECB모드처럼 서로 독립적인 암호문 블럭을 생성한다.
특징
- 암호화와 복호화에 암호화 모듈만을 필요로 한다.
- 오류가 전파되지 않는다.
- 동기식 스트림 암호화를 지원한다.
- 피드백이 없으므로 ECB와 마찬가지로 병렬처리가 가능하다.
- 순수한 블럭 암호 모드: ECB, CBC
- 스트림 암호방식 블럭 암호 모드: CFB, OFB, CTR
- EBC: 간단, 병렬처리가능, 재전송 공격 가능
- CBC: 복호화시 병렬처리가능, 오류전파
- CFB: 복호화시 병렬처리가능, 패딩x, 암호화 모듈만 필요, 오류전파
- OFB: 전처리 가능, 암호화 모듈만 필요, 병렬처리불가
- CTR: 전처리 가능, 암호화 모듈만 필요, 병렬처리가능
도움이 정말 많이 되었습니다 감사합니다 :)