-->

[암호학] DES vs AES 암호화 알고리즘, 방식 및 차이

DES(Data Encryption Standard)란?

DES는 이전 포스팅에서 살펴본 페이스텔 구조블록 대칭키 암호화 방식 중 하나이다. 16라운드로 구성되어 있기 때문에 16번의 페이스텔 암호를 수행하게 된다.

 


관련 포스팅

[자격증,이론/보안이론] - [암호학] 페이스텔(Feistel) 암호의 암복호화 방식

 

[암호학] 페이스텔(Feistel) 암호의 암복호화 방식

페이스텔(Feistel) 암호란 페이스텔 암호는 대칭 블록 암호 알고리즘으로 암복호화 과정에서 '라운드 함수'가 사용된다. 대표적인 블록 암호화 방식인 DES, SEED 등이 페이스텔 구조를 갖고 있다. 페�

liveyourit.tistory.com

 

 

DES는 64비트 평문을 64비트 암호문으로 암호화하며 키의 길이는 56비트라운드 수는 16이다. 여기서 키의 크기는 원래 64비트인데 7비트마다 오류검출을 위한 parity 비트가 1비트씩 들어갔기 때문에 실질적인 키의 길이는 56비트가 된다. 그리고 56비트의 키로부터 16개의 서브키가 생성되고 각 서브키는 각 라운드에서 사용된다.

 

  • 블록 길이 : 64비트

  • 키 길이 : 56비트

  • 라운드 수 : 16

 

 

DES 암호화 알고리즘의 구조 및 암호화 방식

DES의 암호화는 아래 그림에서 볼 수 있듯이 2개의 전치(P-박스), 16개의 페이스텔 라운드 함수로 구성된다. P-박스 2개는 라운드 함수가 시작되기 전 암호화 시작 부분에 초기 전치(Initial permutation)와 라운드 함수가 전부 끝난 후인 암호화 끝 부분 최종 전치(Final permutation)이다.

 

56비트의 암호화 키는 라운드키 생성기 (Round-key generator)에 의해 각 라운드마다 48비트의 16개의 서브키가 생성된다. 그리고 이 서브키는 각 라운드에 라운드 키로 사용된다.

 

 

 

라운드 함수 및 DES 함수(F)

DES에서 중요한 것은 바로 라운드 함수에서 사용되는 DES 함수(F) 이다. 아래 그림에서 Input, Initial Permutation 다음이 라운드 함수인데 위에 있는 그림의 Round1, Round2,... 부분이 상세하게 대체됐다고 보면 된다. 그리고 이고 f가 DES 함수이다. 이전 포스팅에서 살펴본 페이스텔 구조와 동일한 것을 볼 수 있다.

 

 

 

그럼 DES함수(f)를 좀 더 자세히 봐보자. DES 함수는 P-박스가 2번(확장 P-박스, 단순 P-박스), XOR 연산 한번, S-boxs가 쓰이는 것을 볼 수 있다. 제일 먼저, 입력값으로 들어온 32비트를 48비트로 확장한 후 라운드 함수 키 48비트와 xor을 한다. 그다음 8개의 S-박스를 거치는데 S-박스로 인해 혼돈과 확산 성질이 충족된다. S-박스는 비선형 함수이기 때문에 DES 암호화 알고리즘의 안전성은 주로 비선형 함수로 구성된 8개의 S-박스에 의존하게 된다.

 

 

 

DES는 56비트 키길이를 가지기 때문에 전수조사에 매우 취약하다. 이 때문에 이중 DES, 삼중 DES가 등장하게 된다.

 

 

AES(Advanced Encryption Standard)란?

위에서도 설명했다시피, DES는 56비트의 키를 사용하기에 더이상 안전하지 않게 되었고 이중, 삼중 DES 또한 여러 문제가 있었기에 NIST는 DES를 대체할 새로운 암호 알고리즘을 공모하기에 이른다. 최종적으로 레인달이 개발한 알고리즘이 AES 알고리즘으로 채택되었다. AES 선정 기준은 안전성, 비용, 구현 효율성이라고 한다.

 

AES는 DES와 동일하게 블록 대칭키 암호화 방식이다. 하지만 그 외의 것은 전부 다른데, 128비트 평문을 128비트로 암호화하며 DES와는 다르게 비페이스텔 알고리즘에 속한다. 또한 고정된 라운드 수와 키길이를 가졌던 DES와는 다르게 AES는 10/12/14 라운드 수와 이에 대응해 128/192/256비트의 키길이를 갖는다. 각각 AES-128/AES-192/AES-256 이다.

 

 

 

AES 암호화 알고리즘의 구조 및 암호화 방식

AES 암호화 방식은 나무위키를 인용하겠다.

 

Rijndael 알고리즘은 크게 보아 네 단계로 이루어진다.
 - KeyExpansion : key schedule(키 스케줄)이라고도 부른다. 128, 192 또는 256비트 길이인 하나의 주 암호화 키를 받아서 아래 라운드들에서 사용할 여러 개의 128비트 라운드 키를 생성한다.
 - 0 라운드 : 위의 단계에서 생성한 라운드 키 중 첫번째 키를 사용, AddRoundKey를 한 번 실행한다.
 - 1~(9, 11, 13) 라운드 : SubBytes, ShiftRows, MixColumns, AddRoundKey를 순서대로 실행한다. 이것을 AES-128, 192, 256에 따라 각각 9번, 11번, 13번 반복한다.
 - 마지막 (10, 12, 14)번째 라운드 : SubBytes, ShiftRows, AddRoundKey를 순서대로 실행한다.

 

 

여기서 AES는 충분한 분산 효과를 주기 위해 상태의 각 열을 비트단위로 섞는 MixColumns을 사용하게 된다.

 

 

 

AES vs DES 암호화 알고리즘의 차이

DES와 AES 암호화 알고리즘의 차이를 표로 정리해보면 아래와 같다.

 

 

DES

AES

페이스텔

페이스텔

비페이스텔

블록크기

64bits

128bits

키길이

56bits

128/192/256bits

암호화 프리미티브

치환, 전치

치환, 쉬프트, 비트혼합(분산)

 

 

댓글

Designed by JB FACTORY