CS 지식/보안

현대 대칭키 암호

윤씅 2024. 8. 11. 00:44
고전 대칭키 암호는 문자 기반으로 암호화 하였지만, 현대 대칭키 암호는 비트 기반으로 암호화 한다.

 

🔑 대칭키 암호의 분류

  • 블록 암호
  • 스트림 암호



🔑 블록암호의 구성요소

현대 블록암호는 비트 0또는 1의 개수가 유지되면 전수조사 공격에 치명적이기 때문에 대치암호 위주로 설계된다.

 

∎ 구성요소

⦁  P-박스 (전치 요소)

   단순 P-박스는 역함수가 존재하고, 축소 P-박스, 확장 P-박스는 역함수가 존재하지 않는다.

 

⦁  S-박스 (대치 요소)

  • XOR으로 연산한다.
  • (입력 비트수 X 출력 비트수)로 이루어져 있다.
  • 선형과 비선형이 있다. (구분해보기)
  • 역함수가 존재할수도 안할수도 있다.

 

⦁  배타적 논리합 (XOR)

  • 닫힘, 결합법칙, 교환법칙 성립한다,
  • 항등원 존재 : 모든 비트가 0
  • 역원 존재 : 자기자신을 역원으로 갖는다.

 

⦁  순환 이동

  • 왼쪽, 오른쪽을 비트 이동

 

⦁  스왑

  • 절반으로 나누어 자리를 바꿈

 

⦁  분할과 결합

  • 중앙을 분리하거나 분리한 것을 결합



🔑 합성암호란?

확산과 혼돈을 위해 구성요소들을 섞어 사용한다.

 

⦁  확산

암호문과 평문 사이의 관계를 숨긴다

 

⦁  혼돈

암호문과 키의 관계를 숨긴다.



 

🔑 현대 블록 암호

현대 블록 암호는 모두 합성 암호이다.
두 가지로 분류된다.

 

∎    Feistel 암호

  • 역함수가 있는 것과 없는 것 모두 포함
    ex) DES
  • 암호문에 평문을 포함하여 전달할때, 암호화를 향상시키기 위해서 사용할 방법은?  ➜  swapper를 추가한다.

 

∎   non-Feistel 암호

  • 역함수가 존재하는 구성 요소만 포함
    ex) AES
  • S-박스를 동일한 입출력 개수로 만들거나, 단순 P-박스만 사용한다.

 

∎   부분 사이즈 키 암호

  • 현대 블록 암호는 일반적으로 부분 키 대치 암호이다.
  • 부분키는 입력값에서 출력값으로 대응시키는 모든 경우 중 일부분의 대응만을 정의한다.



🔑 블록 암호 공격

  • 키의 크기가 크기때문에 전수조사 공격에 안전하다.
  • 차분 분석 : 선택 평문 공격이다. 입력 값들의 변화와 출력 값들의 변화를 통해 분석한다.
  • 선형 분석 : 알려진 평문 공격이다. 선형 근사식을 만들어 선형 특징을 이용해 분석한다.

 

 

 

🔑 스트림 암호

데이터를 비트 단위로 암호화한다.
평문과 키 스트림을 XOR한다.
블록암호보다 빠르다

 

∎  동기식 스트림 암호

키는 평문, 암호문과 독립이다.

 

  ⦁  One-Time Pad : 키가 랜덤하게 생성된다. 너무 이상적이다. 결과도 완전 랜덤하다.

  ⦁  LFSR (Linear Feedback shift register) 귀환 쉬프트 레지스터 : 레지스터에 입력되는 값은 이전 상태 값들을 XOR 연산한 것이다.

 

 

  비동기식 스트림 암호

키가 평문이나 암호문에 종속적으로 결정된다.