DES 대칭키 암호화 알고리즘

#cryptosystem#algorithm

DES 대칭키 암호화 알고리즘


DES란?

DES(Data Encryption Standard) 암호화 기법은 1975년에 개발된 대칭키 암호 알고리즘 방식으로 한때는 미국 국가 표준 암호 알고리즘이었다.

허나 지금은 보안 취약성 때문에 사용을 금지하고 표준 알고리즘을 AES로 변경하였다.

대칭키 암호화 방식

symmetric_encryption

대칭키 암호화 방식은관용 암호화 방식 또는 단일-키 암호화 방식으로도 불린다.

비대칭키 방식과 마찬가지로 송신된 데이터나 저장된 데이터에 기밀성을 제공하기 위한 기법이다.

암호화할 때의 키와 복호화할 때의 키가 서로 같아서 대칭키 방식으로 불린다.

대칭 암호화 방식에는 다섯 가지 구성요소가 있다.

  • 평문
  • 암호화 알고리즘
  • 비밀키
  • 암호문
  • 복호화 알고리즘

DES의 방식

DES64비트 평문 블록과 56 비트 키를 이용하여 64 비트 암호문 블록을 생성한다.

키는 총 64비트지만 그 중 8비트는 에러 검출 용도인 패리티 비트로 사용하므로 실제 키의 길이는 56 비트이다.

가장 많이 연구된 암호화 알고리즘이기도 하고 56비트라는 비교적 짧은 키를 사용하여 Electronic Frontier Foundation(EFF)에서는 1998년 DES 암호화를 폐지할 것을 공표하였다.

16라운드 Feistel 구조

DESFeistel 구조를 사용하여 데이터를 암호화한다.

입력 블록을 두 부분으로 나눈 후 오른쪽 부분을 서브키와 함께 라운드함수에 넣고 나온 결과를 왼쪽 블록과 XOR 연산한다. feistel

그리고 다음 라운드로 넘어가지 전 왼쪽 블록과 오른쪽 블록의 위치를 바꾼다.

Feistel_cipher_diagram_en.svg https://en.wikipedia.org/wiki/Feistel_cipher

서브키 생성법

라운드 함수에서 쓰이는 서브키는 어떤 방식으로 만들어지나

서브키는 메인키(56비트)에서 파생된다.

  1. 초기 64비트 키의 비트 위치를 섞는다. (초기전치)
  2. 64비트 키에서 패러티 비트(8비트)를 제거하고 56비트만 남겨둔다. (축약)
  3. 56비트를 PC-1(전치 선택 1) 규칙에 의해 재배열 시킨다.
  4. 56비트를 절반으로 쪼개 2개의 28비트를 만든다.
  5. 28비트를 라운드마다 왼쪽 쉬프트 이동한다. (1,2,9,16 라운드는 한 번 나머지는 2번 이동)
  6. 이동이 끝난 28비트 두 개를 다시 합치고 PC-2(전치 선택 2) 를 통해 48비트로 축약하여 서브키를 생성한다.

pc https://blog.naver.com/errorsoft666/221513722574

실제 암호화 단계

우선 평문(64비트)의 순서를 섞는다.

잘 섞인 64비트를 32비트 두 개로 쪼갠다.

이제 이것을 위에서 언급한 Feistel에 넣는다.

사전에 준비한 서브키는 48비트이므로 32비트를 우선 48비트로 확장하고 두 블록을 XOR연산한다.

결과로 나온 48비트를 6비트씩 총 8개로 분리하고 S-Box에 넣어서 다시 32비트로 만든다.

f https://blog.naver.com/errorsoft666/221513722574

이제 이 32비트를 반대쪽 블록과 XOR 연산을 하고 블록 위치를 바꿔서 다음 라운드로 넘어간다.


3-DES

DES는 초기에는 안전한 암호화 알고리즘이였지만 컴퓨팅 성능의 향상으로 이제는 더이상 안전하지 않아

3-DES(Triple DES)가 개발되었다.

DES의 취약점은 키의 크기가 56비트로 비교적 작다는 것이다.

3-DES는 이 취약점을 보안하기 위해 키의 크기를 112비트 혹은 168비트를 사용한다.

DES를 총 3번 적용한다는 뜻에서 3-DES로 불린다.

암호화 -> 복화화 -> 암호화 각 단계별로 DES를 적용하여 총 3개의 Key가 필요하다.

3개의 Key 모두 다르게 사용하면 168비트가 Key가 되고

2개는 같고 하나의 key만 다르다면 112비트가 된다.