Security > Secure Key Manager > 키 회전을 이용한 보안 강화 가이드
이 가이드는 Secure Key Manager(SKM)의 키 회전 기능을 활용하여 실제 서비스 환경에서 보안 수준을 향상시키는 방법을 설명합니다.
알아두기
이 가이드는 이미 Secure Key Manager 서비스를 사용 중인 분들을 대상으로 합니다. 처음 사용하는 경우 Secure Key Manager 개요를 먼저 확인하세요.
이 가이드에서 사용하는 주요 용어를 먼저 이해하면 내용을 더 쉽게 파악할 수 있습니다.
| 용어 | 설명 |
|---|---|
| 키 회전(key rotation) | 보안을 강화하기 위해 암호화 키를 주기적으로 새 키로 교체하는 작업입니다. 마치 비밀번호를 정기적으로 변경하는 것과 같은 개념입니다. |
| 봉투 암호화(envelope encryption) | 데이터를 두 단계로 암호화하는 방법입니다. 중요한 문서를 봉투에 넣고, 그 봉투를 다시 금고에 보관하는 것처럼 데이터를 이중으로 보호합니다. |
| DEK(data encryption key, 데이터 암호화 키) | 실제 데이터를 암호화하는 데 사용하는 키입니다. 봉투 암호화에서 '봉투'의 역할을 합니다. |
| KEK(key encryption key, 키 암호화 키) | DEK를 암호화하는 데 사용하는 키입니다. Secure Key Manager에서 관리하는 대칭 키가 이 역할을 합니다. 봉투 암호화에서 '금고'의 역할을 합니다. |
| 키 분할(key segmentation) | 모든 데이터를 하나의 키로 암호화하지 않고, 여러 개의 키로 나누어 암호화하는 전략입니다. 시간별, 지역별, 사용자 그룹별 등 다양한 기준으로 나눌 수 있습니다. 계란을 한 바구니에 담지 않는 것과 같은 원리입니다. |
암호화 키를 장기간 사용할 경우 다음과 같은 보안 위험이 증가합니다.
Secure Key Manager의 키 회전 기능을 사용하면 키 ID를 변경하지 않고 키값만 갱신할 수 있어, 애플리케이션 코드 수정 없이 보안을 강화할 수 있습니다.
키 회전 전략은 서비스의 비즈니스 영향도와 보안 요구사항에 따라 적절히 수립해야 합니다.
알아두기
최소 30일부터 자동 회전 주기를 설정할 수 있습니다.
봉투 암호화(envelope encryption)는 키 회전을 효율적으로 구현할 수 있는 암호화 패턴입니다.
봉투 암호화는 데이터를 두 단계로 암호화하는 방법입니다. 일반적인 암호화 방식과 어떻게 다른지 비교해 보겠습니다.
[사용자 데이터] → [암호화 키로 직접 암호화] → [암호화된 데이터] (DB 저장)
이 방식의 문제점은 키가 유출되면 모든 데이터가 위험에 노출되고, 키를 변경하려면 모든 데이터를 다시 암호화해야 합니다.
[사용자 데이터] → [DEK로 암호화] → [암호화된 데이터] (DB 저장)
[DEK] → [KEK로 암호화] → [DEK 암호문] (KEK는 Secure Key Manager에 저장, DEK 암호문은 DB 또는 Secure Key Manager에 저장)
봉투 암호화는 일반 암호화 방식에 비해 다음과 같은 보안상 이점이 있습니다.
아파트 현관 비밀번호를 정기적으로 변경해야 하는 상황을 생각해 봅시다.
단일 키 방식
키 회전 시 → 100만 건의 데이터 재암호화 필요(매우 긴 시간 소요)
봉투 암호화 방식
키 회전 시 → 실제 사용자 데이터는 그대로, 재암호화 불필요
→ DEK 암호문만 새 KEK 버전으로 재암호화
→ 애플리케이션 코드 변경 없이 자동으로 새 KEK 버전 사용
이러한 구조 덕분에 봉투 암호화는 키 회전의 운영 부담을 최소화하면서도 보안 수준을 유지할 수 있습니다.
봉투 암호화 형태로 Secure Key Manager를 이용할 경우 다음과 같은 흐름을 갖는 것을 추천합니다.

