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

S-박스(S-Box) 치환이란? DES 암호화의 핵심 원리 완벽 정리

S-박스 치환(S-Box Substitution)은 압축된 키와 확장된 RPT(오른쪽 평문)가 포함된 XOR 연산 결과로부터 48비트 입력을 받아, 치환(substitution) 기법을 활용해 32비트 출력을 생성하는 과정입니다.

S-박스 치환의 동작 방식

치환 연산은 여덟 개의 치환 상자, 즉 S-박스(S-box)를 통해 구현됩니다. 각 S-박스는 6비트 입력4비트 출력을 가지며, 그 동작 과정은 다음과 같습니다.

  • 48비트 입력 블록은 8개의 하위 블록(각 6비트)으로 분할됩니다.
  • 분할된 각 하위 블록은 하나의 S-박스에 순서대로 전달됩니다.
  • 각 S-박스는 자신만의 고유한 규칙에 따라 6비트 입력을 4비트 출력으로 변환합니다.

행과 열 결정 방법

각 S-박스 내부의 치환은 4행 × 16열 구조의 미리 정의된 표를 기반으로 수행됩니다.

  • 입력 6비트 중 첫 번째와 여섯 번째 비트 → 행(row) 번호 결정 (0~3, 총 4개 행)
  • 입력 6비트 중 두 번째부터 다섯 번째 비트 → 열(column) 번호 결정 (0~15, 총 16개 열)

예를 들어 입력이 b1 b2 b3 b4 b5 b6라면, b1b6 조합이 행을, b2b3b4b5 조합이 열을 지정하게 됩니다.

S-박스 치환표 (Table 1 ~ Table 8)

각 S-박스는 서로 다른 고유한 표를 가지므로, 모든 박스의 출력을 표현하려면 아래와 같이 총 여덟 개의 표가 필요합니다. 저장 공간을 절약하기 위해 입력값(행·열 번호)과 출력값은 10진수로 표기되어 있으며, 실제 암호화 과정에서는 이 값들을 2진수로 변환하여 사용해야 합니다.

S-박스 1

1441312151183106125907
0157414213110612119538
4114813621115129731050
1512824917511314100613

S-박스 2

1518146113497213120510
3134715281412011069115
0147111041315812693215
1381013154211671205149

S-박스 3

1009146315511312711428
1370934610285141211151
1364981530111212510147
1101306987415143115212

S-박스 4

7131430691012851112415
1381156150347212110149
1069012117131513145284
3150610113894511127214

S-박스 5

2124171011685315130149
1411212471315015103986
4211110137815912563014
1181271142136150910453

S-박스 6

1211015926801334147511
1015427129561131401138
9141552812370410113116
4321295151011141760813

S-박스 7

4112141508133129751061
1301174911014351221586
14111312371410156801092
6111381410795015140312

S-박스 8

1328461511110931450127
1151381037412561101492
7114191214206101315358
2114741081315129035611

S-박스가 중요한 이유

S-박스는 DES(Data Encryption Standard) 알고리즘에서 유일하게 비선형성(non-linearity)을 제공하는 요소입니다. 단순한 비트 이동이나 XOR 연산만으로는 암호 해독이 상대적으로 쉬워질 수 있지만, S-박스의 복잡한 치환 규칙이 더해지면서 혼돈(confusion) 효과가 강화되어 암호의 안전성이 크게 향상됩니다. 이러한 특성 덕분에 S-박스는 대칭키 블록 암호 설계에서 핵심적인 역할을 담당하고 있습니다.