DES(Data Encryption Stadard)
- Block cipher
plaintext를 64bit의 block으로 나눠 56bit의 key를 이용해 다시 64bit의 ciphertext를 만들어내는 알고리즘
- Symmetric cipher
암호문을 작성할 때 사용하는 암호키 = 암호문을 해독할 때 사용하는 해독키
DES 동작 과정
(1) 전반적인 DES 동작 과정
1. 64bit의 plaintext가 첫번째 round를 거치기 전에 Initial Permutation(초기 치환)을 통과한다.
2. IP를 통과한 후 나온 64bit는 32bit씩 L0과 R0으로 분리된다.
3. R0에 해당하는 32bit는 각 key_schedule를 통해 나온 첫번째 48bit key와 함께 F-box에 들어간다. F-box의 output은 32bit이다.
4. 이 32bit와 L0의 32bit를 XOR operation 해준다.
5. 생성된 32bit를 R1에 보내주고, R0 32bit는 L1에 오도록 한다. (swapping)
이과정을 16 round 반복한다.
☞ 마지막 round의 경우, swapping하지 않고 그대로 실행시켜야 한다.
6. R16과 L16을 합쳐서 64bit로 만들고 FP(IP의 역)을 통과한다. output은 64bit의 ciphertext이다.
(2) F-box
1. 각 round마다 오른쪽 32bit가 Expansion(E)를 통과한 후 48bit로 확장된다.
2. 이 48bit와 key_schedule에 따른 key 48bit가 XOR operation한 후에 F-box를 통과한다.
3. XOR operation 후에 얻은 48bit는 6bit씩 8부분으로 나누어 각각 S-Box를 통과한다.
4. S-Box를 통과한 output은 4bit이고 8개를 모두 합치면 32bit가 된다.
5. Permutation(P)를 통과해 F-box output를 도출해 낸다.
(2) key schedule
처음 64bit의 key는 PC1을 거쳐 56bit가 되는데, 나머지 8bit는 Parity bit로 사용된다.
☞ parity bit란?
정보전달 과정에서 오류가 생겼는지를 검사하기 위한 bit
56bit를 28bit씩 왼쪽, 오른쪽 분리한 후 실행한다. 각 round마다 shift_schedule(key 회전 스케줄)에 따라 왼쪽으로 1bit, 2bit 회전한다.
→ 1,2,9,16번째는 1번 shift, 나머지는 2번 shift한다.
각각 shift연산을 한 후에 왼쪽 오른쪽을 합쳐서 PC2를 통과시키면 output이 48bit이고 각각 subkey를 의미한다.
'Computer Science > Cryptography' 카테고리의 다른 글
[Cryptography] OpenSSL Install on Visual Studio(Perl, NASM, OpenSSL) (0) | 2021.01.04 |
---|---|
[Cryptography] 윈도우 openssl 실행방법 (+ 윈도우 bit 확인 방법) (0) | 2020.12.18 |
[Cyptography] Enigma machine(에니그마) 란? (0) | 2020.10.18 |
[Cryptography] Caesar cipher (0) | 2020.10.15 |
[Cryptography] 대칭암호와 비대칭 암호(Symmetric Cryptography and Asymmetric Cryptography) (0) | 2020.10.15 |