(가) 개요
- 현대 블록 암호는 확산과 혼돈과 같은 성질을 만족시키기 위하여 전치 요소(P-박스로 불림)와 치환 요소(S-박스로 불림) 그리고 그 밖의 구성 요소를 결합하여 설계된다.
- 공격 방지 암호를 제공하기 위해 현대의 블록 암호는 이동요소(shift), 교환요소(swap), 분할요소(split), 조합요소 뿐만 아니라 전치 장치(transposition, P-box)와 치환 장치(substitution, S-box)와 XOR연산(exclusive-OR)의 조합으로 만들어진다.
(나) P-박스
- P-박스는 문자 단위로 암호화를 수행하였던 고전 전치 암호를 병렬적으로 수행한다. 현대 블록 암호에서는 단순(straight) P-박스,확장(expansion) P-박스, 축소(compression) P-박스라는 세 가지 종류의 P-박스를 볼 수 있다.
- 축소 P-박스 (compression P-box)
- 축소 P-박스는 n비트를 입력받아 m비트를 출력하는 P-박스로서 n > m 을 만족한다. 입력 비트 중 특정 비트는 소실되어 출력되지 않는다.
- 축소 P-박스는 비트를 치환하고 동시에 다음단계를 위한 비트의 수를 줄이고자 할 때 사용한다.
- 확장 P-박스 (expansion P-box)
- 확장 P-박스는 n비트를 입력받아 m비트를 출력하는 P-박스로서 n < m 을 만족한다. 입력 비트 중 특정 비트는 한 개 이상의 출력비트와 연결된다.
- 확장 P-박스는 비트를 치환하고 동시에 다음 단계에서 비트의 양을 증가시키고자 할 때 사용한다.
- 역함수의 존재성
- 단순 P-박스는 역함수가 존재한다.
- 축소 P-박스와 학장 P-박스는 역함수가 존재하지 않는다.
-
S-박스는 치환 암호의 축소 모형으로 생각할 수 있다. 하지만 S-박스는 입력과 출력의 개수가 달라도 된다. 다시 말하면 S-박스에서 입력은 n비트 워드이고 출력은 m비트 워드일 때, n과 m이 서로 같을 필요는 없다.
-
역함수의 존재성 : S-박스는 입력값과 출력값 사이의 관계가 테이블 혹은 수학적 관계로 정의되는 치환 암호이다. 다시 말하면 S-박스에서 입력은 n비트 워드이고 출력은 m비트 워드일 때, n과 m이 서로 같을 필요는 없다.
(가) 개요
- Shannon은 합성 암호(product cipher)의 개념을 소개하였다. 합성 암호는 치환, 전치 그리고 그밖의 구성요소를 결합한 복합적인 암호이다.
(나) 확산(Diffusion)과 혼돈(Confusion)
- Shannon이 도입한 합성 암호의 주된 개념은 설계된 블록 암호가 확산과 혼돈이라는 두 가지 중요한 성질을 갖도록 하는 것이다.
- 확산(difussion)의 개념은 암호문과 평문 사이의 관계를 숨기는 것이다. 확산은 암호문에 대한 통계 테스트를 통하여 평문을 찾고자 하는 공격자를 좌절시킨다.
- 혼돈(confusion)의 개념은 암호문과 키의 관계를 숨기는 것이다. 혼돈은 암호문을 이용하여 키를 찾고자 하는 공격자를 좌절시킨다. 다시 말하면, 키의 단일 비트가 변하면 암호문의 거의 모든 비트가 변한다.
(다) 라운드(Rounds)
- 혼돈은 각 반복이 S-박스, P-박스 그리고 기타 구성 요소의 결합을 의미하는 반복적합성 암호를 사용하여 얻어진다. 반복적으로 사용되는 합성 암호를 라운드(round) 라운드(round)라고 칭한다.
(가) Feistel 암호
- 페이스텔 구조에서 네트워크라는 이름은 그 구성도가 그물을 짜는 것과 같이 교환되는 형태로 구성되어 있기 때문에 붙여진 것이다.
- Feistel 암호 방식의 암호 강도를 결정짓는 요소는 평문 블록의 길이, 키 K의 길이, 라운드의 수이다. 그러므로 충분한 안정성을 보장받기 위해서는 평문 블록의 길이는 64비트 이상, 키 K의 길이는 64비트 내외, 라운드 수는 16회 이상이어야 한다. 그러나 최근에는 128비트의 키 길이를 권장하고 있다.