본문 바로가기

정보보안기사/암호학

대칭키 - 블록암호 알고리즘

대칭(키)암호 알고리즘 크게 2가지 방식을 정의하고 있다.

 

 ① 블럭암호 알고리즘

 ② 스트림암호 알고리즘

 

대칭(키)암호 알고리즘 특징(블럭암호와 스트림암호 알고리즘의 기반이 된다.)

 

특징 1.

- 대칭(키)암호 알고리즘은 평문에 Transformation과 Substitution을 적용하여 암호문을 만들어 낸다.

 

Transformation : '전치 암호'라고도 불리며, 원문을 다른 문서로 대체하지 않지만 원문을 여기저기 움직이게 한다. 그것은 비트, 문자 또는 블록이 원래 의미를 감추도록 재배열한다.

Substitution : '치환 암호'라고도 불리며 비트, 문자 또는 블록을 다른 비트, 문자 또는 블록으로 대체한다.

 

 여기서 다른 비트, 문자 또는 블록이란?

 

   치환 암호는 두가지 방식으로 구분하여 사용된다.

 

     1) 단일치환암호 : A라는 문자를 H로 대체하는 것, 특정 문자들은 어떤 문자로 대체될 지는 하나의 테이블로 정의해놓고 문자를 대체하는 방식이다보니 쉽게 추측이 가능하다

     2) 다중치환암호 : A라는 문자가 H로 대체될 수도 있고, B라고 대체될 수도 있는 것으로 하나의 문자로 제한짓지 않아 단일치환암호보다 파악이 힘들다는 강점이 있다.

 

특징2.

- 복호화 알고리즘은 암호화 알고리즘을 역숙으로 실행하는 것이다.

 

 

블록암호 알고리즘 대표적인 예

 

- 고정된 크기의 블럭 단위를 지정하고 대칭키를 사용하여 대칭(키) 암호화를 하는 형태. 

- 복호화 시 암호화 과정의 역순으로 진행됨.

 

1) 국내 : ARIA, SEED, LEA, HIGHT

2) 외국 : AES, DES, 3DES, IDEA

 

 

블록암호 알고리즘 구조

 

크게 2가지 형태이며 Feistel과 SPN구조이다.(외우자!)

1. Feistel 구조

- 종 류 : DES, SEED, FEAL, LOKI, BLOWFISH, KASUMI, MISTY, RC5, RC6, CAST256, E2, Twofish, Mars

 

2. SPN 구조

- 종 류 : AES, ARIA, SHARK, SAFER, SAFER +, SERPENT, CRYPTON, Square, Rijndael

 

 

블록 알고리즘 종류와 특징

 

DES : NIST(미국 연방정부)에서 표준으로 공표(1977년), 16라운드의 알고리즘, 56비트 or 64비트의 키, 64비트 블록크키

 

AES : NIST(미국 연방정부)에서 표준으로 공표(~현재), 128/192/256비트의 키

 

IDEA : PGP 채택, 8라운드의 알고리즘, 128비트의 키, 64비트 블록크기

 

RijNDael : 2000년 AES 알고리즘으로 선정, 10/12/14라운드의 알고리즘, 128/192/256비트의 키, 128비트 블록크기

 

SEED : 한국표준 블록암호 알고리즘, 16라운드의 알고리즘,  128비트 키, 128비트 블록크기

 

CRYPTON : AES 후보중 하나, 128/192/256비트 키, 128비트 블록크기

 

RC5 : 알고리즘이 간단, 속도가 빠름, 0-2040비트 키, 23/64/128비트 블록크기

 

FEAL : S/W구현에 적합, 64비트 키, 64/128비트 블록크기

 

MISTY : 차분/선형 공격에 안전성 증명 구조, 128비트 키, 64비트 블록크기

 

SKIPJACK : Fortezza카드에 사용, 80비트 키, 64비트 블록크기

 

 

블록암호에 대한 공격방식

 

전수 공격 : 가능한 모든 키를 이용해서 암호문으로부터 의미가 있는 평문을 얻어낼 때까지 시도하는 공격방법이다. 이 방법이 성공하려면 평균적으로 가능한 모든 키 개수의 절반 정3도를 시도해봐야 한다.(일반적으로 실현 불가능한 방법이고 경우의 수가 적을때 사용한다.)

 

차분 공격 : 1990년 Biham과 Shamir에 의하여 개발된 선택 평문 공격법으로, 두 개의 평문 블록의 비트 차이에 대하여 대응되는 암호문 블록들의 비트 차이를 이용하여 사용된 암호키를 찾아내는 방법이다.(선택 평문 공격)

 

수학적 공격 : 통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법이다.

 

통계적 공격 : 암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법이다.

 

 

블록암호 알고리즘의 운영모드

 

운영모드란?

블록 암호는 고정 길이 비트의 평문 밖에 암호화할 수 없다.(블록암호 알고리즘 종류와 특징 내 종류별 블록 크기참조) 임의의 길이의 평문을 암호화하기 위해서는 평문을 일정한 길이를 갖는 블록으로 나누고 각 블록에 블록 암호를 반복 적용하여 암호화할 필요가 있다. 그래서 블록을 나누고 암호화하는데에도 여러가지 방식이 존재하며 해당 방식들을 운영모드라 한다.

 

운영모드 종류(5가지)

 

ECB 모드 : 가장 단순한 방식으로 각 블록을 독립적으로 암호화한다. 이 방식에서 동일한 평문블록은 동일한 암호문을 생성하는데, 이런 점은 안전성에 있어서 바람직하지 않다.

 

CBC 모드

 

CFB 모드 : 초기화 벡터를 암호화한 값과 첫 번째 평문블록을 XOR하여 암호문 블록을 생성하고, 그 암호문 블록을 다시 암호화한 값과 그 다음 평문 블록을 XOR하여 암호문 블록을 반복하여 생성하는 방식이다.

 

 

 

 

 

OFB 모드 : CFB와 비슷하게 보일 수 있지만 다르다. 초기화 벡터 값을 계속 암호화하여 다음 평문 블록과 XOR하여 암호문 블록을 생성한다.

 

 

 

CTR 모드 : 1씩 증가해가는 카운터(임의의 값)를 암호화해서 키 스트림을 만들어내는 스트림 암호 형태를 갖는 방식이다.

 

 

 

※ CFB, OFB, CTR 모드는 초기화 벡터를 암호화하여 키 스트림을 만들어내는 스트림 암호 형태를 갖는 블록 암호 모드이다.(스트림 암호는 이진화된 평문 스트림과 이진 키 스트림 수열의 XOR 연산으로 암호문을 생성하는 방식을 말한다.)

 

'정보보안기사 > 암호학' 카테고리의 다른 글

전자서명  (0) 2020.05.24
대칭키와 공개키 비교  (0) 2019.02.20
[암호학] 스트림암호 - 동기식vs비동기식  (0) 2019.02.18