Encryption을 2번 하자!
p -> E(K1) -> x
에 하나의 key(K1)에 대한 가능한 값들(56 bits)을 대입해서 x들을 추출해 낸다.
반대로도 c -> D(K2) -> x
에 (K2)에 대한 가능한 값들을 대입해서 x'를 추출해 낸다.
그 후, 각각 정렬한다(x끼리, x'끼리)
같은 x를 찾았다면, 그 x를 출력하게 한 key값이 각각 K1, K2가 된다.
DES를 3번 돌린다.
Backward compatible(하위 호환성) 때문에 Encryption 중간에 Decryption이 끼어있다.
Triple DES는 single DES에 비해 안전성은 높지만, 연산량이 많아 속도가 느리다.
작동 방식
각각의 plaintext block을 따로 encryption한 후, 결과물들을 합친다.
단점
같은 key를 사용해서 encryption을 하기 때문에, 같은 문자는 항상 같은 문자로 변환되게 된다.
이로 인해 통계적으로 분석할 수 있게 된다. -> 안전하지 않음
Pre-processing 불가
Pre-processing은 어려운 작업을 미리 해놓는 것을 말한다.
ECB에서 어려운 작업은 Encryption 연산 부분인데, 이 부분은 plaintext가 들어오기 전에 작업을 할 수 없으므로 pre-processing은 불가능하다.
장점:
각 block간 연산이 독립적으로 일어나기 때문에, 병렬로 작업할 수 있다.
작동 방식:
첫 번째 plaintext block(P1)을 encryption하고, 그 결과물을 다음 plaintext block(P2)와 XOR한 것을 입력으로 넣는다.
첫 번째 encryption을 진행할 때는, IV(Initial Vector)로 따로 입력을 넣어준다.
이 방식의 경우 Error Propagation이 발생한다.
에러가 전파된다는 뜻이다. 위 단계 중, 어떠한 오류로 plaintext(Pi)의 bits의 일부가 바뀐다면 그 결과(Ci)는 큰 차이가 나게 되고, 그 결과가 다음 단계의 입력으로 들어가면서 에러가 확산된다.
이러한 특성은 단점일 수도 있지만, 장점으로써도 작동한다.
장점
Integrity(무결성)과 Authentication(인증)을 제공할 수 있다.
이렇게 메시지의 무결성과 인증을 제공하는 것을 MAC(Message Auth. Conf.)라고 한다.
단점
직전 block의 연산이 끝나야 다음 block의 연산을 수행할 수 있다.
특히, encryption하는 연산은 복잡하기 때문에 오래 걸릴 수 있는데, 그동안 다른 block들은 기다리기만 해야 한다.
Pre-processing과 병렬 처리 불가능
목표: Integrity(무결성)과 Authentication(인증)을 제공하는 것
작동 방식
parity bit와 차이점
parity bit는 아무나 만들 수 있다. 공격자가 데이터를 변조시키고, 그에 맞게 parity bit도 변조하면 수신자는 데이터의 이상을 파악할 수 없기 때문에 authentication이 불가능하다.
CBC와 비슷해 보이지만 이건 Stream mode이다.
Decryption이 순방향으로 이루어진다.
장점
Error propagation -> MAC 제공
단점
CBC와 마찬가지로 직전 아웃풋이 나와야지만 다음 block이 수행될 수 있다.
Pre-processing과 병렬 처리 불가
CBC나 CFB와 달리 해당 block의 연산이 완전히 끝나기 전(encrpytion 함수만 지난 후), 그때까지의 결과를 다음 block의 입력으로 미리 넣어준다.
어떤 plaintext가 변조되어도 다른 block에 영향을 주지 않는다 -> No error propagation
즉, MAC으로 사용할 수 없다.
장점
Preprocessing이 가능하다.
Encryption 연산이 어려운 연산 부분인데, plaintext가 들어오는 것과 상관없이 미리 다 처리해 놓을 수 있다.
단점:
병렬로 작업 불가
ECB와 비슷하게 보이지만, 여기에는 counter라는 특성이 있다.
장점
Block vs Stream | Same Output | Error Propagation | Pre-processing | Parallel Process | |
---|---|---|---|---|---|
ECB | Block | O | X | X | O |
CBC | Block | X | O | X | X |
CFB | Stream | X | O | X | X |
OFB | Stream | X | X | O | X |
CTR | Stream | X | X | O | O |
CBC, CFB 둘 다 MAC으로 쓸 수 있지만, 주로 CBC를 사용한다.
CBC는 MAC으로써 Integrity와 Authentication을 제공할 때 사용한다.
CTR은 긴 길이의 암호문을 만들 때, confidentiality(기밀성)을 제공한다.
CTR with CBC-MAC(CCM): 기밀성, 무결성, 인증을 모두 다 제공한다.
출처
https://hororolol.tistory.com/451?category=897521
[Cryptography and Network Security: Principles and Practices]