본문 바로가기
3. Satellite/(2) 통신 암복호화

블록 암호화 - DES(Data Encryption Standard)

by Labeler 2023. 3. 11.

1. 블록 암호화란

블록 암호화 (부경대)

 

블록암호화는 크기가 고정된 블록을 암호화하여 동일한 크기의 암호문을 만드는 것이다. 예를들어 평문이 256비트라면 암호문도 256비트가 된다.

 

다만, 데시미가 블록의 길이보다 길때는 블록 암호화 모드 (ECB, CBC, CFB, OFB, CTR)를 이용해야 한다.

 

대표적인 블록 암호화 방법은 DES(Data Encryption Standard)와 AES((Advanced Encryption Standard)가 있다. DES는 IBM에서 제안하였고, AES는 미국 국립과학표준원이 공모하여 채택한 알고리즘이다.

 

2. DES(Data Encryption Standard)

DES 암호화

DES는 1973년에 채택되었으며, 64비트 평문을 64비트 암호로 암호화하여 사용한다.

 

이때에는 56비트의 암호키(cipher key)가 암복호화 과정 모두에 사용된다.

 

DES 암호화 방식

64비트 평문의 DES 암호화 과정은 두번의 치환(초기, 최종 치환)과 16번의 라운드를 거쳐 암호화한다. 

 

1단계 : 초기치환 (Initial Permutation)

- 미리 정의된 규칙에 따라 행렬을 재배열하는 과정이다

permutation 과정

- 도식화하며 위 그림과 같으며, 이 과정에서 암호화는 일어나지 않는다

 

2단계 : 라운드 (Round, Feistel 함수)

- 64비트의 블록을 사용할 경우 56비트의 초기 암호키를 사용하며, 이를 가지고 16개의 서브키를 생성하여 16번의 라운드를 거친다

Round Key Generator

- 56비트의 암호키로 16개의 서비키를 만드는 과정을 Round Key Generation이라고 한다

- 56비트의 암호키가 Round Key Generator에 실제로 입력될 때에는 8bit의 parity bits가 추가되어 64비트가 입력되며, 입력 초반 Parity drop 과정에서 제거된다

Shift Left

- 라운드 함수는 이전 라운드 함수의 출력값을 기반으로 Shift Left가 발생되며 1/2/9/16 번째에는 1번 Shift Left되며, 나머지는 2번 Shift Left 된다

 

F 함수 내부

- 생성된 Round Key를 이용하여 평문의 하위 32비트와 f함수를 수행하며, P-box를 통해 Expansion되어 48비트가된 평문은 48비트의 Round Key와 XOR 연산을 수행한 후 미리 정의된 S-Box를 통해 32비트로 Compression 된다

 

6비트용 S-Box 예시

- 6비트용 S-box의 예시는 위와 같으며, 사용자가 정의한다

 

3단계 : 최종치환 (Final Permutation)

- 초기치환과 마찬가지로 미리 정의된 규칙에 따라 재배열한다

 

 

3. DES 결론

DES는 몇가지 입력변수를 가지고 있음

1) 56비트의 암호키

2) P-box (치환, Permutation)

3) S-box

 

간단하게 정리하자면,

 

평문 입력 → 초기치환 → Key와 평문을 XOR 연산 후 S-box로 암호화 → 16번의 Round 수행 → 최종치환 → 암호물 출력