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

DES 초기 순열(IP)이란? 개념부터 비트 치환 규칙까지 총정리

DES 초기 순열(Initial Permutation)이란?

초기 순열(Initial Permutation, IP)은 DES 암호화 과정이 시작될 때 단 한 번만 수행되는 전치(transposition) 단계입니다. DES에서는 전체 평문을 먼저 64비트 크기의 블록으로 분할한 뒤, 각 블록마다 IP를 적용합니다.

초기 순열의 수행 시점과 역할

초기 순열은 전체 암호화 과정에서 오직 한 번만 등장하며, 첫 번째 라운드가 시작되기 직전에 수행됩니다. IP 테이블은 평문 블록의 비트들이 어떤 규칙으로 재배치되어야 하는지를 규정합니다.

예를 들어, IP는 원래 평문 블록의 첫 번째 비트를 58번째 비트의 자리로 옮기고, 두 번째 비트를 50번째 비트 자리로 옮기는 방식으로 동작합니다. 즉, 초기 순열이란 원래 평문 블록의 비트 위치를 단순히 뒤섞는 작업에 불과합니다.

IP의 기본 아이디어

평문 블록 내 비트 위치해당 위치의 내용으로 덮어쓰기
158
250
342
........
647

서로 반대 관계인 키 없는 직선 순열

각 순열은 64비트 입력을 받아 정해진 규칙에 따라 비트를 재배치하며, 특정 입력 포트와 그에 대응하는 출력 포트만 존재한다는 점이 특징입니다. 이러한 순열들은 키(key)를 사용하지 않는 직선 순열(straight permutation)이며, 초기 순열과 최종 순열은 서로 정반대의 관계에 있습니다.

예를 들어, 초기 순열에서는 입력의 58번째 비트가 출력의 첫 번째 비트가 됩니다. 반대로 최종 순열(Final Permutation)에서는 입력의 첫 번째 비트가 출력의 58번째 비트가 됩니다.

다시 말해, 만약 이 두 순열 사이의 라운드들이 존재하지 않는다면, 초기 순열에 들어간 58번째 비트와 최종 순열을 빠져나온 58번째 비트는 동일한 값이 됩니다.

전체 전치 테이블 읽는 방법

IP에서 사용하는 전체 전치 테이블은 다음과 같으며, 이 테이블은 왼쪽에서 오른쪽으로, 위에서 아래로 읽어야 합니다.

예를 들어, 테이블의 첫 번째 위치에 있는 '58'은 IP 과정에서 원래 평문 블록의 58번째 비트 내용이 1번째 비트 위치를 덮어쓴다는 것을 의미합니다. 마찬가지로 테이블의 40번째 위치에 있는 '1'은 첫 번째 비트가 원래 평문 블록의 40번째 비트를 덮어쓴다는 뜻입니다. 나머지 모든 비트 위치에도 동일한 규칙이 적용됩니다.

585042342618102605244362820124
625446383022146645648403224168
57494133251791595143352719113
615345372921135635547393123157

IP 이후의 처리 과정

초기 순열이 완료되면, 결과로 얻어진 64비트 치환 블록은 각각 32비트로 구성된 두 개의 절반 블록으로 나뉩니다. 왼쪽 블록은 LPT(Left Plain Text), 오른쪽 블록은 RPT(Right Plain Text)라고 부릅니다. 이후 이 두 블록을 대상으로 총 16라운드의 연산이 수행됩니다.