정보보안 일반
안전한 암호화 기법 정리
S0NG
2025. 6. 28. 21:52
728x90
반응형
암호화는 데이터를 보호하는 마지막 방어선입니다.
단순히 암호화 알고리즘만 사용하는 것이 아니라, 키 관리, 모드 선택, 인증까지 포함한 전체 체계가 안전해야 합니다.
1. 분류 체계
암호 방식 | 대칭키 (Symmetric) | 동일한 키로 암호화/복호화 |
공개키 (비대칭, Asymmetric) | 공개키로 암호화하고, 개인키로 복호화 | |
기능 목적 | 기밀성 (Confidentiality) | 암호화 자체 |
무결성 (Integrity) | 위변조 방지 (예: HMAC) | |
인증 (Authentication) | 신원 보장 (예: 서명, TLS handshake) | |
데이터 범위 | 정지 데이터 (At Rest) | 저장된 파일/DB |
전송 중 데이터 (In Transit) | 네트워크 통신 | |
사용 중 데이터 (In Use) | 메모리 상 암호화 (Homomorphic 등 고급 영역) |
2. 대칭키 암호화 (Symmetric Encryption)
알고리즘
AES (Advanced Encryption Standard) | 가장 널리 쓰이며 안전한 블록 암호화 표준 | 권장 |
ChaCha20 | 저전력 환경에 최적화된 스트림 암호 | 모바일 환경에 권장 |
Blowfish, 3DES | 과거 사용되던 알고리즘 | 사용 금지 또는 제한 |
모드 (암호 운영 방식)
ECB | 블록 단위 반복. 패턴 노출 | 취약 – 절대 사용 금지 |
CBC | 초기화 벡터(IV)와 결합. 널리 사용됨 | 안전하나 IV 취급 중요 |
GCM (Galois/Counter Mode) | 암호 + 인증을 동시에 제공 (AEAD) | 강력히 권장 |
CTR | 스트림처럼 동작 | 안전하나 인증 없음 (MAC 필요) |
실무 권장 방식
- AES-256-GCM (AEAD 제공)
- ChaCha20-Poly1305 (TLS, 모바일에 적합)
3. 공개키 암호화 (Asymmetric Encryption)
알고리즘
RSA (2048~4096비트) | 전통적인 공개키 알고리즘 | 여전히 사용되지만 느림 |
ECC (Elliptic Curve Cryptography) | 짧은 키 길이로 높은 보안성 | 강력히 권장 (X25519 등) |
DH / ECDH | 키 교환 전용 | 안전하나 MITM 방지 위해 인증 필요 |
사용 사례
- HTTPS, TLS: 키 교환 및 인증 (RSA/ECDSA/X25519)
- 이메일 암호화: PGP/GPG
- 디지털 서명: JWT, 코드 서명 등
4. 해시 및 메시지 인증 (무결성 보장)
해시 함수
SHA-256 / SHA-3 | 일반 해시 | 권장 |
MD5, SHA-1 | 충돌 발생 입증됨 | 사용 금지 |
인증 메시지 생성 (MAC)
HMAC-SHA256 | 해시 기반 MAC (많이 사용됨) |
AES-GCM | 암호화 + 인증 동시에 제공 |
Poly1305 | 스트림 암호용 인증 MAC |
5. 안전한 조합 방식 (AEAD: Authenticated Encryption with Associated Data)
암호화 + 무결성 + 인증을 동시에 보장하는 기법. 실무에서 가장 권장되는 구조입니다.
AES-GCM | 표준화된 AEAD |
ChaCha20-Poly1305 | TLS 1.3에서 널리 사용 |
AES-CCM | 임베디드 환경용 AEAD |
→ 단순 AES-CBC + HMAC 조합보다 AEAD를 직접 제공하는 모드 사용 권장
6. 실무 적용 예시
6.1. 파일 암호화
- 암호화 방식: AES-256-GCM
- 키 관리: KMS (AWS KMS, HashiCorp Vault 등)
- 키 보호: HSM 연동, access logging 포함
6.2. TLS 통신
- 키 교환: ECDHE (Perfect Forward Secrecy 제공)
- 인증서: ECDSA or RSA-2048 이상
- 대칭 암호화: AES-GCM 또는 ChaCha20-Poly1305
- 프로토콜: TLS 1.3 이상 (1.2까지 허용, 그 이하 차단)
6.3. 데이터베이스 암호화
- DB 컬럼 암호화: 앱 레벨에서 AES-GCM + 키 분리
- DB 자체 암호화(TDE): 엔진에 따라 구현 (단, 키 유출 시 무력함)
7. 실무 보안 주의사항
키 관리 | 안전한 키 저장소 필요 (KMS, HSM) – 키 노출은 전체 암호화 무력화 |
암호 모드 선택 | ECB는 절대 금지, AEAD 우선 사용 |
IV 처리 | CBC 등에서는 고유한 IV를 매번 생성해야 함 |
인증 누락 | 암호화만 하고 무결성 체크 안 하면 padding oracle 공격 가능 |
알고리즘 사용 기한 | MD5, SHA-1, 3DES 등은 보안성 상실로 폐기 |
암호화 성능 | ECC/ChaCha20은 모바일 등 환경에서 성능 대비 우수함 |
규정 준수 | FIPS 140-2, NIST SP 800-57, PCI-DSS, GDPR 등의 권고사항 참고 |
8. 결론
안전한 암호화는 알고리즘 선택 + 운용 방식 + 키 관리 체계의 조합입니다.
현대 보안에서는 단순한 암호화보다 AEAD, 키 분리, 무결성, 인증까지 포함한 설계를 표준으로 봅니다.
추천 구성
- 통신용: TLS 1.3 + ECDHE + AES-GCM / ChaCha20-Poly1305
- 저장용: AES-256-GCM + HSM/KMS 키 분리
- 해시 및 인증: SHA-256, HMAC, AEAD 기반 메시지 구조
- 인증서/서명: ECDSA + 키 유효기간 관리
728x90
반응형