[암호학] DES에 대해서

HyeonMin Kim·2023년 9월 22일
post-thumbnail

현대 암호인 DES에 대해 알아보도록합시다!!
DES란 Data Encrypted Standard 의 약자이며 1974년 IBM의 Lucifer 알고리즘을 기반으로 개발되었습니다.
DES는 Symmetric Key 기반의 Cryptosystem 입니다.

Symmetric Key 기반의 Cryptosystem은 Alice와 Bob 두명이 똑같은 키를 가지고 암호화와 복호화를 하는 암호 시스템입니다.

DES는 블록 단위로 Ciphertext가 만들어집니다.
DES Challenge를 통해서 1997년부터 1999년까지 점점 빠르게 DES를 깨부시는 challenge가 일어났습니다

  • 1997년 - 96일
  • 1998년 I - 41일
  • 1998년 II - 56시간
  • 1999년 - 22시간 15분

그리고 DES는 Feistel System을 통해서 Encryption과 Decryption을 진행합니다.

위의 방법은 Encryption이고 아래는 Decryption입니다.

RnR_n의 값들은 다 Ln+1L_{n+1}의 값으로 바뀌고 LnL_n의 값은 RnR_n의 값과 KnK_n의 값을 함수 f에 넣은 값과 XOR을 하여 Rn+1R_{n+1}의 값이 되게 됩니다.

아래는 DES의 총과정입니다

64비트의 plaintext가 input값으로 대입이 된 이후 각각 16라운드에 걸맞은 key들이 쓰이는 과정이 지난 후 마지막 permutation과정이 끝나면 ciphertext가 나오게 됩니다.

1. Permutation

Permutation 과정은 이름답게 숫자를 다른 순서로 뒤섞는 연산입니다.

위의 그림과 같이 1~64번째의 배열값이 initial permutation과 inverse initial permutation 순서대로 배열 값을 맞추게 됩니다. initial permutation과정은 제일 처음에 실행되는 과정이며 inverse initial permutation과정은 제일 마지막에 실행되는 과정입니다.

2. Round Function


위의 사진은 각 Round별로 진행되는 function의 과정입니다. Rn1R_{n-1}인 32bit가 expansion과정과 Permutation과정을 통해 48bit가 되며 i번째 Key와 XOR한 값으로 6bit씩 나눠서 Substitution과정을 진행합니다. 이후 6bit가 각각 4bit가 되며 총 32bit가 나오게 되며 permutation과정을 통해 나온 32bit와 Ln1L_{n-1}인 32bit와 xor한 값이 RnR_n이 되는 과정입니다.
이 과정이 총 16번 진행 되게 됩니다.

3. Expansion


위의 과정은 처음 진행하는 Expansion과정입니다. 32bit로 들어온 값이 밑의 48비트처럼 각각 4bit로 나눈 값에서
0 1 2 3을 예로 들면 제일 첫값인 0의 -1값인 31과 제일 마지막 값인 3의 +1값인 4를 추가해서 31 0 1 2 3 4 총 6비트로 expansion해주는 과정입니다. 이렇게 output이 총 48bit가 나오게 됩니다.

4. Substitution


Substitution과정은 Expansion, Permutation 과정 이후 나온 48bit와 key 48비트를 XOR한 값을 6bit씩으로 나눠서 SBox로 Substitution을 진행하는 과정입니다. 밑의 사진은 S1Box를 사용해서 output이 나온 과정입니다.

위의 예시처럼 총 8개의 SBox의 output을 가지고 마지막 initial permutation을 진행하면 되는 것입니다.

5. Key Generation

Key는 총 16개이고 최초 Key는 64비트입니다. Permuted choice 1을 통해서 8n번째 자리인 parity checkbit가 삭제가 되면서 56비트가 됩니다. 이후 left와 right로 32비트씩 나뉘게 됩니다.
그리고 사진처럼 각각 left shift과정이 사진 우측의 조건처럼 일어나게 되고 각 Key들은 48비트가 되게 됩니다.

이렇게 DES의 전체적인 과정에 대해서 알아보았습니다.
Encryption과정에서 키는 1~16번째가 들어갔다면 Decryption과정에서는 거꾸로 16번째부터 1번째까지 넣으면 복호화가 진행됩니다.

DES는 대칭키 암호 시스템이며 나중에는 AES와 비대칭키 시스템에 대해서 알아보도록 하겠습니다.

Icon made by Freepik from www.flaticon.com

0개의 댓글