Modes of Operation
ECB - Electronic Codebook Mode (block cipher)

- 작동 방식:
- 각각의 plaintext block을 따로 encryption한 후, 결과물들을 합친다.
- 단점:
- 같은 key를 사용해서 encryption을 하기 때문에, 같은 문자는 항상 같은 문자로 변환되게 된다.
- 이로 인해 통계적으로 분석할 수 있게 된다. -> 안전하지 않음
- Pre-processing 불가
- Pre-processing은 어려운 작업을 미리 해놓는 것을 말한다.
- ECB에서 어려운 작업은 Encryption 연산 부분인데, 이 부분은 plaintext가 들어오기 전에 작업을 할 수 없으므로 pre-processing은 불가능하다.
- 블럭 개수가 많을 때 비효율적이다.
- 장점:
- 각 block간 연산이 독립적으로 일어나기 때문에, 병렬로 작업할 수 있다.
CBC - Cipher Block Chaning (block cipher)

- 작동 방식:
- 첫 번째 plaintext block(P1)을 encryption하고, 그 결과물을 다음 plaintext block(P2)와 XOR한 것을 입력으로 넣는다.
- 첫 번째 encryption을 진행할 때는, IV(Initial Vector)로 따로 입력을 넣어준다.
- 이 방식의 경우 Error Propagation이 발생한다.
- 에러가 전파된다는 뜻이다. 위 단계 중, 어떠한 오류로 plaintext(Pi)의 bits의 일부가 바뀐다면 그 결과(Ci)는 큰 차이가 나게 되고, 그 결과가 다음 단계의 입력으로 들어가면서 에러가 확산된다.
- 이러한 특성은 단점일 수도 있지만, 장점으로써도 작동한다.
- 장점:
- **Integrity(무결성)**과 **Authentication(인증)**을 제공할 수 있다.
- 이렇게 메시지의 무결성과 인증을 제공하는 것을 MAC(Message Auth. Conf.)라고 한다.
- MAC
- 최종으로 나오는 Cn 번째 암호문이 무사히 온 것을 확인하면 다른 사람이 같은 key를 가지고 있는지 인증(Authentication)할 수 있고
- 순차적으로 암호화가 진행될 때 중간에 변조된 데이터가 있는 지 여부를 Cn을 확인해서 알 수 있다.(Integrity)
- 단점:
- 직전 block의 연산이 끝나야 다음 block의 연산을 수행할 수 있다.
- 특히, encryption하는 연산은 복잡하기 때문에 오래 걸릴 수 있는데, 그동안 다른 block들은 기다리기만 해야 한다.
- Pre-processing과 병렬 처리 불가능
CFB - Cipher Feedback Mode (stream cipher)

- CBC와 비슷해 보이지만 이건 Stream mode이다.