본문 바로가기

Crypto

DES

DES(Data Encryption Standard)

1975년에 IBM에서 개발하고 1979년에 미국 NBS(National Bureau of Standards, 현 NIST)가

국가 표준 암호 알고리즘으로 지정한 대칭키 암호 알고리즘

 

IBM에서 '루시퍼'라는 암호 알고리즘을 개발했는데

이를 개량하여 NIST가 국가 표준으로 지정한 알고리즘

 

블록 암호 기법을 사용하며 16단계의 파이스텔 네트워크

(Feistel Network)이라고 부름)를 거쳐 암호화를 수행

 

*파이스텔 암호

암호화 방식이 특정 계산 함수의 반복으로 이루어진다.

이 때, 각 과정에 사용되는 함수는 라운드 함수(round function)

 

블록의 단위는 64 비트로 평문을 64 비트 단위로 암호화를 수행하여

64 비트의 암호화 문서를 생성하며 키 길이는 64 비트지만

실제로는 패리티 비트가 8 비트(8의 배수 비트들)

붙어있어서 실제 키 길이(=암호화 강도)는 56 비트

 

라운드 횟수는 16라운드

56비트 암호화키로부터 16개의 서브키를 생성하고

서브키를 각 라운드에서 사용

 

오늘날의 컴퓨터의 성능으로는 56비트는 너무 짧기 때문에  2015년을 기준으로 하면 암호화의 의미가 없다.

따라서 현대에는 기존에 암호화된 문서를 복호화하는 용도로만 사용하고 신규 암호화 문서를 생성하는데는 

절대로 사용하지 말 것을 권장

 

DES 취약점

선형 공격(Linear Cryptanalysis):

DES 알고리즘에 대한 공격으로 선형 공격이 가장 강력한 것으로 알려져있다.

이를 방지하기 위해 DES 직후에 개발된 알고리즘은 대부분 SPN(Substitution-Permutation-Network) 구조로 설계되었다.

차분 공격(Differential Cryptanalysis):

선형 공격에 안전하기 위해서는 차분 공격에 대한 안전성을 조금은 포기해야하는데,

이를 최소화하기 위한 방법으로 AES의 S-box가 설계되었다.

 

S-Box 설계 기준(P0~P3 중요)

P0: S-Box의 각 행은 (0~15)까지 정수의 랜덤한 배치 순열

P1: 어떤 S-Box도 출력에 대하여 선형도 아핀도 아니다.

P2: S-Box의 6-비트 입력 중 1-비트가 변경되면 출력은 최소 2-비트이상 달라야함

P3: S-Box의 6-비트 입력중 가운데 2-비트만 변경되면 출력은 최소 2-비트 이상 달라야함

S-Box의 입력 중 첫 2비트가 다르고 마지막 2비트가 같으면 두 출력은 달라야함

입력들 사이에 0이 아닌 6비트 차이는 그러한 차이를 나타내는 입력은 32쌍 중 오직 8쌍은 같은 출력을 야기

 

P-Box 설계 기준

-i번째 반복에서 각 S박스로부터의 4개의 출력 비트가 분산되어

2비트는 (i+1)번째 반복의 중간비트에 영향을 미치고

다른 2비트는 양끝 비트에 영향을 줌

-각 S박스의 출력 4비트는 다음 반복에서 여섯 개의 다른 S-Box에 영향을 주며 

같은 S-Box에 영향을 주지 않음

-두 개의 S-Box j, k에서 j=k에 대하여 S의 한 출력 비트는

S의 중간비트에 영향을 주어서는 안됨

3-DES(Triple DES)

DES를 세 번 적용해서 키 길이를 세 배로 늘리는 기법

 DES 알고리즘을 이용하여 암호화→복호화→암호화를 거치는데,

키는 세 개를 전부 다른 것으로 쓸 수도 있고(168 비트)

처음과 마지막 암호화는 같은 것을 쓰고 중간의 복호화만 다른 키를 써서 두 개만 쓸 수도 있다(112 비트)

168 비트의 경우 오늘날에도 적당히 쓸만한 수준의 안전성을 제공

 

 

 

NIST가 2001년 공모전을 통해 새로운 표준 암호 알고리즘을 정하기로 했고

5개의 최종 후보안 중에 선택된 것이 지금의 AES

'Crypto' 카테고리의 다른 글

블록 암호의 원리  (0) 2020.05.03
블록암호 VS 스트림 암호  (0) 2020.05.02
의사 난수 생성의 원리  (0) 2020.05.02
스트림 암호  (0) 2020.05.02
AES  (0) 2020.04.30