[보안] 대칭키 암호화
대칭키 암호화란?
대칭키 암호화 방식은 암호화와 복호화에 같은 암호키를 사용하는 방식을 의미한다. 대칭키 암호화는 혼돈과 확산의 성질을 이용하여 평문을 암호화한다. 혼돈(confusion) 효과는 평문과 암호문과의 상관관계를 숨기는 것을 말하며, 암호문과 암호키 간의 관계를 알기 어렵게 만든다. 확산(diffusion) 효과는 평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨기는 것을 말하며, 알고리즘 패턴을 추출하기 어렵게 만든다. 일반적으로 혼돈 효과는 치환(substitution)을 통해 형성되고, 확산 효과는 순열(permutation)을 통해 얻는다. 대칭키를 설계할 때 이 치환과 순열 연산을 포함하여 한 개의 라운드(round)를 구성한다. 대칭키 암호에서 라운드를 어떻게 구성할지 결정하였다면, 이 라운드를 반복적으로 사용하는 구조로 대칭키 암호화를 완성한다.
대칭키 암호화의 장점과 단점
장점
- 알고리즘 내부 구조가 단순하다.
- 비대칭키에 비해 암호화와 복호화 속도가 빠르다.
- 시스템 개발 환경에 용이하다.
단점
- 키 관리가 어렵다.
- 잦은 키 변경이 있는 경우 불편하다.
- 디지털 서명 기법에 적용이 힘들다.
- 안전성을 분석하기가 어려워 중재자가 필요하다.
대칭키 암호화의 종류
대칭키 암호화 방식은 데이터를 변환하는 방법에 따라서 블록 암호와 스트림 암호로 구별한다.
블록 암호
블록 암호는 암호문을 만들기 위해 암호키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방식이다. 평문의 동일 블록들이 하나의 메시지에서 동일한 암호문으로 암호화되지 않도록 하기 위해 이전 암호 블록의 암호문을 다음 블록에 순서대로 적용하는 것이다. 라운드 함수를 사용해 반복적으로 암호화 과정을 거침으로써 암호화 강도를 향상시킨다. 블록 암호의 종류에는 DES, AES, ARIA, SEED, HIGHT 등이 있다.
블록 암호에는 다음과 같은 장점과 단점이 있다.
장점
- 소프트웨어적으로 구현할 수 있다.
- 치환과 순열을 반복하여 평문과 암호문으로부터 키에 대한 정보를 찾아내기 어렵게 한다.
- 데이터 전송, 대용량 데이터 저장 시 사용이 가능하다.
단점
- 느린 암호화 속도와 에러 전파의 문제가 있다.
- 데이터의 크기가 작을 경우 효율적으로 암호화하기에는 적합하지 않다.
스트림 암호
스트림 암호는 데이터 흐름인 스트림을 비트 단위로 순차적으로 처리해가는 암호화 알고리즘으로서, 원 타임 패드(One Time Pad)를 실용적으로 구현할 목적으로 개발되었다. 원 타임 블록 단위로 암호화, 복호화되는 블록 암호와 달리 이진화된 평문 스트림과 이진 키 스트림의 XOR 연산으로 암호문을 생성하는 방식이다. 스트림 암호의 종류에는 A5/1, A5/2, A5/3, RC4 등이 있다.
스트림 암호에는 다음과 같은 장점과 단점이 있다.
장점
- 오류 확산의 위험이 없고, 하드웨어적으로 구현이 가능하다.
- 주로 군사 및 외교용으로 사용되었으나, 최근에는 이동 통신 환경에서 구현이 용이해 무선 데이터 보호에 이용되고 있다.
- 실시간성이 중요하게 생각되는 음성, 영상, 스트리밍 전송에 사용된다.
단점
- 비트 단위로 암호화하기 때문에 시간이 많이 걸린다.
- 데이터 흐름에 따라 비트 단위로 순차적으로 처리하기 때문에 내부 상태를 저장하고 있어야 한다.
- 평문의 길이가 커지면 키 길이도 커지기 때문에 비효율적이다.
- 선형성으로 인해 공격에 취약하다.