startonebyone 2022. 8. 21. 00:39

DES 구조

  • 8바이트(64비트)를 한 블록으로 하는 블록 암호
  • 전체 구조는 초기 순열, 최종 순열, 페이스텔 구조의 16라운드, 각 라운드에 사용되는 48비트의 키를 생성하는 키 생성 함수로 구성됨
  • DES에 입력되는 키의 길이는 64비트인데, 패리티 비트를 제거하면 실제로 사용되는 키의 길이는 56비트다.
  • 백도어 : 컴퓨터 보안에서는 시스템을 쉽게 장악할 수 있도록 만들어진 비밀 통로를 백도어라고 한다.

 

DES 원리

  • DES는 혼돈 성질을 만족하기 위해 치환을, 확산 성질을 만족하기 위해 순열을 사용한다.
  • 곱 암호 : 치환이나 순열 같은 단순한 연산들로 한 라운드로 구성하고, 각 라운드를 여러 번 반복하여 암호학적 안전성을 확보하는 암호다.
  • 페이스텔 암호 특징 : 페이스텔 구조를 사용하면 역함수가 존재하지 않아도 된다. 또한 암호화와 복호화의 구조가 동일하므로, 암호화에 사용한 라운드 키를 역순으로 입력하면 복호화가 이뤄진다. 한편, 페이스텔 암호는 비페이스텔 암호와 같은 안전성을 갖기 위해 두 배 정도 라운드를 사용해야 한다는 단점이 있다

 

라운드 함수

  • 입력 길이는 32비트
  • 라운드 함수는 확장 순열(Expansion P-Box), 라운드 키 결합(XOR), 치환 테이블(S-Box), 고정 순열(Straight P-Box)로 이루어짐
  • 확장 순열 : 입력을 비트 단위로 전치하는 동시에, 전체 길이를 48비트로 확장한다. 이 과정에서 32비트의 입력값을 4비트씩 8개의 부분으로 나누고, 테이블을 참조하여 각각을 6비트로 확장합니다. 이 과정은 테이블만 다를 뿐, 초기 순열, 최종 순열과 같은 방식으로 이뤄진다.
  • 라운드 키 결합 : 확장 순열로 나온 출력을 라운드 키 K와 xor 하는 것임.
  • S-Box : 라운드 키 결합에서 출력된 48비트 결과 값을 32비트로 축소한다.
  • 키 생성 함수 : 64비트의 입력을 받아 각 라운드에 필요한 48비트 라운드 키를 생성하는 함수로 이 함수는 패리티 비트 제거, 쉬프트, 압축 순열로 구성됨.
  • 패리티 비트 제거 : 입력에서 패리티 비트를 제거하고, 남은 56비트에 순열을 적용하는 과정이다. DES의 비밀키에서 각 바이트의 가장 오른쪽 비트는 자신이 속한 바이트의 나머지 7비트에 대한 홀수 패리티 비트(Odd Parity Bit)입니다. 홀수 패리티 비트란 한 바이트를 이진수로 표현했을 때, 1의 개수가 홀수가 되도록 덧붙인 비트를 말합니다.
  • 패리티비트는 통신 중에 비트 반전이 일어나지 않았음을 보증하는 역할을 한다.
  • 쉬프트 : 입력을 왼쪽 28비트와 오른쪽 28비트로 나누어 각각을 1비트나 2비트만큼 왼쪽으로 순환 쉬프트(Cyclic Shift)하는 과정이다.
  • 압축 순열 : 56비트의 입력을 48비트 길이로 압축하는 과정입니다. 수행 방법은 앞서 설명한 순열들과 같다.

 

다중 DES

  • 다중 DES는 서로 다른 키를 사용하는 DES모듈을 여러 개 이어붙여서 DES의 약점을 보완한 암호 시스템입니다. DES를 두 겹으로 사용하는 이중 DES(Double DES, 2-DES)는 112비트, 삼중 DES(Triple DES, 3-DES)는 168비트의 키를 사용합니다.

 

중간 일치 공격

  • 공격자가 어떤 평문 p, p 암호화한 암호문 c 있을 , 수행할 있는 공격이다.