Skip to content

Latest commit

 

History

History
52 lines (36 loc) · 4.26 KB

Part2_대칭키암호.md

File metadata and controls

52 lines (36 loc) · 4.26 KB

1. 현대 대칭키 암호

(1) 현대 블록 암호

1) 현대 블록 암호의 구성요소

(가) 개요

  1. 현대 블록 암호는 확산과 혼돈과 같은 성질을 만족시키기 위하여 전치 요소(P-박스로 불림)와 치환 요소(S-박스로 불림) 그리고 그 밖의 구성 요소를 결합하여 설계된다.
  2. 공격 방지 암호를 제공하기 위해 현대의 블록 암호는 이동요소(shift), 교환요소(swap), 분할요소(split), 조합요소 뿐만 아니라 전치 장치(transposition, P-box)와 치환 장치(substitution, S-box)와 XOR연산(exclusive-OR)의 조합으로 만들어진다.

(나) P-박스

  • P-박스는 문자 단위로 암호화를 수행하였던 고전 전치 암호를 병렬적으로 수행한다. 현대 블록 암호에서는 단순(straight) P-박스,확장(expansion) P-박스, 축소(compression) P-박스라는 세 가지 종류의 P-박스를 볼 수 있다.
  1. 축소 P-박스 (compression P-box)
  • 축소 P-박스는 n비트를 입력받아 m비트를 출력하는 P-박스로서 n > m 을 만족한다. 입력 비트 중 특정 비트는 소실되어 출력되지 않는다.
  • 축소 P-박스는 비트를 치환하고 동시에 다음단계를 위한 비트의 수를 줄이고자 할 때 사용한다.
  1. 확장 P-박스 (expansion P-box)
  • 확장 P-박스는 n비트를 입력받아 m비트를 출력하는 P-박스로서 n < m 을 만족한다. 입력 비트 중 특정 비트는 한 개 이상의 출력비트와 연결된다.
  • 확장 P-박스는 비트를 치환하고 동시에 다음 단계에서 비트의 양을 증가시키고자 할 때 사용한다.
  1. 역함수의 존재성
  • 단순 P-박스는 역함수가 존재한다.
  • 축소 P-박스와 학장 P-박스는 역함수가 존재하지 않는다.

2) S-박스

  1. S-박스는 치환 암호의 축소 모형으로 생각할 수 있다. 하지만 S-박스는 입력과 출력의 개수가 달라도 된다. 다시 말하면 S-박스에서 입력은 n비트 워드이고 출력은 m비트 워드일 때, n과 m이 서로 같을 필요는 없다.

  2. 역함수의 존재성 : S-박스는 입력값과 출력값 사이의 관계가 테이블 혹은 수학적 관계로 정의되는 치환 암호이다. 다시 말하면 S-박스에서 입력은 n비트 워드이고 출력은 m비트 워드일 때, n과 m이 서로 같을 필요는 없다.


3) 합성 암호(Product Ciphers)

(가) 개요

  1. Shannon은 합성 암호(product cipher)의 개념을 소개하였다. 합성 암호는 치환, 전치 그리고 그밖의 구성요소를 결합한 복합적인 암호이다.

(나) 확산(Diffusion)과 혼돈(Confusion)

  1. Shannon이 도입한 합성 암호의 주된 개념은 설계된 블록 암호가 확산과 혼돈이라는 두 가지 중요한 성질을 갖도록 하는 것이다.
  2. 확산(difussion)의 개념은 암호문과 평문 사이의 관계를 숨기는 것이다. 확산은 암호문에 대한 통계 테스트를 통하여 평문을 찾고자 하는 공격자를 좌절시킨다.
  3. 혼돈(confusion)의 개념은 암호문과 키의 관계를 숨기는 것이다. 혼돈은 암호문을 이용하여 키를 찾고자 하는 공격자를 좌절시킨다. 다시 말하면, 키의 단일 비트가 변하면 암호문의 거의 모든 비트가 변한다.

(다) 라운드(Rounds)

  1. 혼돈은 각 반복이 S-박스, P-박스 그리고 기타 구성 요소의 결합을 의미하는 반복적합성 암호를 사용하여 얻어진다. 반복적으로 사용되는 합성 암호를 라운드(round) 라운드(round)라고 칭한다.

4) 두 가지 종류의 합성 암호

(가) Feistel 암호

  1. 페이스텔 구조에서 네트워크라는 이름은 그 구성도가 그물을 짜는 것과 같이 교환되는 형태로 구성되어 있기 때문에 붙여진 것이다.
  2. Feistel 암호 방식의 암호 강도를 결정짓는 요소는 평문 블록의 길이, 키 K의 길이, 라운드의 수이다. 그러므로 충분한 안정성을 보장받기 위해서는 평문 블록의 길이는 64비트 이상, 키 K의 길이는 64비트 내외, 라운드 수는 16회 이상이어야 한다. 그러나 최근에는 128비트의 키 길이를 권장하고 있다.