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

DES 암호화는 몇 라운드로 구성될까? 16라운드 핵심 단계 총정리

DES의 라운드 수: 총 16라운드

DES(Data Encryption Standard)는 총 16개의 라운드를 사용하는 대칭키 암호화 알고리즘입니다. 각 라운드는 다음과 같은 핵심 단계들로 구성됩니다.

1. 키 변환 (Key Transformation)

초기 64비트 키에서 매 8번째 비트를 제거하면 56비트 키가 만들어집니다. 따라서 각 라운드에서 사용할 수 있는 키는 56비트입니다. 이 56비트 키로부터 각 라운드마다 서로 다른 48비트 서브키가 생성되며, 이 과정을 '키 변환'이라고 합니다.

56비트 키는 각각 28비트 크기의 두 부분으로 나뉩니다. 이 두 부분은 라운드 번호에 따라 왼쪽으로 1비트 또는 2비트씩 순환 시프트(circular shift)됩니다.

예를 들어, 라운드 번호가 1, 2, 9 또는 16일 때는 1비트만 시프트되고, 그 외의 라운드에서는 2비트씩 시프트됩니다. 라운드별 키 비트 시프트 횟수는 아래 표와 같습니다.

라운드12345678910111213141516
시프트 비트 수1122222212222221

▲ 라운드별 키 비트 시프트 횟수

2. 확장 치환 (Expansion Permutation)

초기 치환(initial permutation)이 끝나면 평문은 좌측 평문(LPT)과 우측 평문(RPT)이라 불리는 두 개의 32비트 영역으로 나뉩니다. 확장 치환 단계에서는 RPT가 32비트에서 48비트로 확장됩니다. 비트 크기를 32비트에서 48비트로 늘리는 과정에서 비트들이 함께 재배열되기 때문에 이를 '확장 치환'이라고 부릅니다.

3. S-박스 치환 (S-box Substitution)

S-박스 치환은 압축된 키와 확장된 RPT를 결합한 XOR 연산 결과로 얻은 48비트 입력을 받아, 치환(substitution) 기법을 사용해 32비트 출력을 생성하는 과정입니다.

4. P-박스 치환 (P-box Permutation)

S-박스의 출력은 32비트입니다. 이 32비트는 P-박스(P-box)를 사용해 재배열됩니다. 이 단순한 치환 구조는 P-박스 테이블에 정의된 대로 각 비트를 다른 위치의 비트로 교체하는 작업만 수행하며, 확장이나 압축은 전혀 이루어지지 않습니다. 이를 'P-박스 치환'이라고 합니다.

P-박스는 아래 표와 같습니다. 예를 들어 첫 번째 칸의 '16'은 원본 입력의 16번째 위치에 있는 비트가 출력의 1번째 위치로 이동함을 의미하고, 16번째 칸의 '10'은 원본 입력의 10번째 비트가 출력의 16번째 위치로 이동함을 의미합니다.

16720212912281711523265183110
28241432273919133062211425

5. XOR 및 스왑 (XOR and Swap)

지금까지 설명한 모든 연산은 원래 64비트 평문 중 우측 32비트 절반에만 적용됩니다. 좌측 절반은 아직까지 어떠한 변경도 받지 않은 상태입니다. 이 시점에서 초기 64비트 평문 블록의 좌측 절반이 P-박스 치환으로 생성된 출력과 XOR 연산됩니다.