대칭키 암호


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


1. 암호화 한 정보를 누군가에게 보낼 때 암호키도 함께 보내야 한다. 

2. 암호키 자체는 암호화가 되지 않은 평문이다. 

3. 이 과정에서 암호키를 분실하거나 타인에게 노출되면 보안에 매우 취약해진다.


특징

1. 키 전달 및 관리에 어려움이 있다.

2. 암호화 연산 속도가 빠르기 때문에 효율적인 암호 시스템을 구축할 수 있다.



대칭키 암호 원리



대칭키 암호의 원리는 2진수의 XOR 연산에 기반한다. 


XOR 의 기호는 ⊕로 표시하며 진리표는 다음과 같다.


⊕ 0 = 0

 ⊕ 1 = 1

 1 ⊕ 0 = 1

 1 ⊕ 1 = 0



다음과 같이 8비트 정보 P, K 두개가 있다고 가정하자.


P = 1 0 1 0 1 0 1 0 

Q = 1 1 0 1 1 1 0 1


P 와 K 의 XOR 연산 결과를 
라고 하면 다음과 같다.



원래의 정보 P를 암호키 K와 XOR 연산을 하여 암호화 된 정보 Q를 만든다.

암호화된 정보 Q는 암호키 K와 XOR 연산을 하면 원래의 정보 P로 복호화 된다.


하지만 단순히 XOR 연산만으로는 암호화 된 정보가 쉽게 풀리기 때문에

실제로 활용되는 대칭키 암호에는 XOR 연산 이외에 다른 여러가지 수학 연산을 같이 사용한다.


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




블록암호



블록 암호는 고정된 크기의 블록 단위로 암 복호화 연산을 수행하는 대칭키 암호화 방식이다.

암호 키의 크기에 따라 64 ~ 256bit 블록 크기로 연산을 수행한다.

대표적인 블록암호는 DES, 3DES, AES, Blowfish, Twofish 등이 있다.


※ 국내에서 개발된 블록암호의 종류로는 SEED, ARIA, HIGHT 등이 있다.


블록 암호 알고리즘은 평문 블록을 암호 블록으로 만들 때 적용되는 방식에 따라 

파이스텔 블록 구조와 SPN 블록구조로 구분된다.


파이스텔 블록구조


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


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




[그림 1] 파이스텔 블록 구조


SPN 블록 구조


입력되는 평문 블록을 분할하지 않고 전체 블록을 적용하는 방식.


암호화 대상 정보가 블록 크기보다 큰 경우 각 블록에 대해 어떤 방식으로 암호화를 수행하느냐에 따라 ECB, CBC, OFB, CFB, CTF 등 다양한 운영모드가 사용된다.


이러한 구조를 채택한 블록암호는 AES, IDEA, SHARK, ARIA 등이 있다.



스트림 암호


스트림 암호는 2진화된 평문 스트림과 2진 키 스트림을 bit 단위로 XOR 연산하여 암호문을 생성하는 방식이다. 이를 위한 하드웨어 구현이 간편하고 속도가 빠르다는 점 때문에 무선통신 환경에서 무선 데이터 보호에 주로 사용된다. 대표적인 스트림 암호는 RC4가 있으며, GSM 무선통신 보안을 위한 표준인 A5/1, A5/2, A5/3 등이 있다.



3DES


56bit 라는 다소 작은 크기의 암호로 인해 1999년 distributed.net에 의해 22시간여만에 DES가 깨지며 현재 더이상 사용되지 않게 되었다. DES를 보완하여 대체한 것이 3DES(Triple DES) 인데 핵심 알고리즘 변경 없이 적용된 것이다. 암호화를 위해 블록당 3번의 DES를 수행하게 되며 보안적인 요소는 증가하였으나 성능은 저하되었다.



AES


DES를 대체하기 위해 제정한 새로운 암호 표준으로 레인달 암호화 알고리즘 이라고도 불린다. DES와는 달리 SPN 구조를 채용하였고 키는 128bit, 192bit, 256bit를 지원하며 암호 블록 크기는 128bit 이다.AES 알고리즘에 대한 공격 방법은 다양하게 알려져 있으나 아직까지 완전히 해독된 사례가 없는 만큼 안전성이 보장된 알고리즘이다.

'Crypto' 카테고리의 다른 글

zip 파일 패스워드 크래킹  (0) 2017.02.07
공개키 암호  (0) 2017.02.05

+ Recent posts