대칭키 (Symmetric Key) 암호화 시스템

대칭키 암호화 시스템은 하나의 키로 데이터를 암호화하고 복호화하는 방식이다. 비대칭키 방식에 비해 효율적이라는 장점이 있으며, 우리의 일상생활에서 흔히 볼 수 있는 자동차 키나 보안 카드와 유사하게 작동한다고 이해할 수 있다

주요 특징

  • 하나의 키 사용: 암호화와 복호화에 동일한 키를 사용한다
  • 효율성: 비대칭키 방식보다 연산 속도가 빨라 대량의 데이터를 처리할 때 유리하다
  • 보안성: 키의 길이가 길수록 보안성이 높아진다. 키 길이가 길다는 것은 발생 가능한 키의 경우의 수가 많아져 무작위 대입 공격(Brute Force Attack)으로 키를 찾아내기 어렵게 만든다
  • 단점 키 분배 문제(Key Distribution Problem): 송신자와 수신자가 사전에 안전하게 키를 공유해야 하는데, 이 과정에서 키가 노출될 위험이 있다. 특히 n명이 서로 통신할 경우 n(n-1)/2개의 키가 필요해 관리가 복잡해진다

대표적인 알고리즘

  • DES (Data Encryption Standard): 과거에 많이 사용되었으나, 현재는 보안 취약점으로 인해 잘 사용되지 않는다
  • 3DES (Triple DES): DES를 세 번 반복하여 보안성을 강화한 알고리즘이다
  • SEED: 한국에서 개발된 대칭키 암호화 알고리즘이다. SEED-128은 128비트 블록 키와 128비트 키 길이를 사용한다
  • ARIA: 국가보안기술연구소에서 개발한 고속 대칭키 암호화 알고리즘이다
  • AES (Advanced Encryption Standard): 현재 국제적으로 가장 널리 사용되는 대칭키 암호화 알고리즘이다. AES-128, AES-256 등 다양한 키 길이를 지원한다
대칭키는 크게 두 가지로 나뉜다
  • 블록 암호 (DES, 3DES, AES, ARIA 등): 고정된 크기의 블록 단위로 암호화
  • 스트림 암호 (RC4, ChaCha20 등): 비트 또는 바이트 단위로 연속 암호화

XOR(Exclusive OR) 연산을 통한 대칭키 개념 이해

대칭키 암호화의 기본적인 원리를 이해하기 위해 XOR (Exclusive OR) 연산을 예로 들어볼 수 있다. XOR 연산은 두 비트가 서로 다를 때 결과가 ‘1’이 되고, 같을 때 ‘0’이 되는 논리 연산자이다

nput 1	Input 2	Output
0	0	0
0	1	1
1	0	1
1	1	0
  • ‘A’라는 평문(ASCII 코드 65, 이진수 0100 0001)과 임의의 키 (1101 0101)를 사용하여 암호화하는 과정을 확인해보자
평문:   0 1 0 0   0 0 0 1 (0x41) 16진수
키:     1 1 0 1   0 1 0 1
------------------------------
암호문: 1 0 0 1   0 1 0 0 (0x94) 16진수
  • 계산 결과, ‘A’가 ‘0x94’로 암호화되었다. 이제 이 암호문을 다시 원래의 키를 사용하여 복호화하면 평문으로 되돌릴 수 있다
암호문: 1 0 0 1   0 1 0 0
키:     1 1 0 1   0 1 0 1
-------------------------------
평문:   0 1 0 0   0 0 0 1 (0x41)
  • 이처럼 동일한 키로 암호화와 복호화를 모두 수행할 수 있다는 점에서 ‘대칭키’라고 불린다. 실제 대칭키 암호화 알고리즘에서는 단순 XOR만으로는 통계적 공격에 취약하기 때문에, 치환(Substitution), 순열(Permutation), 다중 라운드 등의 복잡한 변환을 조합하여 사용한다

키 관리의 중요성

  • 대칭키 시스템에서 키는 하드 디스크에 저장되거나 문자로 입력될 수 있는 단순한 이진수 정보에 불과하다. 하지만 이 키가 외부에 노출될 경우 암호화된 정보의 보안성이 완전히 상실되기 때문에, 키를 안전하게 보관하고 보호하는 것이 매우 중요하다. 대칭키 시스템의 보안은 곧 키 관리의 보안과 직결된다고 할 수 있다

인프런 강의 중 ‘널널한 개발자님의 외워서 끝내는 SSL과 최소한의 암호기술’ 강의 참고