본문 바로가기

정보보안기사/암호학

대칭키 암호 #2 (DES)


2. DES(Data Encryption Standard)

(1)개요

  1)역사 

미 국립기술표준원에서 1973년에 국가적으로 사용할 대칭키 암호시스템 제안, Lucifer프로젝트의 수정판인 IBM의 제안이 DES로 채택됨.

1975년 3월에 연방관보에서 연방정보처리기준의 초안으로 공포됨. 발표 이후 DES는 가장 널리 사용되는 대칭키 블록암호가 되었다. AES는 오랫동안 사용된 DES를 대체하기위해 표준으로 제정된 알고리즘이다.


  2)개관

DES는 64비트 평문을 사용하는 64비트암호문(56+8(오류검출 비트)) 으로 암호화하는 대칭키 알고리즘이다.

DES는 Feistel 네트워크의 변형된 형태이며 라운드 횟수는 16회 이다.

56비트짜리 원래 키로부터 16개의 서브키를 생성하고 그 서브키를 각 라운드에서 사용한다. 


DES의 복호화 과정은 암호화와 동일하다. 암호문을 알고리즘의 입력으로 사용하고. 서브키는 순서를 뒤집어 적용한다. 즉, 첫번째 라운드에서 마지막 서브키를 사용하고 다음순번은 그 다음 서브키를 사용하며 마지막 라운드인 16라운드에서 최초의 키를 사용할때 까지 반복한다.



(2)DES의 구조

  1)개요

암호화 과정은 두개의 전치(P-box)와 16개의 Feistel 라운드 함수로 구성된다. 여기서 사용된 두 개의 P-box중 하나는 초기전치 다른하나는 최종전치라고 한다.

각 라운드에서는 라운드 키 생성기에 의해 암호키로부터 생성된 48비트 라운드 키를 사용한다. 


  2)라운드 함수

Des는 Feistel 암호로 되어있는 16번의 라운드 함수를 사용한다. 


라운드 함수의 경우는 이전 라운드 함수의 출력 값과 평문을 P-box에서 전치한 결과로 생성되는 초기 전치박스의 출력값()을 입력받아 다음 라운드에 입력으로 전송될 을 생성한다.


각 라운드에는 2개의 암호 요소가 있다. 혼합기(Mixer)와 교환기(Swapper)가 있는데. 이런 요소들은 역 연산이 가능하다. 


DES 함수

DES의 핵심은 함수이다. 를 말하는데 DES함수는 32비트 출력값을 산출하기 위하여 가장 오른쪽의 32비트에 48비트키를 적용한다. 

DES함수는 확장P-box, 키 XOR , 8개의 S-box, 단순P-box의 네개 부분으로 구성되어있다.





  3)암호화 알고리즘과 복호화 알고리즘

위에서 언급한 Mixer와 Swapper 를 이용한 알고리즘 방식이 어떻게 동작하는지 살펴보자. 이 요소들은 암호화와 복호화시에 사용 된다.

복호화시에 라운드 키들이 역순으로 적용되어야 하는것이 포인트이다. 


초기에 평문을 암호화는 경우에는 첫 라운드에 K_1을 사용하는데, 복호화시에는 마지막으로 생성된 서브키인 K_16번째 키를 처음에 사용한다. 



(3)DES 분석

  1)설계 기준

S-Box

각 라운드부터 그 다음 라운드 까지 혼돈[각주:1]을 만족하도록 설계

입력값의 한 비트를 바꾸면, 출력값은 두 비트 이상이 변한다.

비선형 함수


P-Box

32비트에서 32비트로 가는 하나의 단순 P-box와 32비트에서 48비트로 가는 하나의 확장 P-box가 있다. 이런 P-box는 비트들을 동시에 확산[각주:2]시킨다.


  2)DES의 취약점

비평가들은 DES의 가장 심각한 취약점이 키의 크기(56bit)라고 한다. 전수조사 공격에 의해 공략을 당할 수 있기 때문인데 시간이 지날수록 하드웨어의 성능이 증가함에 따라 전수조사공격의 성능도 향상 되기 때문에 키의 길이를 늘려 경우의수를 증가시켜야 한다. 



(4)다중 DES

  1)3중 DES

  전사적 공격으로부터 안전성을 높이기 위해 키의 길이를 늘리는 원리이다. 

  

  오늘날 사용중인 3중 DES에는 두 가지 버전이 있는다. 두 개의 키를 사용하는 3중 DES와 3개의 키를 갖는 3중 DES이다.

  3중 DES는 하드웨어에서는 매우 효율적이지만 소프트웨어에 대해서는 비효율적이다.


  - 두 개의 키를 갖는 3중 DES 

: 암호문 = E K1 (D K2 (E K1 (평문))) 의 방식이다. 


  - 세 개의 키를 갖는 3중 DES

: 암호문 = E K3 (D K2 (E K1 (평문)))


* 호환성  : 과거의 DES로 암호화된 암호문은 3DES를 사용하여 복호화가 가능하다.

  - 3DES를 DES로 사용 

: 암호문 =  E (D K (E K (평문)))


구분

DES 

Triple DES 

AES 

평문 블록 크기(bits)

64 

64 

128 

암호문 블록 크기(bits) 

64 

64 

128 

키 크기(bits)

56 

112 or 168 

128 or 192 or 256 





= 각주 =



  1. 암호문과 키의 상관관계를 숨김 [본문으로]
  2. 평문의 통계적 성질을 암호문 전반에 퍼트려 숨김 [본문으로]