Cryptography

Cryptography(암호학) - DES(Data Encryption Standard)

HackHiJack 2021. 12. 18. 22:50
728x90
반응형

오늘은 대칭키 암호 중 하나인 DES 암호에 대해 알아볼 것이다.(드림핵 참고)

 

DES는 NSA에서 IBM의 루시퍼 알고리즘을 개량하여 만든 것이다.

DES는 56비트의 키를 이용하고, 8바이트 블록암호이다.

현대에는 DES 공격기법이 많이 연구되어 특별한 경우 아니면 잘 사용하지 않는다.

 

DES는 IP(초기순열), FP(최종순열), Feistel 구조, 각 라운드에 사용되는 48비트의 키를 생성하는 키 생성 함수로 이루어져 있다.

1. DES의 원리

DES는 순열, 치환을 사용한다.

DES는 순열과 치환을 여러 라운드에 거쳐 진행하는 곱 암호(Product Cipher)의 일종이다.

 

DES 전체의 라운드 함수를 적용하는 과정은 Feistel 구조를 가진다.

Feistel 구조는 다음과 같은 과정으로 진행된다.

평문 L(0), R(0)은 입력으로 들어온 블록을 같은 길이로 나눈거이다.

각 라운드마다 L(n+1) = R(n)이 되고, R(n+1)은 라운드 함수 F를 K(n),R(n)에 적용시킨 값과 L(n)을 XOR한 값이 된다.

 

복호화는 반대로 하되, 어차피 XOR과정에서 그 결과가 상쇄되기 때문에 F는 역함수가 아니여도 괜찮다.

2. DES의 과정

일단 먼저 IP,FP를 살펴보자.

이는 초기순열, 최종순열이라고도 하는데 입력받은 64비트를 정해진 테이블을 이용하여 전치하는 것이다.

그러면 테이블의 n번째 값이 m일때, 출력의 n번째 값도 m이 된다.

아래는 IP,FP에 사용되는 테이블이다.

이제 라운드 함수에 대해서 알아보겠다.

위에서 L(i)를 R(i-1)을 라운드함수 F를 이용하여 만들었다.

그 F함수를 알아보겠다.

위에서 입력받은 블록 64bit 중 L은 32비트를 차지한다.

이를 이용하여 함수를 적용한다.

라운드함수는 확장순열, 라운드 키 결합, S-box, 고정순열로 이루어진다.

 

먼저 학장순열은 32bit 입력값을 4비트씩 나눈후 테이블을 참조하여 48bit로 확장한다.

EPT

그 후 나온 값과 라운드 키의 값을 XOR한다.

 

S-box 위의 값을 32bit로 다시 축소한다.

S-box과정은 다음과 같다.

입력을 여섯 비트씩 8개의 부분으로 나눈다.

여섯 비트 중 첫 번째와 마지막 비트로 행을 결정하고, 나머지 네 개의 비트로 열을 결정한다.

S-Box의 표에서 행과 열을 참조하여 값을 반환한다. .

이제 32bit로 줄여진 값을 고정순열로 다시 비트단위로 전치한다.

키 생성 함수는 64비트의 입력을 각 라운드에 사용할 수 있는 48비트 키로 만든다.

키 생성 함수는 패리티 비트 제거, 쉬프트, 압축순열이다.

 

패리티 비트제거는 패리티 비트를 제거하고 남은 비트에 순열을 적용하는 것이다.

패리티 제거표

쉬프트는 위의 남은 56비트를 28비트로 나눈 후 1,2,9,16 라운드는 1번, 나머지는 2번 왼쪽으로 비트를 이동한다.

 

압축 순열은 아래를 이용하여 56비트를 48비트로 압축시킨다.

728x90
반응형