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

정보 보안에서 DES(데이터 암호화 표준)의 구조란? 핵심 개념 완벽 정리

DES(데이터 암호화 표준)란 무엇인가?

Data Encryption Standard(DES)는 평문을 64비트 블록 단위로 나누어 처리하고, 48비트 키를 사용해 이를 암호문으로 변환하는 블록 암호 알고리즘입니다. DES는 대칭키 알고리즘으로, 암호화와 복호화에 동일한 키를 사용한다는 특징이 있습니다.

DES의 암호화 과정은 두 개의 순열(P-box), 즉 초기 순열과 최종 순열, 그리고 16개의 Feistel 라운드로 구성됩니다. 각 라운드에서는 사전에 정의된 알고리즘에 따라 암호키로부터 생성된 고유한 48비트 라운드 키가 필요합니다.

DES 암호화의 주요 구성 요소

1. 초기 순열과 최종 순열 (Initial and Final Permutations)

각 순열은 64비트 입력을 받아 미리 정해진 규칙에 따라 비트의 위치를 재배열합니다. 모든 입력 포트와 출력 포트를 표시하면 복잡해지기 때문에 일부만 보여주는 경우가 많습니다. 이 두 순열은 서로 반대 관계에 있는 키 없는 직접 순열(keyless straight permutation)입니다.

예를 들어, 초기 순열에서 입력의 58번째 비트는 출력의 첫 번째 비트가 됩니다. 마찬가지로 최종 순열에서는 입력의 첫 번째 비트가 출력의 58번째 비트가 됩니다.

다시 말해, 두 순열 사이의 라운드 과정을 거치지 않으면, 초기 순열에 들어간 58번째 비트는 최종 순열을 빠져나온 후에도 그대로 58번째 위치에 있게 됩니다.

2. 라운드 (Rounds)

DES는 총 16개의 라운드를 사용하며, 각 라운드는 Feistel 암호 구조를 따릅니다. 각 라운드는 이전 라운드의 LI−1과 RI−1을 받아 다음 라운드로 전달될 LI와 RI를 생성합니다. 각 라운드는 믹서(mixer)와 스왑퍼(swapper)라는 두 가지 암호 요소로 이루어져 있다고 볼 수 있습니다.

이 두 요소는 모두 가역적(invertible)입니다. 스왑퍼는 텍스트의 왼쪽 절반과 오른쪽 절반을 맞바꾸는 역할을 하며 자연스럽게 가역적입니다. 믹서는 XOR 연산을 사용하기 때문에 가역적입니다. 가역적이지 않은 모든 요소들은 함수 f(RI−1, KI) 내부에 모여 있습니다.

3. 암호(Cipher)와 역암호(Reverse Cipher)

믹서와 스왑퍼를 활용하면 각각 16개 라운드로 구성된 암호(cipher)와 역암호(reverse cipher)를 만들 수 있습니다. 암호는 암호화 과정에서, 역암호는 복호화 과정에서 사용됩니다. 설계의 핵심은 암호화 알고리즘과 복호화 알고리즘을 최대한 유사하게 만드는 것입니다.

이 목표를 달성하는 한 가지 방법은 마지막 라운드(16번째 라운드)를 다른 라운드들과 다르게 만들어 스왑퍼 없이 믹서만 사용하는 것입니다. 라운드들은 세로로 진행되지만, 그 안의 요소(믹서나 스왑퍼)는 수평적으로 배치됩니다.

또 다른 접근 방식으로는 16번째 라운드에 스왑퍼를 하나 추가하고, 그 뒤에 스왑퍼를 하나 더 삽입하여 모든 16개 라운드를 동일하게 만드는 방법이 있습니다. 연속된 두 개의 스왑퍼는 서로의 효과를 상쇄하기 때문에 최종 결과에는 아무런 영향을 주지 않습니다.