본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
(대칭키 암호에서 넘어옴)
Symmetric-key Cryptography
하나의 동일한 키를 사전에 공유하여 암호화 및 복호화를 하는 방법
  • 공개키 암호화시스템에 비해 상대적으로 속도가 빠르다.
  • 제3자에게 키가 누설될 가능성이 항상 존재한다.
  • 사전에 키 공유가 필요하다.

송신자와 수신자가 같은 비밀 키로 암호화와 복호화를 하므로 비밀 키 암호(secret key cryptography), 공유 키 암호라고도 부른다. 연산이 단순해 대용량 데이터 암호화에 쓰이며, 디스크·데이터베이스 암호화, TLS·IPsec의 실제 데이터 전송 구간, 무선랜 암호화가 모두 대칭키로 처리된다. 반면 키를 미리 안전하게 나눠 가져야 하고, 키를 아는 사람이 누구든 암호문을 만들 수 있으므로 대칭키만으로는 부인 방지를 제공하지 못한다. 대칭키가 주는 보안 서비스는 기밀성과(메시지 인증 코드나 인증 암호 모드를 쓸 때) 무결성·출처 인증이다.

블록 암호와 스트림 암호

편집 원본 편집
구분 블록 암호(Block cipher) 스트림 암호(Stream cipher)
처리 단위 고정 길이 블록(예: 64비트, 128비트) 비트 또는 바이트 단위
동작 방식 키와 라운드 함수로 블록 전체를 치환·확산한다 키(와 논스)로 키 스트림을 만들어 평문과 XOR한다
구조 예 파이스텔(Feistel) 구조: DES, SEED / SPN 구조: AES, ARIA ChaCha20, 과거의 RC4
운용 블록보다 긴 데이터는 운용 모드(ECB, CBC, CTR, GCM 등)가 필요하다 같은 키·논스 조합을 두 번 쓰면 두 평문의 XOR이 드러나므로 논스 재사용이 치명적이다
특징 범용성이 높고 표준화가 잘 되어 있다 하드웨어 가속이 없는 환경에서 빠르고, 오류가 전파되지 않는다

블록 암호도 CTR, OFB, CFB 같은 모드를 쓰면 키 스트림을 만드는 스트림 암호처럼 동작한다. 운용 모드별 차이는 블록 암호 모드 문서와 ECB 모드, CBC 모드, CTR 모드 문서를 참고한다. 오늘날에는 기밀성과 무결성을 함께 주는 인증 암호(AEAD) 방식인 GCM, CCM, ChaCha20-Poly1305가 주로 쓰인다.

대표 알고리즘

편집 원본 편집
알고리즘 종류 블록 길이 키 길이 라운드 비고
DES 블록(파이스텔) 64비트 64비트(그중 56비트가 실제 키, 8비트는 패리티) 16 1977년 미국 표준(FIPS 46). 키가 짧아 무차별 대입에 뚫려 표준에서 철회되었다.
3DES(TDEA) 블록 64비트 키 3개(키 묶음), 2키 방식과 3키 방식 DES 3회(암호화-복호화-암호화) NIST SP 800-131A Rev.2에 따라 2키 방식 암호화는 금지, 3키 방식도 2023년 12월 31일 이후 새 암호화에 사용 금지(복호화는 기존 데이터 처리용으로만 허용). SP 800-67 Rev.2는 2024-01-01 철회되었다.
AES 블록(SPN) 128비트 128, 192, 256비트 10, 12, 14 FIPS 197(2001, 2023년 갱신). 현재 국제 표준 대칭키 암호
SEED 블록(파이스텔) 128비트 128비트 16 한국정보보호진흥원(KISA, 현 한국인터넷진흥원)이 1998년부터 개발한 국산 표준 암호. IETF RFC 4269로 공개
ARIA 블록(SPN) 128비트 128, 192, 256비트 12, 14, 16 국산 표준 블록 암호. IETF RFC 5794로 공개
ChaCha20 스트림 해당 없음(64바이트 단위로 키 스트림 생성) 256비트(논스 96비트, 블록 카운터 32비트) 20 RFC 8439. Poly1305와 묶어 AEAD로 쓰며 TLS 1.3에서 쓰인다

