[정보보안] Data Encryption Standard (DES)
by 너나나Block cipher : guiyum.tistory.com/78
avalanche effect : plaintext나 key의 작은 변화가 ciphertext의 큰 변화를 일으키는것
DES has a strong avalanche effect.
Data Encryption Standard (DES)
64비트의 block cipher -> 64-bit block이 생성
- Plaintext : 64bit
- Key : 56bit + 8bit (parity)
16 라운드를 반복하게 된다!!
암호화 복호화 과정이 똑같은데 키만 반대순으로 사용한다.
DES processing step
- Initial Permutation (IP) step
- Repetition of plaintext processing using 16 round Feistel structure
- Substitution step
- Inverse Initial Permutation (IIP) step
Data Encryption Standard (DES)
2개의 전치(Initial Permutation, Inverse Initial Permutation), 16개의 Feistel 라운드 함수로 구성된다.
56비트의 Cipher Key로부터 16개의 sub key가 만들어지고 이 sub key가 각 라운드의 키로 사용된다.
이제 자세하게 구조를 살펴보자!!
먼저 permutation과정을 보자!!!
처음 64비트의 plaintext가 들어왔을 때와 마지막 64비트 ciphertext가 생성되기 직전에 permutation과정이 수행된다.
비트가 규칙에 따라 swapping 되는데 이 initial permutation(IP), inverse initial permutation(IIP) 과정은 테이블에 의해 이루어진다. plaintext와 ciphertext의 통계적 성질을 감추기 위해 사용한다!!
이 테이블에 보면 첫번째 자리에 58이 들어가있는데 즉 plaintext의 58번째에 있는 숫자를 ciphertext의 첫번째 글자로 쓰라는 뜻이다!!
DES round 과정을 보면
BtoW는 64비트 블럭을 32비트로 나누는 함수이다. 이거는 block cipher와 같으니까 생략하고(맨 위 링크 참고) DES의 핵심인 DES function f에 대해서 알아보자!!
DES 함수는 오른쪽 부분인 R_i-1에 48비트 라운드 키 K_i를 적용하는데 R_i-1은 32비트이므로 R_i-1을 48비트로 확장한 후에 라운드 키 48비트와 xor연산을 한다.
1~4비트가 확장되는 6비트의 2~5비트가 되고 6비트의 첫번째 부분은 그 이전 섹션의 4번째 비트가 복사돼서 오고 6비트의 마지막 부분은 그 다음 섹션의 첫번째 비트가 복사돼서 온다.
이렇게 확장된 후 키 값과 xor연산을 한 후 S-BOX를 통해 입력비트를 치환하는데 DES는 각각 6비트 입력값과 4비트 출력값을 갖는 8개의 S-박스를 사용한다. 이 S-박스의 6비트 입력중에 1, 6번째 비트는 행을 결정하고 2~5 비트는 열을 결정한다.
이 다음 다시 P-Box에서 permutation을 수행해준다!!
이제 키 생성 과정에 대해 알아보자!!
DES에서 사용하는 56비트의 키를 이용해 16개의 48비트 sub key를 생성해야 한다!!
먼저 주어진 키는 64비트(56비트 + 8개의 parity 비트)기 때문에 parity Drop을 통해 56비트로 만든다.
그런 다음 56비트를 오른쪽/왼쪽 28비트씩 나눠 shift left를 하는데 이때 1, 2, 9, 16 라운드 에서는 1bit shift left를 하고 얘네를 제외한 나머지는 2bit shift를 한다. 마지막으로 PC-2 테이블에 따라 56비트를 48비트로 줄인다!!
이렇게 열심히 암호화하는 DES도 컴퓨터의 발전에 따라 취약해져 3-DES(Triple DES)가 나왔다..!!!! 3-DES는 DES를 3번 반복하여 암호화 하는 것이다!! 2개의 key를 이용한 3DES도 있고 3개의 key를 이용한 3DES도 있다.
'2021-1 > 정보보안' 카테고리의 다른 글
[정보보안] Stream Cipher (0) | 2021.05.26 |
---|---|
[정보보안] Block Cipher modes of Operation (2) | 2021.05.11 |
[정보보안] Block Cipher Structure (0) | 2021.05.09 |
[정보보안] Worm Propagation Model (0) | 2021.04.16 |
[정보보안] Classic Encryption Techniques (0) | 2021.04.13 |
블로그의 정보
공부 기록
너나나