주의
키가 필요한 모든 요청에 대하여 Secure Key Manager API를 직접 호출하면 응답 지연이 발생할 수 있습니다. 성능 최적화를 위해 적절히 캐싱하여 사용하세요.
전체 데이터를 단일 키로 암호화할 경우, 키 유출 시 모든 데이터가 위험에 노출됩니다. 이를 방지하기 위해 키 분할(key segmentation) 전략을 사용하여 피해 범위를 최소화할 수 있습니다.
[전체 고객 데이터 100만 건]
↓
[단일 DEK로 암호화]
↓
키 유출 시 → 100만 건 전체 위험 노출
[고객 데이터 100만 건]
↓
[지역별/기간별/고객등급별로 여러 DEK 사용]
↓
DEK 1개 유출 시 → 10만 건만 위험 노출(피해 90% 감소)
데이터 생성 시점에 따라 다른 키를 사용하는 방식입니다.
구현 방법
2026-01 → 키 ID: abc123..., 2026-02 → 키 ID: def456...).keyId: abc123..., version: 0).알아두기
Secure Key Manager의 키는 UUID 형식의 키 ID와 0부터 시작하는 버전으로 관리됩니다. 키 회전 시 버전이 0 → 1 → 2로 증가하므로, 어느 버전으로 암호화했는지 애플리케이션에서 반드시 기록해야 합니다.
장점
적용 예시
2026년 1월 데이터: 키 ID abc123...(10만 건)
2026년 2월 데이터: 키 ID def456...(10만 건)
2026년 3월 데이터: 키 ID ghi789...(10만 건)
→ 1월 키(abc123...) 유출 시: 1월 데이터 10만 건만 영향
사용자 속성에 따라 다른 키를 사용하는 방식입니다.
구현 방법
방법 1: 해시 기반 분할
알아두기
해시 함수는 입력값을 고정된 길이의 고유한 값으로 변환하는 함수입니다. 같은 입력값은 항상 같은 결과를 만들어내므로, 사용자별로 일관된 키를 할당할 수 있습니다.
0 → 키 ID: abc123..., 1 → 키 ID: def456...).방법 2: 고객 등급별 분할
VIP → 키 ID: abc123..., PREMIUM → 키 ID: def456...).장점
시나리오: 100만 고객 데이터를 10개 키로 분할
초기 상태
- 10개 키 ID(abc123..., def456..., ghi789... 등), 각 10만 건씩 데이터 보유
- 각 키별 독립적으로 관리
사고 발생
→ 키 ID ghi789... 유출 의심
대응 조치
1. 키 ID ghi789... 즉시 회전
2. 해당 키로 암호화된 10만 건의 데이터만 재암호화
3. 다른 9개 키는 영향 없음
결과
✅ 피해 범위: 10만 건(전체의 10%)
✅ 재암호화 시간: 약 1시간(전체 재암호화 시 10시간 → 90% 절감)
✅ 서비스 영향: 최소화
분할된 키가 많아질수록 관리가 복잡해집니다.
키 목록 추적 방법
사용하지 않는 키를 정리하는 정책이 필요합니다. 생성된 지 일정 기간이 지난 키를 조회하여, 해당 키로 암호화된 데이터가 없다면 삭제 대상으로 분류하고 정기적으로 정리 작업을 수행합니다.
처음 시작한다면 시간 기반 분할(월별)로 시작하는 것을 추천합니다. 서비스 규모가 커지고 데이터가 중요해지면 해시 기반 분할을 추가로 적용하여 보안을 강화할 수 있습니다.
단계별 설정 방법

주의
자동 회전 외에 다음과 같은 상황에서는 즉시 수동 회전이 필요합니다.
주의
평문 DEK가 메모리나 애플리케이션 레벨에서 유출된 경우, 키 회전만으로는 불충분합니다. 이미 유출된 평문 키로 암호화된 데이터는 여전히 복호화 가능하므로, 반드시 데이터 재암호화(re-encryption)를 함께 수행해야 합니다.


키 회전 후 변경 사항을 API로 확인할 수 있습니다.
curl -X GET \
'https://api-keymanager.nhncloudservice.com/keymanager/v1.2/appkey/{appkey}/keystores/{keyStoreId}/keys/{keyId}' \
-H 'X-TC-AUTHENTICATION-ID: {User Access Key ID}' \
-H 'X-TC-AUTHENTICATION-SECRET: {Secret Access Key}'
응답 예시
{
"header": {
"resultCode": 0,
"resultMessage": "success",
"isSuccessful": true
},
"body": {
"keyId": "035a0ffa16a64bbf8171c4bdcea37bbf",
...중략...
"currentKeyValueVersion": 2,
"autoRotationPeriod": 0,
"nextAutoRotationDate": null,
...후략...
}
}
현재 Secure Key Manager의 대칭 키를 데이터를 직접 암호화하는 용도로 사용 중이라면, 키 회전을 적용하기 전에 반드시 봉투 암호화로 전환해야 합니다.
사용자 데이터 → Secure Key Manager의 대칭 키로 직접 암호화 → 암호화된 데이터 저장
이 상태에서 키 회전을 적용하면 다음과 같은 문제가 발생합니다.
방법 1: 봉투 암호화로 마이그레이션(권장)
방법 2: 현재 구조 유지(비권장)
단일 키 암호화를 유지하면서 키 회전을 적용할 경우 다음과 같은 문제가 발생합니다.
키 회전 적용 전 꼭 다음 사항을 확인하세요.
주의
프로덕션 환경에 키 회전을 적용하기 전에 반드시 테스트 환경에서 전체 시나리오를 검증해야 합니다. 한 번의 잘못으로 큰 장애가 발생할 수 있습니다.
높아지는 보안 요구사항에 대응하기 위해, 이 가이드에서는 Secure Key Manager의 키 회전 기능을 활용한 두 가지 보안 강화 전략을 소개했습니다. 서비스 환경과 데이터 특성에 따라 다음과 같이 필수 또는 선택적으로 적용할 수 있습니다.
봉투 암호화는 키 회전의 기본이 되는 패턴입니다. 단일 키로 직접 데이터를 암호화하는 방식보다 키 회전이 훨씬 쉽고, 대량의 데이터를 재암호화할 필요가 없습니다. 처음 시스템을 설계할 때부터 봉투 암호화 방식을 적용하는 것을 강력히 권장합니다.
키 분할은 보안 수준을 한 단계 더 높이는 전략입니다. 하지만 관리 복잡도가 증가하므로, 서비스 특성에 따라 선택적으로 적용할 수 있습니다.
Secure Key Manager의 키 회전 기능을 적절히 활용하면 다음과 같은 효과를 얻을 수 있습니다.
키 회전은 일회성 작업이 아닌 지속적인 보안 프로세스입니다. 서비스 규모와 보안 요구사항에 맞게 전략을 선택하고, 정기적인 검토와 개선을 통해 보안 수준을 꾸준히 향상시킬 수 있습니다.