Theory/Cryptology

DES 암호

D4tai1 2018. 8. 12.

1. DES[Data Encryption Standard] 암호

- 평문 64비트를 암호문 64비트로 변환시키는 암호방식으로 64비트의 키를 사용한다.

- 키는 8비트마다 패리티비트 하나씩을 포함하고 있어 암호화 과정에는 56비트만 적용된다.

 

 

2. DES암호의 암호화과정

 [1] 64bit의 평문블록[A]을 초기전치(Initial Permutation)[IP(A)] 된다.

 [2] 초기전치[Initial Permutation]한 것 [IP(A)]L0R032bit씩 나누어진다.

 [3] K1(48bit)의 서브키와 R0F함수에 입력되면 32bit가 출력된다.

 [4] F[R0(32bit), K1(48bit)]에서 출력된 값과 L0XOR 연산을 한 후 R1에 들어간다.

 [5] L1에는 R0의 값을 들어간다.

 [6] [3], [4], [5] 과정을 16회 반복된다.

 [7] 마지막 16 Round에서는 전치되지 않고 그대로 L16이 우측, R16이 좌측에 대기한다.

 [8] BL16R16가 들어간다.

 [9] 처음에 초기전치 한 위치로 역전치[IP(B)](-1) 된다.

 [10] 64bit의 암호문 블록이 완성된다.

 

[DES의 16라운드 암호화 알고리즘]

 

[DES의 1라운드 암호화과정]

 

3. F함수의 동

 [1] R[i-1](32bit) 블록이 확장전치(E-table)를 통해 E[R(i-1)](48bit)가 된다.

 [2] K[i](48bit)E[R(i-1)](48bit)XOR연산을 한다.

 [3] XOR연산한 것(48bit)S-box[8]에 각각 6bit(48bit) 들어가서 치환되어

  S-box[8] 1개 당 4bit씩 총 32bit가 출력된다.

 [4] 나온 것[P](32bit)을 평행전치 후 출력된다.

위 그림 중 아래 S1~S8은 S-box의 그림이다. 

 

 

4. S-box의 동작

- 여기서만 치환이 이루어지고 나머지 과정은 전치가 이루어진다.

 [1] S-box6bit가 들어오면 input=[b1, b2, b3, b4, b5, b6] 중 맨 앞(b1)과 맨 뒤(b6)을 행,

  가운데 [b2, b3, b4, b5]를 열로 만들고 각 행과 열을 10진수로 변환 후 S(i)함수의 행과 열을 따라간다.

 [2] 행은 0 ~ 3 이 있고, 열은 0 ~ 15 가 있다. (0부터 시작)

 [3] 따라간 행렬의 값(10진수)2진수로 변환(4bit)하여 출력한다.

   ex) S3-box, 001110 일 때, 00/ 0111-> 07열의 값은 5(10진수) ->0101(2진수)(4bit)출력

   - S-Box는 비선형구조이며, DES 암호의 안전성의 핵심이다.

 

 

 

 

5. 키스케줄러

 [1] 64비트 키를 입력받고 패리티비트 8비트를 제거한다.  - PC1[56비트]

 [2] Ci와 Di로 분리한다. (56비트를 28비트씩)

 [3] Ci와 Di를 LS(Left Shift) 한다.

 [4] Ci(28비트)와 Di(28비트)를 합쳐서 축약전치한다.  - PC2[48비트]

 [5] 축약전치하면 48비트가 출력된다.

  + PC는 Permuted choice(축약전치)를 의미한다.

 

 

6. 패리티비트의 문제점

 [1] 정확히 어디가 틀린지 알 수 없다.

 [2] 짝수 개 틀리면 알 수 없다.

 

 

 

 

'Theory > Cryptology' 카테고리의 다른 글

블록암호의 운용모드  (0) 2018.08.12
DES암호의 특징  (0) 2018.08.12
암호의 해독  (0) 2018.08.12
Shnnon(샤론)의 암호이론  (0) 2018.08.12
Kerch hoff의 원리  (0) 2018.08.12

댓글