대칭키와 공개키
기술노트
대칭키와 공개키
대칭키 암호화(Symmetric Key Encryption)
대칭키 암호화는 동일한 키를 사용하여 암호화와 복호화를 수행하는 방식입니다. 말 그대로 '대칭'이라는 단어처럼 암호화와 복호화에 사용되는 키가 동일하기 때문에 대칭키 암호화라고 불립니다.
특징
- 빠른 연산 속도: 알고리즘이 단순하여 암호화와 복호화 과정이 빠름
- 구현 용이성: 상대적으로 구현이 간단함
- 키 배포 문제: 안전한 통신을 위해 키를 안전하게 교환해야 하는 어려움 존재
- 확장성 제한: n명의 사용자가 서로 안전하게 통신하려면 n(n-1)/2개의 키가 필요
주요 알고리즘
- AES (Advanced Encryption Standard): 현재 가장 널리 사용되는 대칭키 암호화 알고리즘으로, 128/192/256비트 키 길이를 지원
- DES (Data Encryption Standard): 1977년 미국 표준으로 채택되었으나 56비트 키 길이로 현재는 취약점 발견으로 사용 지양
- 3DES (Triple DES): DES를 세 번 적용하여 보안성을 강화한 알고리즘
- Blowfish: 32비트에서 448비트까지 가변 길이 키를 지원하는 블록 암호
- Twofish: AES 경쟁 알고리즘 중 하나로 128/192/256비트 키를 지원
활용 사례
- 디스크 암호화 (BitLocker, FileVault 등)
- VPN 통신에서의 데이터 암호화
- 데이터베이스 필드 암호화
- 세션 키를 이용한 TLS/SSL 통신
공개키 암호화(Asymmetric Key Encryption)
공개키 암호화는 암호화와 복호화에 서로 다른 키를 사용하는 방식입니다. 공개키(Public Key)와 개인키(Private Key)의 쌍으로 구성되며, 하나의 키로 암호화한 데이터는 쌍을 이루는 다른 키로만 복호화할 수 있습니다.
특징
- 키 배포 문제 해결: 공개키는 누구에게나 공개해도 안전함
- 디지털 서명 지원: 개인키로 서명하고 공개키로 검증 가능
- 느린 연산 속도: 대칭키 암호화에 비해 10-1000배 느림
- 복잡한 구현: 알고리즘 구현이 상대적으로 복잡함
주요 알고리즘
- RSA: 가장 널리 사용되는 공개키 알고리즘으로 소인수분해의 어려움에 기반함
- ECC (Elliptic Curve Cryptography): 타원곡선 수학 문제의 어려움에 기반하며, RSA보다 짧은 키로 동일한 보안 수준 제공
- DSA (Digital Signature Algorithm): 전자서명에 특화된 알고리즘
- Diffie-Hellman: 최초의 공개키 기반 키 교환 프로토콜
- ElGamal: 이산로그 문제에 기반한 암호화 알고리즘
활용 사례
- HTTPS/SSL/TLS 인증서
- 이메일 암호화 (PGP, S/MIME)
- 디지털 서명
- SSH 인증
- 암호화폐 지갑
하이브리드 암호화 시스템
실제 보안 시스템에서는 대칭키와 공개키 방식의 장점을 결합한 하이브리드 시스템을 주로 사용합니다.
작동 방식
- 공개키 방식으로 임시 대칭키(세션 키) 교환
- 교환된 대칭키로 실제 데이터 암호화/복호화
장점
- 키 교환 문제 해결 (공개키 암호화의 장점)
- 빠른 데이터 암호화/복호화 (대칭키 암호화의 장점)
- 대용량 데이터 처리에 효율적
활용 사례
- HTTPS/TLS 통신
- 보안 메시징 앱 (WhatsApp, Signal 등)
- 암호화된 파일 공유
- VPN 연결 설정
실무 고려사항
키 관리
- 키 생성: 암호학적으로 안전한 난수 생성기 사용
- 키 저장: 하드웨어 보안 모듈(HSM), 키 관리 시스템(KMS) 활용
- 키 교체: 정기적인 키 갱신으로 보안 강화
- 키 파기: 더 이상 필요하지 않은 키 안전하게 제거
알고리즘 선택 시 고려사항
- 보안 강도: 현재 권장되는 키 길이 및 알고리즘 사용
- 성능 요구사항: 처리해야 할 데이터 양과 실시간성 고려
- 표준 준수: 검증된 표준 암호화 알고리즘 선택
- 미래 호환성: 양자 컴퓨팅 등 미래 위협에 대한 고려
관련 주제
- 암호학(Cryptography)
- 디지털 서명(Digital Signature)
- 인증서(Certificates)
- PKI(Public Key Infrastructure)
- 키 관리(Key Management)