본문 바로가기
cryptology

대칭키 암호 시스템과 DES 에 대해 알아보자

by jinhyuk._.c 2022. 8. 12.

대칭키 암호 시스템이란~?

암호문을 생성할 때 사용하는 키(Key)와 암호문으로부터 평문을 복원할 때 사용하는 키(Key)가 동일한 암호 시스템입니다.

 

이제 종류에 대해서 알아볼텐데 종류를 알려드리기 전에 먼저 '블록암호' 에 대한 설명이 필요할것 같습니다.

 

블록암호란?

암호학에서 블록 암호(block cipher)는 기밀성 있는 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템입니다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용됩니다. (예: ECB, CBC, OFB, CFB, CTR)

(운용모드에 대한 설명은 대칭키종류에 대해 알아보고 뒤에서 알아보겠습니다.)

 

그러면 이제는 대칭키 암호 시스템의 종류에 대해 알아보겠습니다.

 

대칭키 암호 시스템의 종류입니다.

1. DES

2. Advanced Encryption Standard(AES)
3. ARIA
4. Twofish
5. SEED

 

DES란?

데이터 암호화 표준(Data Encryption Standard)은 블록 암호의 일종으로, 미국 NBS (National Bureau of Standards)에서 국가 표준으로 정한 암호입니다. DES는 대칭키 암호이며, 56비트의 키를 사용합니다.

하지만 DES는 현재 취약한 것으로 알려져 있습니다. 56비트의 키 길이는 현재 컴퓨터 환경에 비해 너무 짧다는 것이 하나의 원인이며, DES에 백도어가 포함되어 있어 특수한 방법을 사용하면 정부 기관에서 쉽게 해독할 수 있을 것이라는 주장도 제기되었기 때문입니다.
위의 문제를 해결하기 위한 방안으로 DES를 세 번 반복해서 사용하는 Triple-DES는 DES에 비해 안전한 것으로 알려져 있으며, 또한 현재는 DES 대신 AES(Advanced Encryption Standard)가 새 표준으로 정해져 사용되고 있습니다.

 

DES 의 특징

DES는 평문을 64비트로 나눠 56비트의 키를 이용하여 다시 64비트의 암호문을 만들어 내는 암호 알고리즘입니다. 이때 암호문은 16번의 반복을 통해 만들어지는데 이때 16번의 반복동안 라운드 함수를 적용하고 이때 라운드 함수에 적용되는 키는 라운드 키입니다. 라운드 키는 키 스케줄에 의해 라운드 키를 발생시킵니다. DES는 Feistel Cipher 방식으로 암호화를 합니다. 

 

DES 암호의 알고리즈 동작 과정

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

2. IP를 거친 후 나온 64비트 값은 각 L0와 R0로 32비트씩 나뉘어 들어갑니다.

3. R0에 해당하는 32비트는 각 키 스케줄에 의해 나온 첫번째 48비트 키와 F 함수에 들어가고 F 함수는 결국 32비트를 도출해냅니다.(다음 그림에서 F함수에 대한 설명이 있습니다.)

4. 이렇게 생성된 32비트와 L0의 32비트를 XOR해줍니다.

5. 마지막으로 생성된 32비트를 또 R1에 보내줍니다.

 

이 과정을 16라운드까지 반복해줍니다.

 

6. 마지막 라운드를 거칠때는 L과 R이 반대로 들어가게 됩니다.(R16, L16 참고)

7. 이후 IP의 역에 들어가게 되고 마지막으로 output인 64비트 암호문을 얻게 됩니다.

 

 

다음은 위 그림에서 F 함수에 대한 설명입니다.

1. 각 라운드마다 오른쪽(R)의 32비트가 E(expansion)을 거쳐 48비트가 됩니다.

2. 이렇게 얻은 48비트와 키 스케줄을 거친 키 48비트가 XOR을 거치고 F함수로 들어갑니다.

3. XOR로 얻은 48비트는 8부분으로 나뉘어 각각 6비트씩 S-BOX에 들어갑니다.DES의 S-BOX는 다음 그림과 같습니다.

4. S-BOX에 들어갔다 나온 값들은 4비트로 나오게 되고 결국 모두 합치면 8*4인 32비트가 나옵니다.

5. 결국 32비트는 P(permutation)을 거쳐 F함수의 결과인 32비트를 도출해냅니다.

 

 

다음은 키 스케쥴에 대해 알아보았습니다.

1. 처음 64비트 key는 PC1을 거쳐 56비트의 키가 됩니다. 이때 사용되지 않은 8비트는 패리티 비트로 사용됩니다.

2. 56비트는 left, right로 28비트씩 반반 가는데 이때  각 라운드마다 키 회전 스케쥴에따라 왼쪽으로 1비트 혹은 2비트 회전하게 됩니다.(1,2,9,16번째는 한번 쉬프트, 나머지는 두번 쉬프트합니다.)

3. 첫번째 키는 1번 쉬프트를 하고 두 부분을 합쳐 PC 2를 통과시켜 48비트가 됩니다.

4. 두번째 키는 1번 쉬프트를 하고 두 부분을 합쳐 PC 2를 통과시켜 48비트가 됩니다.

5. 세번째 키는 2번 쉬프트를 하고 두 부분을 합쳐 PC 2를 통과시켜 48비트가 됩니다.

6. 위의 방법을 반복한후 열여섯번째 키는 1번 쉬프트를 하고 두 부분을 합쳐 PC 2를 통과시켜 48비트가 됩니다.

 

다음은 추가로 트리플DES 알고리즘에 대해 알아보겠습니다.

 

트리플 DES 란?

트리플 DES 알고리즘은 DES의 복호화가 가능해짐에 따라 AES가 나오기 전까지 임시로 사용한 암호화 알고리즘입니다. 과정은 DES 알고리즘과 같으며 다음 그림과 같이 암호화 및 복호화 과정에서 DES와는 달리 2개의 암호화키를 이용합니다.

트리플 DES는 두 개의 DES 암호화키를 이용한 DES로 기본적으로 2개의 DES 암호화키를 알아내면 복호화가 가능합니다. 즉 트리플 DES DES 알고리즘보다 2배의 암호화 강도를 가진다는 장점이 있습니다. 하지만 DES 암호문을 복호화하는 데 1998년에 56시간, 1999년에 22시간 걸린 것을 감안할 때 컴퓨터의 발전 속도에 비해 2배의 암호 강도는 만족할 만한 수준이 아니었습니다. 그런 이유로 트리플 DES는 오래 사용되지 못했습니다.

 

다음 챕터에서는 AES 에 대해 알아보겠습니다.

반응형

'cryptology' 카테고리의 다른 글

SEED 암호화란?  (0) 2022.08.31
Twofish 암호화란?  (0) 2022.08.17
ARIA 암호란?? ARIA 에 대해 알아보자  (0) 2022.08.16
AES 란? AES 암호란?  (0) 2022.08.12
암호학에 대해 알아보자  (0) 2022.08.12

댓글