컴퓨터보안#6
LeeMir, 31 March 2021
DES(이어서)
DES(Data Encryption Standard)
- Block Cipher의 대표적인 방식
- 64-bit의 평문 블록을 64-bit의 암호문 블록으로 만듦
- 64-bit의 block과 56-bit의 key로 이루어짐
- 최초의 key는 64-bit인데 8-bit마다 Parity Bits(오류 검출용 비트)가 있어 그를 제외하면 56-bit
- Key Permutation Table이 64-bit를 56-bit로 만들어줌(8의 배수가 빠져있음)
- 16번의 Round를 진행해 암호화함
- Initial Permutation과 Final Permutation이 존재(서로 Inverse 관계)
- Key Generation
- Key Permutation 64 => 56
- 반반 나눔 28 / 28
- Left Shift(s)를 진행, s는 라운드마다 1 또는 2로 정해져있음
- Key Permutation and Compression 56 => 48
- Swap 없이 Compression의 28 / 28이 그대로 다음 라운드로 넘어감
- Text Generation
- Initial Permutation
- 반반 나눔 32 / 32
- 오른쪽 Block에 Expansion Permutation 적용 32 => 48
- Expansion Permutation Table은 고정
- Expansion된 오른쪽 Block과 Key를 XOR (둘 다 48-bit)
- S-box Substitution 48 => 32
- 8개의 S-box가 존재해 6-bit씩 입력하면 각각 4-bit씩 출력됨
- Avalanche Effect
- 눈사태 효과
- 원문에서 1개의 비트만 바뀌어도 결과값의 절반이 변함 => 좋은 암호화
- 따라서 DES는 좋은 암호화라고 할 수 있음
- Weak Keys
- Initial Key가 모든 Bit가 0 또는 1이거나 절반 한쪽이 0 또는 1이면 Key의 안전성이 매우 떨어짐
- Weak Key는 따로 걸러주는 기능 필요
- 컴퓨터의 성능 발전에 따라, DES는 안전성이 떨어짐
- 그에 대한 대책으로, Multiple DES가 나옴
- 서로 다른 Key로 암호화를 두번(Double) 또는 세번(Triple) 진행
- Triple DES의 경우, K1으로 암호화 => K2로 복호화 => K1으로 암호화 과정으로 Key 두 개로 세 번의 암호화를 진행함
- 이를 복호화하려면 K1으로 복호화 => K2로 암호화 => K1으로 복호화 하면 됨
- 그에 대한 대책으로, Multiple DES가 나옴