[암호학] DES 이해하기!

2024. 5. 3. 02:15복습/암호학

1. DES란?
2. DES 키 생성
3. DES 상세 과정

 

 

DES란? 

 

DES (Data Encryption Standard): 미국 국립표준기술연구소(NIST)에서 제정한 비밀 키 대칭 암호화 표준.

 

대칭키 암호 시스템 : 암호화, 복호화 키가 동일

 

키 길이 64비트 (56비트가 실제 키, 8비트는 제어비트(=패리티체크 비트)

더보기

1글자 = 8비트 (1바이트)

 

-> 64비트에는 8글자 저장 가능

16라운드의 전치과정(P-Box)과 환자과정 (S-Box) 사용

 

 

더 쉽게!! 

 

DES 란, 평문을 64비트씩 나누어 64비트의 키를 이용해 암호화하는 방식이다.

 

긴 평문을 64비트 단위로 나누어 각각 암호화해주는데,

 

그 각각의 묶음을 블럭이라 하고

 

DES를 블럭 암호 방식이라고 하기도 한다.

 

 

그럼 암호화 과정을 더 자세히 살펴보자.

 

 

 

우선, 64비트짜리 키를 48비트 키 16개로 만들어준다. 

(자세한 키 생성 과정은 아래 '키 생성 과정' 을 보면 된다.)

 

 

그런 뒤 평문의 첫 번째 블록을 초기전치 해준다. 

(자세한 전치 과정은 상세 과정에 있다. 실제로는 그림처럼 무작위로 전치하지 않으니 대충 넘어가자)

 

 

그러고 좌우 각각 32비트로 나누어주는데 왼쪽을 L0 , 오른쪽을 R0이라 하겠다.

 

 

이제 우리는 같은 과정을 16번 반복해야한다. 

이는 L16, R16 까지 구해줘야 한다는 뜻인데,

한 번만 뇌에 힘주고 따라와보자. 

 

 

L1은 R0을 그대로 내려준 것이다.

(Ln+1은 Rn 이다.)

 

 

R1 구하는 과정이 조금 험난하다. 

16개의 키 중 첫 번째 키와 R1을 XOR연산해주어야 하는데..

 

편의상 1번키라 표기

 

키는 48비트, R0은 32비트이므로 XOR 연산을 할 수가 없다.

 

이를 해결해주기 위해 R0을 48비트로 만들어주는 확장전치를 먼저 한다.

 

32비트를 48비트로 확장 해주고 순서를 바꿔주면 확장전치가 완료된다.

 

그럼 R0과 키의 비트 수가 같아지기 때문에 XOR 연산을 수행해줄 수 있다. 

 

XOR 연산을 수행하면 결과는 2진수로 표현될 것이다. 

 

이 때, 8비트를 6비트로 축약해주는 S-BOX 연산을 이용해

 

키와의 XOR 연산을 하기 위해 확장했던 비트를 다시 32비트로 줄여준다.

 

 

그리고 마지막으로! 

 

이를 L0과 XOR 연산해주고 전치하면 드디어 R1을 구한 것이다!! 

 

 

그리고 이제 L1과 R1을 다음 키를 이용해  L16,  R16 을 구할 때 까지

 

위와 같은 과정을  반복해주면 된다 .. :)

 

 

L16 과 R16까지 구했다면!

 

L16은 R16으로, R16은 L16으로 바꾸고 한 덩어리로 만들어준 뒤

 

통째로 역전치를 해주면 DES 암호화가 드디어 끝난다. 

 

  

 

DES 키생성 과정

 

1. 축약 전치 64 -> 56

2. 반으로 쪼개기 28,28

3. 1,2,9,6은 맨 앞에 있는 걸 하나씩 맨 뒤로 보내고,

     나머지는 두 개씩 맨 뒤로 보냄

4. 합치기 28,28 ->56

5. 축약전치 56 -> 48

 

 

 

DES 상세 과정

 

1. 초기전치

2. 64비트를 32, 32로 나누어줌 (L0, R0)

3. R0 -> L1 , 

4. R0 확장 전치 (32 ->48비트로 확장)

5. 확장된 데이터를와 xor 연산

6. xor 된 48비트를 6비트씩 8조각으로 쪼갬

7 .쪼개진 6비트에서 행, 열 값을 구한 뒤, S-Box 연산

8. 연산해서 나온 정수를 이진수로 표현 (6비트 -> 4비트), 8조각이므로 48 -> 32

9. 이 32비트를 L0비트와 xor 연산

10. 32비트 전치하면 R1 

11. 를 다르게 하여 이 과정을 16번 거치기

12. L16, R16 자리 교차 ( L16은 R16으로, R16은 L16으로)

13. 전체 역전치 

14. DES 암호화 완료