Shine's dev log
블록 암호 운용방식 (Modes of operation) 본문
1. 블록 암호 운용방식
블록 암호의 운용 방식은 다음과 같다.
하나의 키로 블록 암호를 반복적으로 안전하게 이용하게 하는 절차.
예를들어 DES의 경우, 블록사이즈가 64비트이다. 그렇다면, 평문을 64비트 단위로 쪼개서 여러번 암호화를 수행해야 할 것이다. 이 때, 반복적으로 이용하는 방법에 따라 여러가지 모드로 나눌 수 있다.
블록암호를 운용하는 방식에 따라 ECB, CBC, CFB, OFB, CTR 모드가 있다.
2. ECB 모드 (Electric Code Book)
평문을 N개의 n-bit 블록으로 분할하여 각각 독립적으로 암호화 하는 방식
- 특징
- 마지막 부분에 padding이 필요하다.
- 병렬처리가 가능하다.
- 두개 이상의 블록을 갖는 메세지에는 권장하지 않는다.
- 오류파급 : 단일 비트 오류가 해당 블록의 비트들의 오류가 된다. (다른 블록에 영향x)
- 안전성 이슈
- 패턴이 유지되고, 같은 평문블록은 같은 암호문 블록을 만든다.
- 블록간의 독립성 때문에 키를 몰라도 특정 블록 바꿔치기를 통해 변조가 가능하다.
- 사진파일 같은 경우에 암호화가 되어도 식별 가능할 수 있다.
3. CBC 모드 (Cipher Block Chaining)
각각의 평문 블록이 암호화되기 전에 이전 암호문 블록과 XOR 되는 모드
- 특징
- 첫번째 블록은 XOR할 이전 암호문 블록이 없으므로, 초기벡터(IV)가 필요하다. (송-수신자 사이에 공유되어야 한다.)
- 다음 블록 암호화할 때 필요하므로 메모리에 저장 필수.
- 병렬처리가 불가능하다.
- 랜덤하게 선택된 블록을 암,복호화 할 수 없다.
- 오류파급 : P(i) 블록의 단일비트 오류시 C(i) 블록에서는 대부분의 비트에 오류발생, C(i+1) 암호문은 같은위치에 단일비트 오류 발생.
- 안전성 이슈
- 블록단위의 패턴유지 불가 (단, IV가 같으면 패턴유지 가능)
4. CFB 모드 (Cipher FeedBack)
CBC의 변형으로, 블록 암호를 비트 스트림으로 생각하는 방식.
- 특징
- 블록크기가 n 이지만, 평문의 크기는 r (r<n)인 경우에 사용
- 평문과 이동레지스터의 r비트를 XOR한 결과가 다음 단계에 피드백된다.
- 초기벡터(IV) 필요.
- 스트림 데이터 암호화나 인증에 자주 사용됨.
- CFB모드에서 이동 레지스터의 값을 다음 단계에 이용하면 OFB모드가 된다.
- 복호화때도 암호화과정이 사용된다.
- 안전성 이슈
- CBC와 마찬가지로 블록 단위의 패턴이 유지되지 않는다.
- 같은 IV로 암호화하면, 같은 결과 나온다.
- 암호문 덧붙이기 가능하다.
5. CTR 모드 (CounTeR)
CFB모드와 유사하지만, 피드백 값을 이용하는 것이 아니라 독립적인 카운터(counter)값을 이용한다.
- 특징
- 암호화시 피드백 존재x (병렬처리 가능)
- 키 스트림의 의사난수성은 counter를 사용하여 성취한다.
- 각각의 평문 블록에 대해 각각 다른 카운터 사용해야 한다.
- 고속 네트워크 암호화에 이용.
- 복호화때도 암호화과정이 사용된다.
- 오류파급 : 암호문의 1비트 오류는 단지 대응되는 평문의 한비트에 영향
- 안전성 이슈
- 블록단위 패턴유지 불가.
오늘 배운 내용을 정리해보면,
1. 블록암호를 사용할 때 운영방식에 따라 ECB, CBC, CFB, CTR모드 등이 있다.
본 내용은 공부하며 정리한 것으로, 치명적인 오류가 있을 수 있습니다.
'보안' 카테고리의 다른 글
공개키 암호 (Public key Cryptography) (0) | 2020.05.27 |
---|---|
메세지 인증 (Message Authentication) (1) | 2020.05.15 |
RC4 암호 알고리즘 (0) | 2020.05.14 |
AES 암호화 (0) | 2020.05.08 |
DES 암호화 (0) | 2020.05.07 |