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

DES에서 S-Box의 역할은 무엇일까? 대칭키 암호의 핵심 비선형 요소 완벽 정리

DES란 무엇인가?

DES(Data Encryption Standard)는 미국 국립표준기술연구소(NIST)가 도입한 대칭키 블록 암호입니다. DES는 1977년 1월 연방관보(Federal Register)에 FIPS 46으로 공식 발표되었으며, NIST는 이를 비분류(non-classified) 소프트웨어에서 사용할 수 있는 표준으로 지정했습니다.

DES는 발표 이후 오랫동안 가장 널리 사용된 대칭키 블록 암호였습니다. 이후 NIST는 새로운 표준인 FIPS 46-3을 발표하여, 향후 소프트웨어에서 트리플 DES(Triple DES, 동일한 DES 암호를 세 번 반복 적용)의 사용을 공식적으로 승인했습니다.

DES의 기본 구조

DES는 64비트 블록 크기를 가지며, 실제 구현 시에는 56비트 키가 필요합니다. 전체 64비트 키 중 8비트는 패리티 비트로 제거되기 때문입니다. DES는 대칭 암호 시스템이며, 특히 16라운드 Feistel 암호 구조를 따릅니다.

암호화 과정은 다음과 같이 진행됩니다.

암호화할 블록은 먼저 초기 순열(IP)을 거칩니다. 이후 복잡한 키 의존적(key-dependent) 계산이 수행되고, 마지막으로 초기 순열의 역순열인 IP−1을 거쳐 최종 결과가 만들어집니다.

여기서 순열(permutation)은 함수로 구현되는 연산으로, 위치 j에 있는 원소를 위치 k로 옮기는 작업을 의미합니다. 키 의존적 계산은 크게 두 가지 함수로 단순하게 표현할 수 있습니다.

  • 암호 함수(cipher function): f로 표시되는 함수
  • 키 스케줄(key schedule): KS로 표시되는 함수

S-Box의 역할과 동작 방식

함수 F에서 S-Box(S-박스)의 역할은 치환(substitution)을 담당하는 것입니다. 이 치환은 총 8개의 S-Box로 구성된 그룹을 통해 수행됩니다.

각 S-Box는 6비트를 입력으로 받아 4비트를 출력하며, 동작 방식은 다음과 같습니다.

  1. 입력의 첫 번째 비트와 마지막 비트가 결합하여 2비트 이진수를 형성하고, 이 값이 해당 S-Box(Si) 테이블의 네 개 행 중 하나를 선택합니다.
  2. 입력의 중간 4비트는 16개 열 중 하나를 선택합니다.
  3. 선택된 행과 열에 해당하는 셀의 십진수 값이 4비트 이진수로 변환되어 최종 출력이 됩니다.

예시: S1에서의 변환

예를 들어 S1에 입력값 011001이 들어온 경우를 살펴보겠습니다.

  • 첫 비트와 끝 비트로 행 결정: 01 → 1번째 행
  • 중간 4비트로 열 결정: 1100 → 12번째 열
  • 1번째 행, 12번째 열의 값은 9이므로, 출력은 1001이 됩니다.

S-Box 설계 원칙

S-Box는 DES 보안성의 핵심으로, 다음과 같은 설계 원칙을 따릅니다.

  • 각 S-Box는 반드시 6비트 입력과 4비트 출력을 가져야 합니다.
  • S-Box의 어떤 출력 비트도 입력 비트의 선형 함수와 너무 가까워서는 안 됩니다. S-Box는 DES에서 유일한 비선형 요소이며, 바로 이 비선형성이 알고리즘의 강도를 좌우합니다.
  • S-Box의 각 '행'은 가능한 모든 출력 값을 포함해야 합니다. 이를 통해 출력이 무작위화(randomize)됩니다.
  • 두 입력이 정확히 1비트만 다른 경우, 두 출력은 최소 2비트 이상 달라야 합니다.
  • 두 입력이 중간 2비트에서만 다른 경우에도, 출력은 최소 2비트 이상 차이 나야 합니다.
  • 두 입력이 첫 2비트에서는 다르지만 마지막 2비트는 같은 경우, 두 출력은 서로 달라야 합니다.

이러한 원칙들은 차분 분석(differential cryptanalysis) 등의 공격에 대한 저항성을 높이기 위한 것으로, S-Box가 단순한 치환 표를 넘어 DES 전체 보안성을 결정짓는 핵심 요소임을 보여줍니다.