본문 바로가기

Computer Science/security

[정보보호] DES 알고리즘

@ DES ( Data Encryption Standard )


- DES는 평문을 64비트로 나눠 56비트의 키를 이용해 다시 64비트의 암호문을 만들어 내는 알고리즘이다.(대칭형 블록 암호)
 

 

 

 


- DES 알고리즘은 대체로 아래 그림과 같다. 64비트의 평문이 16라운드를 거쳐 64비트의 암호문을 나오게 하는 것이다.
 

 

 

 

(a) twisted lader (b) untwisted ladder

INPUT : 64비트의 평문과 키 스케줄을 거친 64비트의 키가 입력된다.

OUTPUT : 64비트의 암호문이 나온다.


1. 먼저 64비트의 평문이 첫 라운드를 거치기 전에 IP(initial permutation, 초기치환)를 거친다.

2. IP를 거친뒤 평문은 첫 번째 라운드에 들어가게 되는데, 좌우 각각 32비트(Lo,Ro)로 나위어서 들어간다.

3. 이제 오른쪽 32비트는 키 스케줄에 의해 나온 첫 번째 48비트 키와 F함수에 들어가고 F함수는 32비트를 내뱉는다.

4. F함수에서 나온 32비트는 2번의 왼쪽 32비트와 XOR연산을 거치게 된다.

5. 첫 라운드의 오른쪽 32비트는 다음 라운드의 왼쪽 32비트로 들어가고, XOR연산을 거친 32비트는 다음 라운드의 오른쪽 32비트로 들어가게 된다.

6. 두 번째 라운드부터 16번째 라운드까지 첫 번째 라운드와 같은 방식으로 이루어진다.

7. 마지막 라운드를 거친 뒤 IP의 역에 들어가게 되는데, 이때는 좌우가 바뀌어서 (R 16, L 16)로 들어간다.

8. IP의 역을 거친 것이 64비트의 암호문이다.


@ f 함수


- F함수에는 오른쪽의 32비트 텍스트와 키 스케줄을 거친 키가 들어간다.

 

 

 


1. 오른쪽 32비트는 E(expansion)를 거치게 되어 48비트가 된다.

2. 이 48비트는 키(48비트)와 XOR연산을 하게 된다.

3. XOR연산의 결과로 나온 48비트는 6비트씩 잘려서 8개의 S-box에 들어가게 된다.

4. 각각의 6비트는 S-box를 거친 뒤 4비트가 되어서 나오게 된다.

5. 4비트씩 8개가 모여 다시 32비트를 이루게 된다.

6. 이 32비트는 P(permutation)를 거쳐서 F함수의 결과(32비트)를 내 놓는다.




 

@ 키 스케줄


- 사용자는 56비트의 키를 입력하는데 이것에 8비트의 parity bits가 포함되어 키 스케줄에는 모두 64비트의 키가 들어간다. parity bits는 키 사이즈를 64에서 56비트로 줄여준다. 키 스케줄을 거친 뒤 16개의 48비트 키가 생성되는데 그 과정은 다음과 같다.


 

1. 키 스케줄을 하기 전에 쉬프트 횟수를 정의하는데 1,2,9,16번째는 한번, 나머지는 2번씩이다. 이것으로 총 28번의 쉬프트가 이루어진다.

2. 먼저 키는 PC1박스를 거치게 된다. PC1박스를 거친 후엔 두 부분(각각 28비트)으로 나뉘게 된다.

3. 이제 각각의 두 부분은 위에서 정의한대로 1번째에는 한 번의 왼쪽 쉬프트를, 두 번째에는 한 번의 왼쪽 쉬프트를, 세 번째에는 2번의 왼쪽 쉬프트를.....16번째에는 1번의 왼쪽 쉬프트를 하게 된다.

4. 첫 번째 키는 1번째 쉬프트를 했을 때 두 부분을 합쳐서 PC2박스를 통과시켜 나오는 48비트이다.

5. 두 번째 키는 2번째 쉬프트를 한 후 첫 번째와 같이 두 부분을 합쳐 PC2박스를 통과시켜 나오는 48비트이다.

6. 이런 식으로 16번째까지 모두 16개의 키가 생성되게 한다.
 

 

 

 



@ DES 운영방식


1. ECB ( Electronic CodeBook )


- ECB 모드는 DES 암호 방식의 사용 방식 중 가장 간단한 방식으로 평문을 64비트씩 나누어 암호화하는 방식이다.


2. CBC ( Cipher Block Chaining)


- DES 암호 방식의 CBC 모드는 출력 암호문이 다음 평문 블록에 영향을 미치게 하여 각 암호문 블록이 전단의 암호문의 영향을 받도록 만든 방식으로 ECB에서 발생하는 동일한 평문에 의한 동일한 암호문이 발생하지 않도록 구성한 동작 모드이다.


3. CFB ( Cipher FeedBack )


- 컴퓨터 및 통신 시스템 내에서 데이터는 메시지 전체, 또는 프레임이나 블록단위, 그리고 문자나 비트 단위로 취급되어 질 수 있다. 문자나 비트 단위로 취급되어질 경우 CFB 방식에 의해서 암호화가 수행될 수 있다. 통신 프로토콜의 하위 계층에서는 데이터를 문자나 비트 단위로 취급한다.


4. OFB ( Output FeedBack )


- CFB 방식과 동일하지만 키 수열은 평문과 무관하게 생성 되어지기 때문에 현재 생성된 암호문이 그 다음 암호화에는 영향을 미
치지 않는다는 차이점을 가지고 있다.


@ 1990년대 들어 DES암호의 해독의 가능성이 높아지고, 1998년을 기점으로 DES는 표준 기한이 만료됨에 따라, 미국 NIST(표준 기술 연구소)에서 1997년 9월에 키의 길이가 128비트 이상인 새로운 블록 암호인 AES(Advanced Encryption Standard)를 공모하였다. 최종적으로 Rijndael (Rijmen&Daemen)이 AES로 채택되었다.