암호화 및 API 보호: TLS, HSTS, PFS, 비밀 회전
1) 위협 사진 및 대상
MitM 공격, 교통 차단, 다운 그레이드 공격, 토큰 스푸핑, 주요 누출 및 장기 비밀 남용에 따른 API. 보호 목표:- 기밀성과 무결성 (SL 1. 3 + 강한 암호).
- 다운 그레이드/스트리핑 방지 (HSTS, 금지 버전/암호).
- 타협 손상 최소화 (PFS, 짧은 TTL, 빠른 회전).
- 신뢰할 수있는 클라이언트/서비스 인증 (mSL/토큰) 및 추적 성.
2) 기본적인 TLS (서버 및 서비스 간 서비스)
버전과 암호:- 기본값은 SL 1입니다. 3; TLS 1을 허용하십시오. 호환성만을 위해 2입니다. 1을 사용하지 않습니다 1/1. 0.
- 'SL _ AES _ 128 _ GCM _ SH256', 'SL _ AES _ 256 _ GCM _ SHA384', 'SL _ CHACHA20 _ POLY1305 _ SHA256'.
- TLS의 경우 1. 2: AES-GCM/ChaCha20 및 ECDA/RT 서명이있는 ECDHE 만 (예: 'ECDHE-ECDSA-AES128-GCM-CHA256').
- 서버 키: ECDSA P-256/P-384 (더 빠르고 짧음) 또는 RT 2048 +/3072.
- mTLS의 클라이언트 키: ECDSA P-256; 자신의 CA 또는 지불 HSM/KMS를 통한 발행.
- OCSP 스테이플링을 사용하십시오. 바람직하게는 Must-Staple 플래그 및 ALPN (상태/2/3) 으로 사용하십시오.
- ECDHE (임시 교환) 에서 제공합니다. 서버 키가 누출 된 경우에도 과거 세션을 해독 할 수 없습니다.
- 정적 DH/RT 키 계약을 강제합니다.
- 전면/CDN에서 지원하는 ECH (암호화 된 클라이언트 Hello) 는 SNI를 숨 깁니다.
- 강력한 암호가있는 경우에만 해/2/3; 보호되지 않은 HTTP의 금지는 HTTPS로 리디렉션됩니
3) HSTS vs TLS- 스트리핑
루트 도메인 및 하위 도메인에서 Microsoft 엄격한 전송 보안 사용:
엄격한 운송 보안: max-age = 63072000; 포함 서브 도메인; 사전로드도메인을 HSTS 사전로드 목록에 넣습니다.
게시하기 전에 정확성을 조심하십시오 (롤백이 어렵습니다).
4) 상호 인증: mSL 및/또는 토큰
마이크로 서비스/내부 API 사이의 mTLS: 양방향 인증서, 서비스 메쉬 (Istio/Linkerd) 를 통한 자동 회전 또는 독점 PKI.
API 클라이언트 (모바일/파트너 통합): 토큰 (OAuth2/OIDC, JWT), 고위험을위한 옵션 mTLS.
공개 전선: 장치/DPoP 바인딩이있는 TLS + 단기 OAuth2/OIDC 토큰.
5) 인증서 및 수명주기 관리
만료 30 일 전에 자동 업데이트 된 ACME 자동화 (예: 암호화/조직 CA).
인증서의 짧은 수명 (행정 90 일) + 마감일, 경고 및 카나리아 배포 패킷 모니터링.
중앙 집중식 PKI: 루트/중간 CA, CRL/OCSP, 감사 릴리스 및 취소.
nginx (조각) 의 예:nginx ssl _ protocol TLSv1. 3 TLSv1. 2;
(PHP 3 = 3.0.6, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
ssl _ ecdh _ curve X25519: P-256: P-384;
ssl _ stapling on; (PHP 3 = 3.0.6, PHP 4)
추가 _ header 엄격한 운송 보안 "max-age = 63072000; 포함 서브 도메인; 프리로드 "항상;6) 비밀 회전: 원리 및 패턴
회전 목표: 누출의 "폭발 반경" 을 제한하고 남용 시간을 줄이며 원활한 방출을 보장합니다.
기본 규칙:- 비밀 관리자 (KMS/Vault/Cloud SM) 에만 비밀을 저장합니다. Git/이미지에는 비밀이 없습니다.
- 짧은 TTL 및 자동 회전: 서명 키, 데이터베이스 암호, 공급자 API 키.
- 듀얼 키 창: 롤 기간 동안 기존 키와 새 키가 동시에 활성화됩니다.
- Versioning + kid (JWT/JWKS 용), 오래된 토큰을 검증하기위한 "그레이스" 창.
- JWT 키 (서명/암호화), 웹 후크 및 콜백의 HMAC 비밀, 비밀번호/데이터베이스 계정, 캐시 (Redis), CI/CD 토큰, 공급자 비밀 (KYC/AML, 결제, SMS/전자 메일), SS-자동화 키.
예정되지 않은 로테이션의 트리거: 누출 의심, 액세스 권한이있는 직원의 해고, 공급 업체의 변경, 규제 기관의 요구 사항.
7) JWT/JWKS: 안전한 역할 오버레이
현재 및 미래 키 ('kid' 필요) 로 JWKS 엔드 포인트 게시
회전 절차:1. 새 키를 생성 → "두 번째" 키로 JWKS에 추가합니다.
2. 서명자 업데이트 → 새로운 키로 새 토큰을 발행합니다.
3. 기존 토큰의 TTL을 기다리십시오 → JWKS에서 기존 키를 제거하십시오.
추가 확인과 함께 짧은 TTL 토큰 (예: 5-15 분) + 새로 고침 스트림을 설치하십시오.
8) 실제로 비밀 관리
KMS + 엔벨로프 암호화: HSM/KMS의 마스터 키, 데이터는 "랩" DEK로 암호화됩니다.
Vault/Cloud Secret Manager: 데이터베이스에 대한 동적 크레딧 (TTL로 레코드 발행), 정기적 인 회전.
Kubernetes: 외부 비밀/비밀 상점 CSI; etcd 암호화; RBAC; 로깅 비밀 금지.
역할 액세스: IAM/ABAC, 최소 권한 원칙, 하드웨어 경계 (HSM, TPM).
전체 감사: 누가, 언제, 왜 읽기/변경했는지.
9) 주변 내부의 운송 보호
"내부 네트워크" 를 신뢰하지 마십시오: 어디에서나 SL/mSL (제로 트러스트).
서비스 메쉬는 인증서, 재시작 및 회전, 관찰 가능성 (기본적으로 mTLS) 을 자동화합니다.
TLS 종료를 최소화하십시오: edge + 암호화 된 동서 만 또는 엔드 투 엔드 암호화.
10) 응용 프로그램 보안 정책 이상
속도 제한/DoS 보호, 웹 후크 서명 검증 (비밀 회전이있는 HMAC).
Content-Security-Policy/Referrer-Policy/X-Content-Type-Options
파트너 별 중요한 엔드 포인트 (결제, 관리자 패널), IP 허용 목록을위한 mTLS.
재생 보호: 서명 된 요청에서 타임 스탬프 + nonce, 5 분 이내에 창.
11) 모니터링 및 테스트
TLS의 관찰 가능성: 지표 버전/암호, 다운 그레이드 시도 경고, 악수 실패 증가.
스캐너 (CI/CD 및 정기 판매): 지원되는 암호, 인증서, HSTS, OCSP 확인.
혼돈/DR 연습: 인증서 만료, 비밀 관리자 삭제, 서명 키 타협-반응 계획 확인.
12) 응답 절차
주요 타협: JWKS에서 즉시 인증서 취소/키 제거, 백업으로 반전, 강제 토큰 재생.
갱신없는 만료: 일시적인 저하 (내부 트래픽 만 해당), 인증서 자동 재설치.
사건 보고서: 타임 라인, 영향을받는 피험자, 기술. 부품, 수정 조치.
13) 빠른 점검 점검표 (prod-ready)
- TLS 1 만 해당됩니다. 3 (+ 1. 레가시의 경우 2), 엄격한 암호 목록.
- HSTS '프리로드', OCSP 스테이플링, ALPN.
- PFS에 대한 ECDHE; ECDSA P-256/384 또는 RT 3072.
- 클러스터 내에서/중요한 서비스 사이의 mTLS.
- JWKS + kid, 짧은 TTL 토큰, 회전 계획.
- 비밀-KMS/Vault에서만 데이터베이스/공급자의 자동 회전.
- 인증서 자동 갱신 (ACME), 30 일 후에 경고.
- 보안 헤더 및 취약한 암호의 CI/CD 검사.
- 문서화 된 런북 '및: 로테이션, 리콜, 사건.
요약 다시 시작
신뢰할 수있는 API 보호는 TLS 1의 조합입니다. 필수 최소 및 성숙한 키 및 비밀 관리 프로세스 인 3 + HSTS + PFS. 서비스 사이에 mTLS를 추가하고, KMS/Vault/mesh를 통해 릴리스/회전을 자동화하고, 키를 변경할 때 짧은 TTL과 이중 창을 유지하십시오. 제품.
