본문 바로가기
학부/Network Security

DES(Data Encryption Standard)

by ulqaef 2019. 4. 20.
728x90

DES(Data Encryption Standard)는  64비트 평문을 64비트 암호문으로 암호화하는 대칭암호 알고리즘이다.

DES는 64비트열을 하나의 단위로 모아서 암호화한다. 이 단위를 블록(BLOCK)이라고 하며 

블록 단위로 처리하는 암호 알고리즘을 블록 암호(Block cipher)라고 부르므로 DES도 일종의 블록암호이다.

 

DES로 한 번에 암호화 할 수 있는 것은 64비트이기 때문에 그것보다 긴 비트를 암호화 하기 위해서는

DES를 이용하여 암호화를 반복해야 한다.(모드(MODE)라고 하며 나중에 공부해보자)

 

DES는 페이스텔구조(Feistel Structure)를 활용하고 있다.

페이스텔구조(Feistel Structure)는 라운드(round)라는 암호화의 한 단계를 

여러 번 반복수행하도록 되어 있는 구조다.

 

페이스텔 구조(Feistel Structure) 암호화(왼쪽)와 복호화(오른쪽) 과정

 

<암호화>

 

-1라운드-

(1) 라운드의 입력을 L과 R로 나눈다.

(2) R은 그대로 R로 보낸다.

(3) R을 라운드 함수 F로 보낸다.

(4) 라운드 함수 F는 R과 서브키 K를 입력으로 사용하여 랜덤하게 보이는 비트열을 계산한다.

(5) 얻어진 비트열과 L을 XOR한다. 그 결과를 다음 라운드의 L로 사용한다.

 

N round부터는 (N-1)라운드에서 보내온 L과 R을 교환하여 입력으로 사용한다.

그리고 2~5번의 과정을 반복한다.

이 과정에서 사용되는 서브키는 이전 라운드에서 사용한 서브키와 다른 키를 사용한다.

 

마지막 라운드에서 생성된 R과 L을 결합하여 암호문을 생성한다.

 

<복호화>

 

페이스텔구조의 복호화 과정은 암호화 과정을 역으로 실행하는 것으로 수행할 수 있다.

이 과정에서 사용된 서브키의 순서는

암호화 과정에서 사용된 서브키의 순서의 반대가 된다.

예를 들어 K1 -> K2 -> K3 ... 의 순서로 서브키가 사용되었다면 복호화 과정에서는 ... -> K3 -> K2 -> K1 순으로 

서브키가 사용된다.

 

 

페이스텔 구조는 원하는 만큼 라운드 수를 늘릴 수 있다는 것이다.

아무리 라운드 수를 늘려도 복호화할 수 없게 될 걱정은 없다.

 

라운드 함수 F에 어떤 함수를 사용해도 복호화가 가능하며

 암호화와 복호화를 완전히 동일한 구조로 실현할 수 있다.

 

이러한 특징 때문에 많은 블록 암호 알고리즘에서 페이스텔 구조를 사용하고 있다

 

 

 

 

 

 

 

 

<참고 : 히로시 유키 - 알기 쉬운 정보보호개론>

728x90
반응형

댓글


`