이 밖에 IDEA, Blowfish, RC4, 국산 경량 암호 LEA, HIGHT 등이 있다. RC4처럼 약점이 알려진 알고리즘은 새 시스템에 쓰지 않는다.

키 분배 문제와 키 개수

편집 원본 편집

대칭키의 가장 큰 약점은 키 분배(key distribution)이다. 키를 같은 통신 채널로 보내면 도청자도 키를 얻으므로, 사전에 다른 안전한 경로(대면 전달, 별도 채널)로 나누거나 키 배포 센터(KDC)를 두거나 공개키 방식으로 키를 교환해야 한다.

또 사용자 쌍마다 서로 다른 키가 필요하므로 사용자가 늘면 키가 급격히 늘어난다. n명이 서로 모두 비밀 통신을 하려면 필요한 대칭키의 수는 다음과 같다.

K=n(n−1)2

사용자 수 n 대칭키 개수 n(n-1)/2 공개키 방식의 키 개수 2n(각자 키 쌍)
10 45 20
100 4,950 200
1,000 499,500 2,000

키가 많아지면 생성, 보관, 교체, 폐기까지 암호 키 관리 부담이 커진다. 키 배포 센터를 쓰는 커버로스는 사용자마다 KDC와 공유하는 키 하나만 두는 방식으로 이 문제를 줄인다.

하이브리드 암호와의 관계

편집 원본 편집

실무에서는 대칭키와 공개키 암호화를 함께 쓴다. 공개키 방식(또는 디피-헬먼 키 교환)으로 일회성 세션 키를 안전하게 나눈 뒤, 실제 데이터는 그 세션 키로 빠르게 대칭 암호화한다. 이것이 하이브리드 암호 시스템이며 TLS, IPsec, S/MIME, PGP가 모두 이 구조이다. 클라우드 키 관리 서비스에서 데이터 키를 마스터 키로 다시 암호화해 보관하는 봉투 암호화(envelope encryption)도 같은 발상이다.

비교 항목 대칭키 공개키(비대칭키)
키 양쪽이 같은 비밀 키 공개키와 개인키 쌍
속도 빠름 느림
키 개수(n명) n(n-1)/2 2n
제공 서비스 기밀성, (MAC 사용 시) 무결성·출처 인증 기밀성, 키 교환, 전자서명을 통한 부인 방지
주된 용도 대용량 데이터 암호화 키 교환, 전자서명, 인증서

양자 컴퓨터와 대칭키

편집 원본 편집

그로버(Grover) 알고리즘은 키 탐색을 제곱근 수준으로 빠르게 할 수 있어 대칭키의 실질 보안 강도를 줄인다. 다만 공개키 방식처럼 근본적으로 깨지는 것은 아니어서 키 길이를 늘려 대응한다. 장기 보호가 필요하면 AES-256 같은 긴 키를 고른다. 자세한 내용은 양자 암호와 양자 내성 암호 문서를 참고한다.

  • 대칭키는 빠르지만 키 분배와 확장성(n(n-1)/2)이 약점이고, 부인 방지를 제공하지 못한다. "부인 방지가 필요하다"면 전자서명(비대칭키)을 고른다.
  • 키 개수 계산 문제가 나온다. 사용자 n명이면 대칭키 n(n-1)/2개, 공개키는 2n개이다.
  • 블록 암호와 스트림 암호를 구분한다. 스트림 암호와 CTR 계열 모드는 같은 키·논스를 다시 쓰면 안 된다.
  • DES는 56비트 키로 약하고, 3DES는 퇴출 중이며, 새 시스템은 AES를 쓴다. 국내 시스템에서는 SEED, ARIA도 쓰인다.
  • 실무 구조는 하이브리드이다. 공개키로 세션 키를 나누고 대칭키로 데이터를 암호화한다.