Self-Improvement

대칭키 암호(블록, 스트림, SPN, 파이스텔, DES, AES) 본문

개인

대칭키 암호(블록, 스트림, SPN, 파이스텔, DES, AES)

JoGeun 2020. 3. 28. 15:53

1. 대칭키 암호란

암호화에 사용되는 암호키와 복호화에 사용되는 암호키가 동일한 암호화 기법

암호화한 정보를 누군가에게 보낼 때 암호키도 함께 보내야 하는데, 암호키 자체는 암호화가 되지 않은 평문이다.

이 과정에서 암호키를 분실하거나 타인에게 노출 되면 이 암호키로 암호화한 정보는 보안에 매우 취약하게 된다.

 

이와 같이 대칭키 암호 방식의 최대 약점은 바로 암호키를 관리하고 전달하는 메커니즘에 있다.

 

2. 대칭키 암호 원리

대칭키 암호는 이진수의 비트간 배타적 논리합(XOR) 연산에 기반한다.

1(XOR)1 = 0, 0(XOR)0 = 0, 1(XOR)0 = 1, 0(XOR)1= 1

 

P=11010011

K=01010101

P와 K의 비트간 XOR 연산 결과를 Q로 한다

Q=10000110

 

다시 Q와 K를 XOR 연산을 해보면 P가 나오게 된다.

10000110 (XOR) 01010101 = 11011011

 

이처럼 원래의 정보 P를 암호키 K와 비트간 XOR 연산을 하여 암호화된 정보 Q로 만들고 암호화된 정보 Q는 암호키 K와 XOR 연산을 하면  원래의 정보 P로 복호화가 되어진다.

하지만 단순이  XOR 연산만으로는 암호화 된 정보가 쉽게 풀리기 때문에 실제로 활용되는 대칭키 암호에는 XOR 연산 이외에 다른 여러가지 수학 연산을 같이 사용한다.

대칭키 암호화 방식은 데이터를 변환하는 방식에 따라 블록 암호, 스트림 암호로 구분된다.

 

3. 블록 암호

블록 암혼은 고정된 크기의 블록 단위로 암호화, 복호화 연산을 수행하는 대칭키 암호화 방식이며, 암호키 크기에 따라 64~256 비트 블록 크기로 연산을 수행한다.

대표적인 블록 암호는 DES, 3DES, AES, Blowfish, Twofish 등이 있으며 국내에서 개발된 블록 암호는 SEED, ARIA, HIGHT 등이 있다.

 

블록 암호 알고리즘은 평문 블록을 암호 블록으로 만들때 적용되는 방식에 따라 파이스텔 블록 구조와 SPN 블록 구조로 구분된다.

 

4. 파이스텔 블록 구조

파이스텔 블록 구조는 입력되는 평문 블록을 좌우 두개 블록으로 분할하고 좌측 블록을 파이스텔 함수라 불리는 라운드 함수를 적용하여 출력된 결과를 우측 블록에 적용하는 과정을 반복적으로 수행한다.

파이스텔 블록 구조를 채택한 블록 암호는 DES, Blowfish, Twofish, SEED 등이 있다.

 

5. SPN 블록 구조

SPN 블록 구조는 입력되는 평문 블록을 분할하지 않고 전체 블록을 적용하는 방식으로, 라운드 함수의 역함수를 구해야 하는 어려움이 있는 구조이지만 컴퓨팅 속도의 발전으로 이런 어려움을 충분히 극복할 수 있게 되었습니다. SPN 블록 구조를 채택한 블록 암호는 AES, IDEA, SHARK, ARIA 등이 있다.

 

6. ECB 모드에서 암호화

ECB 모드는 가장 단순한 블록암호 운영모드이며, 각 블록들은 암호키를 이용해 독립적으로 암호화됩니다. ECB 모드의 가장 큰 약점은 동일한 내용의 블록은 동일한 암호 블록으로 암호화 된다는 것입니다.

 

7. CBC 모드에서 암호화

CBC 모드는 블록 암호에서 가장 보편적으로 사용되는 운영모드입니다.

CBC 모드는 블록을 암호화하기 전에 이전 블록의 암호화된 블록과 XOR 연산을 한 결과를 새로운 암호키로 해서 블록을 암호화하는 방식입니다. 맨 첫 블록은 이전 블록이 없기 때문에 이전 블록 역할을 하는 초기 벡터(IV)가 필요하다.

 

8. 스트림 암호

스트림 암호는 이진화된 평문 스트림과 이진 키 스트림을 비트 단위로 XOR 연산하여 암호문을 생성하는 방식입낟.

스트림 암호는 이를 위한 하드웨어 구현이 간편하고 속도가 빠르단느 점 때문에 무선통신 환경에서 무선 데이터 보호에 주로 사용된다.

 

9. 3DES 

DES는 1970년대 IBM에서 파이스텔 블록구조에 기반하여 설계되고 개발된 56비트키 암호화 알고리즘입니다.

하지만, 56비트라는 다소 크기가 작은 암호키로 인해 22시간여만에 DES가 1999년에 깨지게 됩니다.

현재는 컴퓨팅 파워가 비약적으로 발전함에 따라 암호해독 전용 하드웨어로 1주일 정도면 DES를 깰 정도가 되었습니다. 따라서 DES는 보안성이 결여되어 현재 사용하지 않는 암호화 알고리즘이 되버렸습니다.

 

DES를 보완하여 대체한 것이 3DES인데 3DES는 암호화를 위해 블록당 3번의 DES를 수행합니다. 따라서 168비트 키 암호화 알고리즘이며 DES의 핵심 알고리즘의 변경 없이 적용되어 보안적인 요소는 증가하였지만 성능은 저하되었습니다.

 

10. AES

AES는 DES를 대체하기 위해 2001년에 제정한 새로운 암호 표준이다. AES를 위한 알고리즘은 개발자의 이름을 따서 레인달 암호화 알고리즘으로 부릅니다.

AES는 DES와는 달리 파이스텔 구조가 아닌 SPN 블록 구조를 채용하였고 키는 128비트, 192비트, 256비트를 지원하며 암호 블록 크기는 128비트입니다.

AES는 미국 정보가 채택한 이후 현재까지 전세계적으로 널리 사용되고 있는 암호화 알고리즘으로 자리 매김하고 있으며 아직까지 AES로 암호화된 정보가 완전히 해독된 사례가 없기 때문에 안전성이 보장된 알고리즘이라 할 수 있다.