블록 암호 운용 방식_ECB, CBC, CFB, OFB, CTR
현대 대칭키 암호를 이용한 암호화 기법
1. 블록 암호의 사용 방식
1) 개요
암호학에서 블록 암호 운용 방식( block cipher modes of operation)은 하나의 키 아래에서 블록 암호를 반복적으로 안전하게 이용하게 하는 절차를 말한다. 블록 암호는 특정한 길이의 블록 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그리고 그 블록들을 어떻게 암호화할지 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식이라 부른다.
운용 방식은 주로 암호화와 인증을 목적으로 정의되어 왔다. 역사적으로 암호화 방식은 다양한 시나리오의 데이터 수정 측면에서 오류 증식 특성과 관련하여 널리 연구되어 왔다. 나중에 무결성 보호는 암호화와는 완전히 별개로 다루게 되었다. 현대의 일부 운용 방식은 암호화와 인증을 효율적인 방식으로 병합해 놓고 있는데, 이를 인증된 암호 방식(authenticated encryption) 방식으로 부른다.
운용 방식이 일반적으로 대칭형 암호화와 관련하는 것이 일반적이지만 RSA와 같은 공개 키 암호 방식 원칙에도 적용할 수 있다. (길이가 더 긴 메시지의 공개 키 암호 방식은 일반적으로 복합 암호 방식(hybrid encryption)이라 부른다.
2) 블록 암호 주요 모드
1. ECB 모드:Electric CodeBook mode( 전자 부호표 모드)
2. CBC 모드: Cipher Block Chaining mode(암호 블록 연쇄 모드)
3. CFB 모드: Cipher FeedBack mode(암호 피드백 모드)
4. OFB 모드: Output FeedBack mode(출력 피드백 모드)
5. CTR 모드: CounTeR mode(카운터 모드)
2. 모드별 구분
1) ECB(Electronic CodeBook)
- 각 블록은 동일한 키를 이용하여 독립적으로 암호화
- 동일한 내용을 갖는 평문 블록은 이에 대응되는 동일한 암호문 블록으로 변환됨
- 암호문을 살펴보는 것만으로도 평문 속에 패턴 파악 가능
- 평문 조작이 가능하고 재전송 공격에 취약
- 간단한 구현, 고속 암복호화, 병렬처리 가능
암호화
복호화
2) CBC(Ciper Block Chaining)
Cipher Block Chaining 각 평문 블록은 이전 블록 암호문 와 XOR 연산 후 암호화하는 블록 암호 모드
- Initial Vector 사용, 오류 파급 발생
- 패딩 사용
- 암호화 병렬처리 불가, 복호화 병렬처리 가능
암호화
복호화
3) CFB(Cipher FeedBack)
- Initial Vector 사용, 오류 파급 발생
- 패딩 사용하지 않음(스트림 암호처럼 Bit 단위 암호화)
- 암호화는 순차적으로, 복호화는 병렬처리 가능
- 평문과 암호문의 길이가 같음
암호화
복호화
4) OFB(Output Feedback)
- IV를 암호화하여 키 생성
- Initial Vector 사용, 오류 파급 없음
- 평문과 암호문의 길이가 같음
- 암호문을 동일하게 한번 더 암호화하면 복호화됨
암호화
복호화
5) CTR(Counter)
- 카운터를 암호화한 비트열과 평문 블록을 XOR
- 오류의 파급 없음
- 암복호화 병렬처리 가능
- IV는 사용하지 않고 카운터 값 사용
암호화
복호화
3. 모드별 비교
https://continuetochallenge.tistory.com/83
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bycho211&logNo=220975255680