네트워크보안에센셜

Chapter 02. 대칭 암호와 메시지 기밀성 - 2.1 대칭 암호 원리

영차영차33 2020. 9. 9. 16:15

Chapter 02. 대칭 암호와 메시지 기밀성 - 2.1 대칭 암호 원리

 

* 대칭 암호 = 관용 암호 = 비밀키 암호 = 단일 키 암호

 

2.1 대칭 암호 원리 

대칭 암호 원리

□ 대칭 암호에 대한 두가지 필수사항

  • 공격자가 깰 수 없는 강한 알고리즘(암호문, 평문을 공격자가 가지고 있더라도 키를 알 수 없어야 함)
  • 송신자와 수신자가 안전한 방법을 통하여 키를 공유하여야 함

 

대칭키 암호 시스템의 특성

1. 평문을 암호문으로 전환하는 데 사용되는 연산 유형

  • 두 가지 일반적 유형으로 대체와 치환이 있다. 
  • 이 두가지 연산을 통해 정보가 손실되지 않아야 한다. (연산을 역으로 수행할 수 있어야 한다.)

2. 동일한 키를 사용( 암호화 키 = 복호화 키)

  • 암호화 키와 복호화 키가 일치하지 않는다면 비대칭 암호(=공개키 암호)라고 한다. 

3. 평문이 처리되는 방법으로는 블록암호 방식과 스트림 암호 방식이 있다. 

  • 블록 암호 : 한 블록씩 처리
  • 스트림 암호 : 입력 요소를 연속적으로 처리

암호 해독 : 평문이나 키를 찾으려는 시도(해독자는 암호 알고리즘을 알고 있다는 전제)

  • 알려진 암호문 공격 : 해독가가 암호문만 알고 있는 경우 (가장 해독하기 어려움)
  • 알려진 평문 공격 : 해독가는 암호 알고리즘, 해독해야 하는 암호문, 비밀키로 만들어진 한쌍 또는 여러 쌍의 형문-암호문을 알고 있음 
  • 선택 평문 공격 : 해독가는 자신이 선택한 메시지를 암호화 시스템(암호화 알고리즘 + 키)에 입력할 수 있는 경우
  • 선택 암호문 공격 : 해독가는 자신이 선택한 암호문을 복호화 시스템(복호화 알고리즘 + 키)에 입력할 수 있는 경우
  • 선택문 공격 : 해독가는 자신이 선택한 암호문 또는 평문을 암호화시스템 또는 복호화 시스템에 모두 입력할 수 있는 경우

□ 암호 구조가 계산적으로 안전하다는 의미는 다음 두가지를 의미한다. 

  • 암호문을 깨는 데 비용이 암호화 된 정보의 가치보다 크다. 
  • 암호문을 깨는 데 걸리는 시간이 해당 정보의 수명보다 크다. 

* 56비트를 단 10시간밖에 걸리지 않으므로 56비트를 사용하는 DES 암호는 더 이상 안전한 암호 알고리즘이 아니다. 

이미지 출처 : https://slidesplayer.org/slide/14539912/

 

전수공격 : 모든 가능한 키를 이용하여 암호문으로부터 의미가 있는 평문을 얻어 낼 때까지 시도하는 공격 방법

 

 

□ Feistel 암호 구조

 

  • 모든 라운드 과정은 구조가 같다. 
  • 평문을 LE0과 RE0 두 조각으로 나눈다. 
  • RE(i-1)을 K1을 사용하여 라운드 알고리즘 F로 변환한 값에 LE(i-1)와 XOR 한 값을 RE(i)에 넣는다.
  • LE(i)은 RE(i-1)값을 넣는다. 
  • 같은 방법으로 여러 라운드를 하여 암호문을 생성한다. 
  • 매 라운드의 매개변수인 라운드 서브키 Ki를 사용한다. 
  • 복호 시 각 라운드를 반대로 하면 된다. 

 

o DES를 포함해서 일반적인 대칭 블록 암호 알고리즘은 Feistel 암호 함수를 사용한다. 

 

 

 

o 대칭 블록 암호 매개변수

  • 블록 크기 : 블록 길이가 길수록 보안이 강해지지만 속도가 떨어진다. 64비트가 가장 합리적이다. 
  • 키 크기 : 키 길이가 크면 보안이 강화되나 속도가 떨어진다. 128비트가 가장 합리적이다. 
  • 라운드 수 : 라운드 수가 증가하면 보안이 강화된다. 16라운드가 가장 일반적이다. 
  • 서브키서브 키 생성 알고리즘 : 키 K로부터 서브 키 Ki를 만드는 알고리즘이다. 복잡할수록 암호 해독이 어려워진다. 
  • 라운드 함수 F가 복잡할수록 암호 해독이 어려워진다. 

o Feistel 암호 설계 시 고려사항

 - 빠른 소프트웨어 암호/복호 : 많은 경우 하드웨어 적인 구현을 피할 수 있도록 암호화는 응용 프로그램이나 유티ㄹ리티 함수에 내장시키므로 알고리즘의 실행속도를 반드시 고려하여야 한다. 

 - 용이한 분석 : 알고리즘을 간결하게 만들수록 취약점을 찾기가 쉬워져 보안성을 강화할 수 있다. 

 

 

o Feistel 암호는 암호 알고리즘과 복호 알고리즘을 다른 알고리즘으로 구현할 필요가 없다는 것이 장점이다.