-
Block cipher modes보안/컴퓨터보안 2019. 10. 6. 19:10
Block cipher에 대해 공부해서 각 블락들을 암호화하는 방법은 공부했다.
이제 이 블락들을 전체적으로 어떻게 암호화해서 전송하는지에 대해 알아본다.
블락을 전송하면 상대방이 받아서 복호화 해야하는데 그 과정에서 공격자가 블락의 순서를 바꿀수 있다.
(Permutation공격, Integrity문제)
ECB (Electronic CodeBook)
- 각각의 블락을 독립적으로 암호화하는 모드
- 각각의 블락들은 암호화되어 (AES,DES등) 안전하다.
- 하지만 블락의 순서들은 확인할 수 없기때문에 (보안 취약점) 사용되지 않는다.
(Cut and Paste 공격) 공격자가 C0 C1 C2 C3의 순서를 -> C0, C3, C2, C1으로 바꾸고 decryption한 결과.
- C = E(P,K)
- Ci = Cj 라고 가정할때, Pi = Pj다. 공격자에게는 정보가 된다.
이미지를 암호화해도 원본처럼 뚜렷하진 않지만 형태를 알 수 있다.
CBC (Cipher Block Chaining)
- 각각의 블락을 체인으로 만든다.
- 가장 많이 쓰임
- 최초에 메세지를 IV와 xor한 뒤 암호화를 한다. 그리고 다음 블락부터는 이전 아웃풋과 메세지를 xor 한다.
- 복호화할때는 cipher text 블락을 복호화후 iv와 xor, 다음블락은 이전블락과 xor 한다.
- 같은 plaintext에서 다른 ciphertext가 나온다. (good)
- 체인형태이기 때문에 중간에 손실이 일어나면 안된다. (비디오, 스트리밍등에 부적합)
CTR (Counter Mode)
- 이전 블락이 아닌 sequence number에 의존하기 때문에 중간에 손실이 되어도 괜찮다.
(스트리밍에 적합, stream cipher처럼 사용)
- decryption 할때 nonce(랜덤)+count가 encryption 할때 사용한 것과 같아야 한다.
그래서 그 값을 전달받아야함. 공개되어 있음
- nonce+counter을 암호화 하고 plaintext와 xor한다.
CFB (Cipher Feedback) mode
- CTR에서 counter 대신 이전 블락의 cipher text를 쓴것과 같다. (최초에는 IV)
- decryption: otp처럼 생각하면 된다. pt를 암호화 하지 않고 xor만 했기 때문.
이전 cipher text를 encryption해서 키스트림 만들고 cipher text와 xorOFB (Output Feedback) Mode
- CFB와 같은데 이전 블락을 가져올때 cipher text를 하기전인 block cipher encryption 직후 상태와 xor 한다.