Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

DES(데이터 암호화 표준)의 핵심 설계 요소와 설계 이슈

데이터 암호화 표준(Data Encryption Standard, DES)은 64비트 단위의 평문 블록을 입력받아 48비트 키를 사용해 암호문으로 변환하는 블록 암호 알고리즘입니다. DES는 대칭키 알고리즘으로, 데이터를 암호화할 때와 복호화할 때 동일한 키가 사용됩니다.

DES는 1970년대 IBM이 설계한 알고리즘으로, 이후 미국 국립표준기술연구소(NBS, 현 NIST)에 의해 연방 정보 처리 표준(FIPS)으로 채택되었습니다. DES의 설계가 발표된 이후 여러 차례의 분석과 검증을 거쳤으며, 그 결과 일부 필수적인 보안 요구 사항을 충족하는 것으로 확인되었습니다. 그럼에도 불구하고 DES의 설계 과정에는 몇 가지 중요한 설계 이슈가 존재하는데, 대표적으로 S-박스, D-박스, 라운드 수 세 가지입니다.

1. S-박스(S-Boxes)

S-박스는 압축된 키와 확장된 RPT(오른쪽 절반)를 XOR 연산하여 얻은 48비트 입력을 받아, 치환(substitution) 기법을 통해 32비트 출력을 생성하는 과정입니다. 이 치환 연산은 여덟 개의 치환 상자, 즉 S-박스에 의해 수행됩니다.

S-박스가 지니는 주요 성질은 다음과 같습니다.

  • 각 행의 항목들은 0부터 15 사이 값들의 순열(permutation)로 구성됩니다.
  • S-박스는 비선형(non-linear)입니다. 즉, 출력이 입력의 아핀 변환(affine transformation)이 아니어야 선형 분석 공격을 방어할 수 있습니다.
  • 입력의 한 비트만 변경하더라도 출력에서는 두 개 이상의 비트가 변경되어야 합니다.
  • 두 입력이 오직 중간 두 비트(3번째, 4번째 비트)만 다르다면, 출력은 최소 두 비트 이상 달라야 합니다. 수식으로 표현하면 S(x)와 S(x ⊕ 001100)는 최소 두 비트에서 서로 달라야 하며, 여기서 x는 입력, S(x)는 출력을 의미합니다.
  • 두 입력이 첫 두 비트(1번째, 2번째 비트)만 다르고 마지막 두 비트(5번째, 6번째 비트)가 같다면, 두 출력은 반드시 서로 달라야 합니다. 즉, b와 c가 임의의 비트일 때 S(x) ≠ S(x ⊕ 11bc00) 관계가 성립해야 합니다.

2. D-박스(D-Boxes)

D-박스는 기존의 전치 암호(transposition cipher)와 유사한 특징을 가지는 순열 상자(permutation box)입니다. D-박스의 주요 성질은 다음과 같습니다.

  • 각 S-박스의 입력은 이전 라운드에서 서로 다른 S-박스의 출력으로부터 나옵니다.
  • 주어진 S-박스의 입력은 이전 라운드에서 동일한 S-박스의 출력으로부터 나오지 않습니다.
  • 각 S-박스의 네 개 출력 비트는 다음 라운드의 여섯 개 서로 다른 S-박스로 전달됩니다.
  • 어떤 S-박스의 두 출력 비트도 다음 라운드의 동일한 S-박스로 향하지 않습니다.
  • 각 S-박스에 대해 두 개의 출력 비트는 다음 라운드 S-박스의 첫 번째 또는 마지막 두 비트 위치로 이동하고, 나머지 두 개의 출력 비트는 다음 라운드 S-박스의 중간 비트 위치로 이동합니다.

3. 라운드 수(Number of Rounds)

DES는 16라운드의 Feistel 구조를 사용합니다. 연구 결과에 따르면 8라운드가 진행된 이후에는 모든 암호문 비트가 모든 평문 비트와 모든 키 비트의 함수가 되며, 암호문이 평문과 키에 대한 거의 완전한 무작위 함수처럼 동작하는 것으로 입증되었습니다. 이론적으로는 8라운드만으로도 충분해 보이지만, DES는 차분 분석(differential cryptanalysis) 등 강력한 공격 기법에 대한 안전성을 확보하기 위해 16라운드를 채택하였습니다.