DES(Data Encryption Standard)

Chan Young Jeong·2023년 4월 1일
0

DES 암호 알고리즘이란 대칭형 암호이다.(비밀키 암호) DES는 64비트 평문을 64비트 암호문으로 암호화하고 56비트의 Key를 사용한다. (Key가 전달될 때는 64비트로 전달된다.
그 이유는 7비트마다 오류 검출을 위한 페리티 비트가 들어가기 때문이다. 실질적으로는 56비트)
DES는 Feistel 네트워크의 변형된 형태로, 16 개의 라운드를 거치며 56비트짜리 원래 키로부터 16개의 서브키를 생성하고 그 서브키를 각 라운드에서 사용한다.

DES 알고리즘 전체 구조

그림에서 보듯이 평문의 길이는 2W로 표시한다. 그리고 이 평문은 W길이의 L0, R0로 나뉘어 Input으로 들어간다. 총 16(N)라운드를 거쳐 2W 길이의 암호문이 생성된다.

키 스케쥴은 암호화 단계에서는 K1 -> K2 -> .. -> KN 이고 복호화 단계에서는 이 반대인 KN -> KN-1 -> ... -> K1 이다. (Ki : i th subkey)

DES 알고리즘 동작 과정

Initial Permutation

가장 먼저 64비트의 평문이 다음과 같은 테이블을 토대로 Initial Permutation 테이블에 따라 permutation 암호화가 적용된다. 그리고 마지막에 16개의 라운드가 끝나고도 Inverse of Initial Permutation 테이블에 따라 permutation 암호화가 적용된다.

Single Round

각 라운드는 다음과 같은 구조를 가지고 있다.

  • L (i)th : R (i-1)th
  • R (i)th : L (i-1)th XOR F(K (i)th , R (i-1)th)

F 함수

1. Expansion/Permutation (E table )
R (i-1)th의 32 bit를 48 bit로 늘리는 역할을 합니다. permutation 암호 알고리즘 사용.

2. 48 bit XOR K ith
1번을 적용해서 나온 48 bit와 키 스케줄링에 따라 나온 K (i)th 번 째 subkey와 xor를 한다.

3. Substitution/choice (S box)

48 bit를 다시 32 bit로 줄이는 역할을 한다.

  • 48bit를 6bit씩 잘라서 8개의 묶음을 만든다.

  • 각 묶음은 Si(b0b1b2b3b4b5) : (b0b5) row - (b1b2b3b4) column
    ex) S1(010110) : (00) row - (1011) column -> 0 행 - 11열 -> 12
    12를 2진수로 다시 표시하면 1100이 나온다.

  • 이렇게 각 6 bit를 4bit로 줄이면 8개의 묶음이였기 때문에 결과는 32bit

4. Permutation
3번 과정에서 나온 32bit를 P 테이블에 따라 permutation 암호화를 적용한다.

위에서본 1,2,3,4 번 과정을 거쳐 나온 값 32bit와 L (i-1) th 값을 xor 하여 R i th을 구한다.

Key Scheduling

Permuted Choice 1 table에 따라 56 bit의 키를 각각 28bit의 C0, D0로 나눈다.

  • left shift는 rotations in the key schedule table에 따라 각 라운드에 지정된 num of left shifts를 한다.

  • permuted choice2 table에 따라 48 bit를 구해 K (i) th subkey로 사용한다.

0개의 댓글

관련 채용 정보