키 교체와 탐지
키를 교체하고 유출을 포착합니다.
키 교체와 탐지은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
키를 교체해야 하는 이유
키 교체는 주기적으로 비밀을 새것으로 바꾸고 이전 비밀을 폐기하는 방식입니다. 완벽하게 저장된 키라도 교체하면 다음과 같은 이점이 있습니다:
- 노출 기간 제한 키가 조용히 유출되었더라도 교체하면 해당 키가 무효화됩니다.
- 암호화 사용량 감소 하나의 키로 암호화되는 데이터가 줄어듭니다.
- 규정 준수 충족 PCI DSS와 같은 표준은 주기적인 교체를 의무화합니다.
- 퇴사자의 접근 제거 이전 직원이 보았던 자격 증명이 무용지물이 됩니다.
핵심 개념은 다음과 같습니다. 비밀이 자주 변경될수록 공격자에게 주는 가치는 줄어듭니다. 교체를 통해 유출을 영구적인 문제가 아니라 일시적인 문제로 만들 수 있습니다.
키 교체 수명 주기
순진한 키 교체 방식은 기존 키를 삭제하고 새 키를 생성하므로 중단을 일으킵니다. 소비자가 여전히 기존 키를 보유하고 있어 즉시 작동하지 않기 때문입니다. 안전한 키 교체는 유효 기간을 겹치게 사용합니다:
- 1. 생성 기존 키와 함께 새 키를 생성합니다.
- 2. 배포 모든 소비자에게 새 키를 배포합니다.
- 3. 활성화 새로운 작업에 새 키를 사용하도록 활성화합니다.
- 4. 유예 기간 소비자가 전환하는 동안 두 키를 모두 유효하게 유지합니다.
- 5. 폐기 아무도 기존 키를 사용하지 않게 되면 기존 키를 폐기합니다.
이러한 두 키의 유효 기간 중첩이 무중단 키 교체의 기반입니다.
실전에서의 무중단 교체
트래픽을 중단하지 않고 교체하려면 서비스가 유예 기간 동안 기존 키와 새 키를 모두 허용해야 합니다. 검증기는 현재 유효한 키 중 하나와 수신 토큰을 대조합니다.
서명용 keys의 경우 공개 keys를 여러 개 게시하고, 헤더의 키 ID(kid)로 토큰에 서명한 키를 식별합니다. 사용 시스템은 일치하는 키를 자동으로 선택합니다.
텔레메트리로 기존 키를 사용하는 트래픽이 전혀 없음을 확인한 후에만 기존 키를 폐기합니다.
# A JWKS endpoint publishes multiple valid public keys.
# Tokens carry a 'kid' so verifiers select the right one,
# allowing old and new keys to coexist during rotation.
{
"keys": [
{ "kid": "2024-q1", "kty": "RSA", "n": "...", "e": "AQAB" },
{ "kid": "2024-q2", "kty": "RSA", "n": "...", "e": "AQAB" }
]
}교체 자동화
수동 교체는 드물고 오류가 발생하기 쉬우며, 압박을 받으면 건너뛰게 됩니다. 자동화하십시오. 클라우드 및 비밀 저장소 플랫폼은 사람의 개입 없이 일정에 따라 교체를 수행할 수 있습니다.
- AWS 비밀 관리자는 새 자격 증명을 만들고, 이를 테스트한 다음 활성화하는 교체 람다 함수를 실행합니다.
- HashiCorp 볼트는 루트 자격 증명을 교체하고 수명이 짧은 동적 비밀을 발급하므로 교체가 지속적으로 이루어집니다.
- 클라우드 KMS는 일정한 주기로 암호화 키를 자동 교체할 수 있습니다.
자동화된 교체는 의심되는 유출에 대응하는 가장 안정적인 방법이기도 합니다. 단 한 번의 명령이나 일정으로 모든 곳에 적용할 수 있기 때문입니다.
# Enable automatic rotation every 30 days in AWS Secrets Manager
aws secretsmanager rotate-secret \
--secret-id prod/billing/db \
--rotation-lambda-arn arn:aws:lambda:...:func:rotate-pg \
--rotation-rules AutomaticallyAfterDays=30암호화 키와 자격 증명의 교체
비밀번호를 교체하는 일은 간단합니다. 새 비밀번호를 발급하고 사용하는 시스템을 업데이트하면 됩니다. 하지만 암호화 키의 교체는 기존 데이터가 기존 키로 암호화되어 있기 때문에 더 어렵습니다.
표준적인 해결책은 봉투 암호화입니다. 데이터는 객체마다 다른 데이터 키로 암호화하고, 해당 데이터 키는 마스터 키 암호화 키(KEK)로 암호화합니다. 교체할 때는 전체 데이터 세트가 아니라 작은 데이터 keys만 새 KEK로 다시 암호화합니다.
볼트의 전송 엔진은 버전이 지정된 키를 사용해 이 과정을 처리합니다. 각 암호문을 어떤 버전으로 암호화했는지 추적하고 최신 버전으로 다시 래핑할 수 있게 합니다.
# Rotate a Transit key to a new version
vault write -f transit/keys/orders-key/rotate
# Rewrap old ciphertext under the newest key version
# (cheap - re-encrypts the data key, not the whole payload)
vault write transit/rewrap/orders-key ciphertext='vault:v1:abc...'긴급 교체
예약된 교체는 보안 관리에 사용하고, 긴급 교체는 침해 사고에 사용합니다. 키가 손상되었음이 확인되었거나 손상되었다고 의심되면 느린 유예 기간을 건너뛰고 즉시 교체합니다. 필요한 경우 잠시 서비스가 중단되는 것도 감수합니다.
준비가 되어 있으면 이러한 상황을 견뎌 낼 수 있습니다.
- 각 비밀 유형을 교체하기 위한 검증된 운영 절차서를 마련해 두십시오.
- 각 비밀을 사용하는 모든 소비자를 미리 파악해 두십시오.
- 긴급 교체가 조사 작업이 아니라 한 번의 명령으로 끝나도록 자동화를 준비해 두십시오.
긴급 교체 속도에 따라 침해 규모가 직접적으로 결정됩니다.
유출 탐지: 비밀 스캔
교체는 알려진 유출을 처리하고, 탐지는 아직 알려지지 않은 유출을 찾아냅니다. 비밀 스캐너는 자격 증명 패턴을 찾기 위해 코드, 기록, 로그 및 산출물을 검색합니다.
심층 방어를 위해 여러 계층에서 검색하십시오.
- 커밋 전 비밀이 저장소에 들어가기 전에 차단합니다.
- 지속적 통합 파이프라인 로컬 훅을 우회한 항목을 찾아냅니다.
- 저장소 전체 전체 기록을 주기적으로 심층 검색합니다.
- 플랫폼 측 푸시 시 GitHub/GitLab의 비밀 스캔을 수행합니다.
기트리크스와 트러플호그 같은 도구는 정규식과 엔트로피 분석을 사용해 키처럼 보이는 무작위성이 높은 문자열을 찾아냅니다.
# CI step: fail the build if a secret is found in the diff
gitleaks detect --source . --redact --exit-code 1
# Verify candidates by testing them live (trufflehog)
trufflehog git file://. --only-verified --json엔트로피 및 패턴 탐지
스캐너는 서로 보완적인 두 가지 기법을 사용합니다.
- 패턴 일치 알려진 접두사와 형식을 찾습니다. 예를 들어 AWS keys는
AKIA로 시작하고, 스트라이프 실서비스 키는sk_live_로 시작하며, GitHub 토큰은ghp_로 시작합니다. - 엔트로피 분석 무작위성을 측정합니다. 실제 비밀은 엔트로피가 높은 문자열이므로 알려진 접두사가 없어도 길고 무작위로 보이는 값은 의심스럽습니다.
패턴은 정밀도, 즉 적은 오탐을 제공하고 엔트로피는 재현율, 즉 알려지지 않은 형식까지 찾아내는 능력을 높여 줍니다. 좋은 도구는 두 방식을 결합하고, 잡음을 관리할 수 있도록 임계값과 허용 목록을 조정하게 해 줍니다.
# Shannon entropy heuristic: high-randomness strings flag as candidate secrets
# AKIAIOSFODNN7EXAMPLE -> matches AWS prefix pattern
# 4f8b2c9e1a7d6f3b... -> flagged by entropy threshold
# 'hello world' -> low entropy, ignored허니토큰: 존재뿐 아니라 사용 탐지
검색은 비밀이 있어서는 안 되는 곳에 존재하는지 찾아냅니다. 허니토큰 또는 카나리 토큰은 공격자가 비밀을 사용하는 순간을 탐지합니다.
구성 파일이나 공개 저장소처럼 유혹적인 위치에 실제처럼 보이지만 가짜인 자격 증명을 심습니다. 예를 들면 AWS 키, API 토큰 또는 데이터베이스 연결 정보가 있습니다. 이 자격 증명은 유용한 작업을 수행하지 않지만, 사용하려는 시도가 있으면 경고가 발생합니다.
정상적인 시스템은 허니토큰에 절대 접근하지 않으므로 모든 탐지는 침입을 강하게 확신할 수 있는 신호입니다. 공격자가 비밀 저장소나 코드 기반을 확보했다는 조기 경고이기도 합니다.
# A canary AWS key: looks real, grants nothing, alerts on any API call.
# Plant it in a config file or a fake .env.
# When an attacker tries: aws s3 ls --profile leaked
# the canary service logs the source IP and pages your team.비정상적 사용 모니터링
허니토큰 외에도 실제 비밀이 어떻게 사용되는지 모니터링하십시오. 비밀 저장소와 클라우드 제공자의 감사 로그를 보면 악용 패턴을 확인할 수 있습니다.
- 새로운 지역 키가 갑자기 예상하지 못한 국가에서 사용됩니다.
- 업무 외 시간의 접근 작업이 실행되지 않는 새벽 3시에 자격 증명이 사용됩니다.
- 권한 탐색 읽기 전용 키가 쓰기 작업이나 관리자 호출을 시도합니다.
- 사용량 급증 API 호출이 갑자기 크게 증가합니다.
이러한 로그를 경고 기능이 있는 SIEM으로 전송하십시오. 탐지와 신속한 교체를 함께 수행하는 것이 예방을 통과한 유출에 대한 실질적인 대응책입니다.
종합하기: 교체 전략
성숙한 보안 프로그램은 사전 예방적 교체와 지속적인 탐지를 결합합니다.
- 수명이 짧은 동적 비밀을 우선 사용하십시오. 그러면 교체가 자동으로 지속됩니다.
- 피할 수 없는 정적 비밀에는 예약된 교체를 자동화하십시오.
- 서명용 keys를 무중단으로 교체하려면 두 키의 중첩 기간을 사용하십시오.
- 모든 곳을 검색하십시오. 커밋 전, 지속적 통합, 기록 및 플랫폼을 포함합니다.
- 허니토큰을 배포하고 감사 로그에서 비정상적인 사용을 모니터링하십시오.
- 긴급 운영 절차서를 마련해 두십시오. 확인된 유출에 대응해 몇 분 안에 교체할 수 있어야 합니다.
목표는 모든 비밀의 수명을 짧게 만들고, 모든 유출을 탐지할 수 있게 하며, 모든 교체를 빠르고 일상적인 작업으로 만드는 것입니다.
빠른 확인
탐지 기법에 대한 이해도를 확인해 보십시오.
복습: 키 교체 및 탐지
비밀을 최신 상태로 유지하고, 놓치기 쉬운 유출을 찾아내는 방법을 배웠습니다.
- 교체는 노출 기간을 제한하고 규정 준수 요건을 충족합니다. 안전한 교체에는 무중단을 위한 두 키의 중첩 기간이 사용됩니다.
- 클라우드 관리자, 볼트 및 KMS를 통해 교체를 자동화하십시오. 교체가 지속되도록 수명이 짧은 동적 비밀을 우선 사용하십시오.
- 암호화 키를 교체할 때는 봉투 암호화를 사용하므로 전체 데이터 세트가 아니라 작은 데이터 keys를 다시 래핑합니다.
- 긴급 교체는 운영 절차서와 모든 소비자를 미리 파악해 두는 것에 달려 있습니다.
- 탐지는 비밀 스캔(패턴과 엔트로피), 사용 사실을 알려 주는 허니토큰, 감사 로그와 SIEM을 통한 이상 징후 모니터링을 결합합니다.
- 성숙한 전략은 사전 예방적 교체와 지속적인 탐지를 결합하여 유출의 수명을 짧게 만들고, 유출을 확인할 수 있게 하며, 신속하게 억제합니다.
이로써 비밀 관리 및 키 교체 과정이 끝났습니다.
자주 묻는 질문
“키 교체와 탐지” 강의는 무료인가요?
네 — “키 교체와 탐지” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“키 교체와 탐지”에서 뭘 배우나요?
키를 교체하고 유출을 포착합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“키 교체와 탐지” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.