DES 암호
1. DES[Data Encryption Standard] 암호
- 평문 64비트를 암호문 64비트로 변환시키는 암호방식으로 64비트의 키를 사용한다.
- 키는 8비트마다 패리티비트 하나씩을 포함하고 있어 암호화 과정에는 56비트만 적용된다.
2. DES암호의 암호화과정
[1] 64bit의 평문블록[A]을 초기전치(Initial Permutation)[IP(A)] 된다.
[2] 초기전치[Initial Permutation]한 것 [IP(A)]을 L0와 R0로 32bit씩 나누어진다.
[3] K1(48bit)의 서브키와 R0가 F함수에 입력되면 32bit가 출력된다.
[4] F[R0(32bit), K1(48bit)]에서 출력된 값과 L0를 XOR 연산을 한 후 R1에 들어간다.
[5] L1에는 R0의 값을 들어간다.
[6] [3], [4], [5] 과정을 16회 반복된다.
[7] 마지막 16 Round에서는 전치되지 않고 그대로 L16이 우측, R16이 좌측에 대기한다.
[8] B에 L16과 R16가 들어간다.
[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-box에 6bit가 들어오면 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열 -> 0행 7열의 값은 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 |
댓글