고전 대칭키 암호는 문자 기반 암호이다. 컴퓨터의 발전과 함께 비트 기반 암호가 필요하게 되었다.
이러한 변화는 암호화되는 대상이 단지 텍스트가 아니고 숫자, 그래픽, 오디오, 비디오 데이터 등으로 구성되기 때문이다. 이와 같은 데이터 타입을 비트 스트림으로 변환하고, 변환된 스트림을 암호화 한 다음 암호화된 스트림을 전송한다. 뿐만 아니라 텍스트가 비트 단위로 처리될 때에는 각 문자는 8비트 스트림으로 변환된다. 처리되는 심볼이 8배가 됨을 알 수 있다. 많은 심볼을 섞는 것은 안전성을 증가시킨다.
1. 현대 블록암호
현대 대칭키 블록암호는 n-비트 평문 블록을 암호화하거나 n-비트 암호문 블록을 복호 한다. 암호화 혹은 복호화 알고리즘은 k비트 기를 사용한다. 복호 알고리즘은 암호 알고리즘의 역함수이며, 두 알고리즘은 동일한 비밀키를 사용한다. 따라서 B는 A가 보낸 메시지를 복호 할 수 있다.
대치 혹은 전치
현대 블록암호는 대치 암호 혹은 전치암호로 동작하도록 설계되었다. 대치 혹은 전치되는 연산의 단위가 문자가 아니라 비트로 수행된 것을 제외한다면 현대 블록암호는 고전 암호화 동일한 사상을 가지고 있다.
만약 암호가 대치 암호로 설계된다면, 평문 비트의 값은 임의의 값으로 대체된다. 따라서 평문에서 0의 개수 혹은 1의 개수는 암호문의 0의 개수 혹은 1의 개수와 다르다. 예를 들어, 0의 개수가 12개 이고 1의 개수가 52개인 64비트 평문 블록은 0의 개수가 34개이고 1의 개수가 30개인 암호문 블록으로 암호화될 수 있다. 만약 암호가 전치 암호로 설계된다면 각각의 비트는 단지 재배열된다. 따라서 평문과 암호문의 0과 1의 개수는 같다. 어느 경우이든지 n비트 블록의 각 비트는 0과 1중 하나의 값을 가질 수 있으므로, n비트 평문 혹은 암호문의 개수는 2의 n승이다.
평문을 암호화할 경우 전치 암호의 특성은 전수조사 공격에 치명적이기 때문에 현대 블록암호는 대치암호로 설계된다.
키 없는 암호 알고리즘
키 없는 암호 알고리즘은 그 자체만으로는 실제적으로 쓸모없지만, 키가 있는 암호 알고리즘의 구성요소로서는 사용된다.
키가 없는 전치 암호
키가 없는 전치 암호는 하드웨어로 구현될 경우 이미 고정되어 내장된 전치 암호로 여겨질 수 있다. 고정된 키는 소프트웨어로 구현될 경우 테이블로 표현될 수 있다.
키가 없는 대치 암호
키가 없는 혹은 키가 고정된 대치암호는 입력 값에서 출력값으로 대응시키는 사전에 정의된 사상이다. 대응은 테이블, 수학적 함수 등으로 정의될 수 있다.
현대 블록암호의 구성요소
일반적으로 현대 블록암호는 입력 값으로 부터 출력 값으로 대응시키는 가능한 모든 경우 중에서 부분적 대응만을 허용하는 키가 있는 대치암호이다. 하지만 현대 블록 암호는 보통 단일 요소로 설계되지 않는다. 현대 블록암호는 확산과 혼돈과 같은 성질을 만족시키기 위하여 전치 요소와 대치요소 그리고 그 밖의 구성 요소들을 결합하여 설계된다.
P-박스
P-박스(치환 박스)는 문자 단위로 암호화를 수행하였던 고전 전치 암호를 병렬적으로 수행한다. 현대 블록암호에서는 단순 P-박스, 확장 P-박스, 축소 P-박스의 세 가지 종류를 볼 수 있다.
단순 P-박스는 n비트를 입력받고 n비트를 출력하는 치환 함수이다. n! 개의 대응이 존재한다.
축소 P-박스는 n비트를 입력받아 m비트를 출력하는 P박스로서 n>m을 만족한다. 입력 비트 중 특정 비트는 소실되어 출력되지 않는다. 현대 블록암호에 사용되는 축소 P박스는 키가 사용되지 않으며 비트를 전치하기 위한 규칙은 치환 테이블로 정의한다. 축소 P-박스에 대한 치환 테이블은 m개의 성분을 가지며 각각의 성분은 1부터 n개 값을 갖는다. 그중 몇 비트는 소실된다.
확장 P-박스는 n비트를 입력받아 m비트를 출력하는 P박스로서 n>m을 만족한다. 입력비트 중 특정 비트는 한 개 이상의 입력비트와 연결된다. 현대 블록암호에 사용되는 확장 P-박스는 키가 사용되지 않으며 전치 비트에 대한 규칙은 치환테이블로 정의한다. 확장 P-박스에 대한 치환 테이블은 m개의 성문을 가지며 m-n개의 성분이 반복적으로 사용된다.
확장 P-박스는 비트를 치환하고 동시에 다음 단계에서 비트의 양을 증가시키고자 할 때 사용한다.
역함수의 존재성
단순 P-박스는 역함수가 존재한다. 암호 알고리즘에서 단순 P-박스를 사용할 수 있고 복호알고리즘에 단순 P-박스의 역함수를 사용할 수 있다. 하지만 치환 테이블은 서로 간에 역원이 되어야만 한다.
축소 P-박스와 확장 P-박스는 역함수가 존재하지 않는다. 축소 P-박스에서 어떤 입력 값은 암호화 과정에서 소실된다. 복호알고리즘은 소실된 비트를 복호화할 수 있도록 하는 어떤 단서도 갖고 있지 않다. 확장 P-박스에서 암호화되는 동안 입력 비트는 하나 이상의 출력 비트에 대응될 수도 있다. 복호 알고리즘은 여러 개의 입력값이 한 개의 출력값에 대응되는 단서를 갖지 않는다.
S-박스
S-박스는 대치암호의 축소모형으로 생각할 수 있다. 하지만 S박스는 입력과 출력의 개수가 달라도 된다. 다시 말하면 S-박스에서 입력은 n비트워드이고 출력은 m비트 워드일 때, n과 m은 서로 같을 필요는 없다. 비록 S-박스가 키가 있는 혹은 키가 없는 경우일 수 있지만, 현대 블록암호는 일반적으로 키가 없는 S-박스를 사용하며, S-박스의 입력에 서 출력으로 대응은 사전에 정의되어 있다.
역함수의 존재성
S-박스는 입력값과 출력값 사이의 관계가 테이블 혹은 수학적 관계로 정의되는 대치 암호이다. S-박스는 역함수가 존재할 수도 있고, 존재하지 않을 수도 있다. 역함수가 존재하는 S-박스는 입력 비트와 출력 비트의 개수가 동일한다.
'정보보안' 카테고리의 다른 글
DES(Data Encryption Standard) (0) | 2023.02.26 |
---|---|
정보보호론/정보보안기사 현대 대칭키 암호2 (0) | 2023.02.17 |
정보보호론/정보보안기사 고전대칭키 암호학2 (0) | 2023.02.13 |
정보보호론/정보보안기사 고전대칭키 암호화1 (0) | 2023.02.12 |
정보보호론/정보보안기사 정보보호개요 (0) | 2023.02.12 |
댓글