DES(Data Encryption Stadard)

- Block cipher

  plaintext를 64bit의 block으로 나눠 56bit의 key를 이용해 다시 64bit의 ciphertext를 만들어내는 알고리즘

Symmetric cipher

  암호문을 작성할 때 사용하는 암호키 = 암호문을 해독할 때 사용하는 해독키

 

DES 동작 과정

(1) 전반적인 DES 동작 과정

1. 64bit의 plaintext가 첫번째 round를 거치기 전에   Initial Permutation(초기 치환)을 통과한다.

 

2. IP를 통과한 후 나온 64bit32bitL0과 R0으로 분리된다.

 

3. R0에 해당하는 32bit는 각 key_schedule를 통해 나온 첫번째 48bit key와 함께 F-box에 들어간다. F-boxoutput32bit이다.

 

4. 32bitL032bitXOR operation 해준다.

 

5. 생성된 32bitR1에 보내주고, R0 32bit L1에 오도록 한다. (swapping)

이과정을 16 round 반복한다.

마지막 round의 경우, swapping하지 않고 그대로 실행시켜야 한다.

 

6. R16L16을 합쳐서 64bit로 만들고 FP(IP의 역)을 통과한다. output64bitciphertext이다.

 

 

 

 

(2) F-box

1. round마다 오른쪽 32bitExpansion(E)를 통과한 후 48bit로 확장된다.

2. 48bitkey_schedule에 따른 key 48bitXOR operation한 후에 F-box를 통과한다.

3. XOR operation 후에 얻은 48bit6bit씩 8부분으로 나누어 각각 S-Box를 통과한다.

4. S-Box를 통과한 output 4bit이고 8개를 모두 합치면 32bit가 된다.

5. Permutation(P)를 통과해 F-box output를 도출해 낸다.

 

(2) key schedule

처음 64bitkeyPC1을 거쳐 56bit가 되는데, 나머지 8bitParity bit로 사용된다.

    ☞ parity bit?

더보기

정보전달 과정에서 오류가 생겼는지를 검사하기 위한 bit

56bit28bit씩 왼쪽, 오른쪽 분리한 후 실행한다. round마다 shift_schedule(key 회전 스케줄)에 따라 왼쪽으로 1bit, 2bit 회전한다.

→ 1,2,9,16번째는 1shift, 나머지는 2shift한다.

각각 shift연산을 한 후에 왼쪽 오른쪽을 합쳐서 PC2를 통과시키면 output48bit이고 각각 subkey를 의미한다.

+ Recent posts