본문 바로가기
정보보호 (Security)

키를 못 지키면 암호화도 무너진다 “KMS로 만드는 데이터 방어선“

by 날으는물고기 2026. 2. 1.

키를 못 지키면 암호화도 무너진다 “KMS로 만드는 데이터 방어선“

728x90

데이터 암호화는 단일 기술이 아니라 “계층형 방어 체계”입니다.

300x250

아래 3개 축은 서로 대체 관계가 아니라 반드시 함께 작동해야 합니다.

  1. 전송 암호화 (In Transit)
  2. 저장 암호화 (At Rest)
  3. 키 관리 (KMS · 엔벨로프 암호화 · 키 수명주기)

핵심 원칙
“데이터는 항상 암호화되어 있어야 하고,
그 암호화 키는 데이터와 분리되어 중앙에서 통제되어야 한다.”

전송 암호화 (Encryption In Transit)

1. 개념과 배경

전송 암호화는 네트워크를 이동 중인 데이터를 보호합니다.

  • 공격 시나리오
    • 내부망 스니핑
    • 중간자 공격(MITM)
    • 프록시/로드밸런서 구간 도청
  • 전송 암호화가 없으면
    내부망 침해 시 모든 인증 정보·API Payload가 평문 노출

2. 적용 대상

  • 클라이언트 ↔ 서버 (웹/모바일)
  • 서버 ↔ 서버 (마이크로서비스)
  • 서버 ↔ DB
  • 서버 ↔ MQ / Cache (Kafka, Redis 등)

“내부 트래픽은 안전하다”는 가정은 Zero Trust 시대에 폐기

3. 기술 요소

영역 기술
웹/API HTTPS (TLS 1.2+)
내부 서비스 TLS / mTLS
VPN TLS 기반 VPN
메시지 TLS + (필요 시) 메시지 레벨 E2E

4. 설계·보안 가이드

강제 사항

  • TLS 1.0 / 1.1 완전 차단
  • HSTS 활성화
  • 인증서 자동 갱신 (ACM, Cert Manager)

점검 포인트

  • 내부 API 중 HTTP 남아있는지
  • DB/MQ 접속 문자열에 ssl=true 적용 여부
  • 프록시–백엔드 구간 TLS 여부

전송 암호화의 한계
도착 후 메모리·디스크에 쓰인 순간부터는 보호되지 않음

→ 반드시 저장 암호화가 필요

저장 암호화 (Encryption At Rest)

1. 개념과 위협 모델

저장 암호화는 “유출된 저장 매체”를 가정합니다.

  • 디스크 탈취
  • 백업 파일 유출
  • 스냅샷/오브젝트 스토리지 오픈
  • 내부 관리자 오남용

전송 암호화만 있고 저장 암호화가 없으면
→ 백업 하나로 전체 개인정보 유출 가능

2. 저장 암호화 레벨 3단계

① 인프라/볼륨 레벨

  • EBS, LUKS, 디스크 전체 암호화
  • 장점: 투명, 성능 영향 적음
  • 한계: 관리자 접근 시 평문 가능

② 스토리지/서비스 레벨

  • S3, RDS, GCS 등
  • KMS 연동 기본 암호화
  • 대부분 컴플라이언스 최소 요건 충족

③ 애플리케이션 레벨 (가장 중요)

  • 주민번호, 카드번호, 토큰 등
  • 컬럼 단위 암호화
  • KMS 기반 엔벨로프 암호화 사용

“민감정보는 반드시 앱 레벨 암호화”

3. 내부 보안 점검 포인트

  • 모든 DB/스토리지 암호화 활성화 여부
  • 로그/백업/스냅샷 암호화 포함 여부
  • 개인정보 컬럼 평문 저장 여부
  • 운영자 SQL 조회로 복호화 가능한지

KMS 기반 키 관리 (가장 핵심)

1. 왜 KMS가 필요한가

암호화 실패의 90%는 알고리즘이 아니라 키 관리 실패입니다.

❌ 하드코딩
❌ 설정 파일 저장
❌ 동일 키 장기 사용

KMS는 키를 “사용만” 하게 하고 “보지 못하게” 합니다

2. 엔벨로프 암호화 구조 (표준 패턴)

[KMS Master Key]
      ↓
[Encrypted Data Key] ----> 저장
      ↓
[Plain Data Key] (메모리에서만 사용 후 폐기)
      ↓
[Actual Data Encryption]
핵심 포인트
  • KMS 키는 데이터 직접 암호화 X
  • 데이터 키는 매번 생성
  • 평문 키는 절대 저장 금지

3. 키 수명주기 관리 (Lifecycle)

① 생성

  • 서비스/환경/테넌트 단위 분리
  • prod / stage / dev 키 분리 필수

② 사용

  • Encrypt / Decrypt 권한 분리
  • 조건부 정책 (VPC, IP, 서비스 계정)

③ 로테이션

  • 자동 로테이션: 키 재료 교체
  • 수동 로테이션: 새 키 + alias 전환

④ 삭제

  • 즉시 삭제 금지
  • 7~30일 삭제 대기
  • 사고 대응 시 “키 파쇄” 가능

AWS KMS 키 로테이션 전략의 위치

1. 자동 로테이션 (기본 전략)

  • 대상: AWS 생성 대칭 CMK
  • 주기: 기본 365일 (90~2560일)
  • 장점
    • 앱 수정 없음
    • 기존 암호문 자동 호환
  • 대부분의 서비스에서 권장
    aws kms enable-key-rotation --key-id <KEY_ID>

2. 수동 로테이션 (고급/사고 대응)

  • 사용 사례
    • 키 유출 의심
    • 테넌트 분리
    • 암호화 경계 재설계
  • 방식
    • 새 키 생성
    • alias만 스위칭
    • 점진적 재암호화
    aws kms update-alias \
      --alias-name alias/my-app-key \
      --target-key-id <NEW_KEY>

3. 내부 통제 포인트

  • 누가 로테이션 설정 변경 가능한가
  • RotationPeriod 제한 정책
  • 로테이션 이벤트 감사 로그 확인

실서비스 기준 통합 아키텍처

[Client]
   ↓ TLS
[API Gateway]
   ↓ mTLS
[Backend Service]
   ↓ TLS + App-level Encryption (KMS)
[DB / Storage]
   ↓ At-rest Encryption (KMS)

✔ 전송 중 보호
✔ 저장 시 보호
✔ 키는 중앙 통제

단일 계층 침해로 전체 유출 불가

728x90
그리드형(광고전용)

댓글