**DES(Data Encryption Standard)**는 미국의 국가 안보국(National Security Agency, NSA)에서 IBM의 루시퍼 알고리즘을 개량하여 만든 대칭키 암호입니다. DES는 루시퍼에서 128비트 키를 사용했던 것과 달리 키 길이를 56비트로 줄였고, 내부에서 사용하는 알고리즘도 일부 변경하였습니다.
일각에서 미국 국가 안보국이 도감청을 위해 DES에 백도어를 숨겨놓았다는 의혹을 제기하기도 했지만, 미국 국립표준기술연구소(National Institute of Standards and Technology, NIST)는 DES를 1976년부터 2002년까지 표준 블록 암호로 인정했습니다. 현대에는 DES에 대한 공격 기법이 많이 연구되어 DES를 더이상 블록 암호의 표준으로 사용하지 않습니다.
DES는 8바이트(64비트)를 한 블록으로 하는 블록 암호이며, 전체 구조는 오른쪽 그림과 같이 초기 순열(Initial Permutation, IP), 최종 순열(Final Permutation, FP), 페이스텔(Feistel) 구조의 16 라운드, 그리고 각 라운드에 사용되는 48비트의 키를 생성하는 **키 생성 함수(Key Generation)**로 구성되어 있습니다.
이번 강의에서는 DES의 구조와 설계 원리를 알아볼 것입니다. 이전 강의들에 비해 다소 복잡한 내용을 다루므로, 차근차근 따라오시기 바랍니다.
컴퓨터 보안에서는 시스템을 쉽게 장악할 수 있도록 만들어진 비밀 통로를 백도어라고 부릅니다. 해커가 시스템을 장악하고 나중을 위해 백도어를 남겨두기도 하지만, 제품의 설계자가 사용자를 해킹하려고 백도어를 심어서 출시하는 경우도 드물게 존재합니다. 실제로 몇몇 세계적인 IT회사의 제품에서 백도어가 발견된 사례를 어렵지 않게 찾아볼 수 있습니다.

DES는 혼돈 성질을 만족하기 위해 **치환(Substitution)**을, 확산 성질을 만족하기 위해 **순열(Permutation)**을 사용합니다.
치환과 순열을 매우 단순한 연산이므로 평문에 이들을 한 번 적용한다고 해서 암호학적 효과를 기대할 수는 없습니다. 그러나 이들을 여러 번 교차해서 반복 적용하면 혼돈과 확산의 성질을 모두 만족하게 된다고 알려져 있습니다. 이런 특성을 이용하여 치환이나 순열 같은 단순한 연산들로 한 라운드로 구성하고, 각 라운드를 여러 번 반복하여 암호학적 안전성을 확보하는 암호를 **곱 암호(Product Cipher)**라고 합니다.
DES는 아래 사진과 같이 여러 라운드에 걸쳐 치환과 순열을 반복하는 곱 암호의 일종입니다. DES외에도 많은 현대 블록 암호들은 곱 암호의 구조를 차용하고 있습니다.
