대중 교통 암호화
대중 교통 암호화
1) 제어의 정의와 한계
대중 교통 암호화는 채널에 대한 수동 차단 및 능동 공격이 공개되지 않도록 전체 네트워크 전송 경로 (브라우저 서버, 서비스 표시 서비스, 에이전트 표시 중개인, 데이터 중개인, 데이터 센터 데이터 센터) 를 따라 데이터를 보호하는 것입니다.
우리가 다루는 것: 공공 및 민간 API (HTT/HTTPS, gRPC), 스트리밍 및 중개인 (Kafka, NATS, RabbitMQ), 웹 소켓, 데이터베이스 및 네트워크 캐시, 클러스터 내 서비스 트래픽, VPN/데이터 센터 및 구름, 모바일/IoT 고객.
우리가 완전히 다루지 않는 것: 엔드 포인트에 대한 공격 (호스트/브라우저 손상), 응용 프로그램 취약성, 로그/덤프 누출. 이는 별도의 제어 (A&A, 권한 최소화, 휴식 시간의 암호화, 보안 로깅) 로 해결됩니다.
2) 위협 모델 및 대상
위험: MITM (Traffic Interception/spoofing), 프로토콜 다운 그레이드/암호 제품군, 가짜 인증서/CA, 키 누출, SNI/메타 데이터 공격, 혼합 콘텐츠, 밸런서의 SL 미스터 마이닝, 안전하지 않은 서비스 상호 연결.
목표:1. 암호화 인증을 통한 기밀 유지 + 무결성.
2. 다운 그레이드에 대한 반대 (엄격한 정책 및 설정).
3. 당사자 식별 (필요한 경우 서버-상호).
4. 관리 인증서/키 수명주기 및 감사.
5. 보안 절충없는 성능 프로파일.
3) 기본 원칙
TLS는 기본적으로 어디에나 있습니다 외부 및 내부 트래픽-암호화.
최신 버전. TLS 1. 표준으로 3; TLS 1. 2-엄격한 정책에서만. 1을 사용하지 않습 0/1. 1.
PFS가있는 AEAD 암호 제품군. AES-GCM 또는 ChaCha20-Poly1305; (EC) DHE를 통한 PFS.
곡선/키 시험 X25519 (바람직하게는) 또는 secp256r1 (P-256). RSA는 ECDSA (P-256) 보다 2048 이상입니다.
신뢰가 부족한 mTLS. 상호 인증을 통한 서비스 간 채널, 관리자 API, 중개인, 데이터베이스.
웹용 HSTS. 공개 도메인에 대한 강제 HTTPS + 사전로드.
"암호화 및 암호화-다시" 의식적으로. 백엔드 또는 엔드-투-엔드 통과를 위해 주변 + 재 암호화의 TLS 종료-위협 모델에 따라 선택하십시오.
암호화 민첩성. 다운 타임이없는 곡선/스위트/버전을 변경할 수 있습니다.
4) 프로토콜 스택 및 스크립트
4. QUIC/3, gRPC, 웹 소켓
ALPN: HTT/2의 경우 h2, HTT/3의 경우 h3; h2c 억제 (TLS없이).
TP/3/QUIC: 대기 시간, 임베디드 0-RTT 및 복합 마이그레이션을 줄입니다. 0-RTT는 선택적으로 허용합니다 (재생 위험).
gRPC: h2/h3 이상; 필수 TLS, 선택적 mSL + RPC 권한 부여.
웹 소켓: wss ://Only; 프록시/밸런서에서-도메인의 올바른 업그레이드 및 TLS 피닝.
4. 서비스 간 트래픽 및 서비스 메시 2 개
사이드카 모델 (Istio/Linkerd 등). 자동 mTLS, 권한 정책, 인증서 회전.
SPIFFE/SPIRE. SPIFFE ID (Decentralized Service ID), SVID 인증서, 짧은 TTL.
TLS 매개 변수는 중앙 집중식입니다. 서비스 코드의 설정 불일치를 최소화하십시오.
4. 3 중개인/스트리밍/대기열
Kafka/NATS/RabbitMQ: kliyent 표준 중개인 및 중개인을위한 TLS; 가능한 경우 mTLS.
TLS를 통한 RAM: mTLS가 불가능한 경우 토큰/로그인으로 인증하지만 채널을 암호화하십시오.
ACL 및 주제 승인. PHP 3, PHP 4: PHP 4
4. 데이터베이스 및 캐시 4 개
PostgreSQL/MySQL/SQL 서버: 온라인, CN/SAN 검증, CA 핀/루트 활성화.
Redis/Memcashed: 스턴넬/TLS 무선 사용; 제품의 일반 트래픽 금지.
4. 5 네트워크/터널
데이터 센터/클라우드 사이: IPsec (IKEv2) 또는 WireGuard (최신 프리미티브 세트).
관리자 액세스: 현대 KEH/암호가있는 SSH; 암호가없고 키/SSO 만 있습니다.
4. 6 개의 DNA 및 보조 프로토콜
클라이언트 및 가능한 경우 클러스터 내에서 HTTPS를 통한 HTTPS (DoH )/DNA over SL (DoT).
혼합 콘텐츠를 사용하지 않습 https ://페이지의 http ://에는 없습니다.
5) 인증서, PKI 및 키 관리
PKI 모델: 외부 도메인의 경우-공개 CA; 내부 트래픽-자체 CA 또는 SPIRE-CA.
자동화: Kubernetes의 ACME/Cert-manager, 짧은 TTL, 자동 회전.
OCSP 스테이플링 @ info 앞면에서 스테이플링을 켜십시오. 정기적으로 체인을 업데
고정-조심스럽게. 모바일/데스크탑 클라이언트-비상 롤링 메커니즘이있는 핀 CA/SPKI.
키 스토리지: HSM/KMS/비밀 스토리지의 개인 키; 최소 노출; 로깅 금지.
6) 구성: 연습 프로필
추천 TLS 프로파일 (외부 경계):- 버전: TLS 1. 3 (필수), TLS 1. 2 (폴백).
- TLS 1. 3: 'TLS _ AES _ 128 _ GCM _ Ș256', 'SL _ AES _ 256 _ GCM _ Ș384', 'SL _ CHACHA20 _ POLY1305 _ SHA256'.
- TLS 1. 2: 'ECDHE-ECDSA-AES128-GCM-CHA256', 'ECDHE-SA-AES128-GCM-CHA256' (필요한 경우 + 옵션 AES256/CHACHA20).
- 곡선: X25519, secp256r1.
- 인증서: ECDSA가 선호하는, RSA- 폴백.
- 보안 헤더: '엄격한 전송-보안', 'X-Content-Type-Options', 'X-Frame-Options' (경우에 따라), 'Referrer-Policy'.
- 쿠키: 'Secure', 'HttpOnly', 'SameSite' (설계 별 Lax/Strict).
- 클라이언트 인증서가 필요합니다
- 짧은 TTL 클라이언트 SVID (시간/일), 자동 회전.
- 정책: 누가 누구와 연결할 수 있습니까 (메시 승인을 통해 의도 기반/작업).
7) 성능과 신뢰성
하드웨어 가속: AES-NI/ARMv8 Crypto, AES-NI가없는 CPU에서 ChaCha20-Poly1305를 선호합니다.
세션 재개: TLS 1. 3 장의 티켓; 수명을 생각하십시오 (향수와 안전의 균형).
0-RTT: dempotent queries의 경우에만; 재생 방지 (서버 재생 방지 메커니즘).
밸런서/프록시: 종료 대 통과를 명확하게 선택합니다. 종료시-백엔드로 다시 암호화합니다.
관찰 가능성: ALPN 핸드 셰이크/오류/협상 지표, TLS 백분율 1. 3, 인증서 만료, OCSP 상태.
8) 테스트 및 검증
TLS 프로파일 스캔. 지원되는 버전/스위트/커브 및 HSTS/OCSP의 정기 점검.
부정적인 테스트: 다운 그레이드 금지, 약한 슈트 거부, SNI 없음/유효한 체인 인증서없이 연결 실패.
채널 펜테스트: MITM 시뮬레이션, 모바일 클라이언트의 피닝 검사, 0-RTT 재생 시도.
혼돈 테스트: 인증서 만료/취소, OCSP/CA의 사용 불가.
9) 빈번한 실수와 피하는 방법
TLS가 활성화되었지만 호스트 검증은 없습니다. 우리는 항상 CN/SAN을 확인하고 'InsecureSkipVerify' 를 금지합니다.
혼합 콘텐츠. https 페이지에서 http 리소스를 차단하고 CSP를 사용하십시오.
약한/오래된 버전 및 정장. TLS를 사용하지 않습니 0/1. 1, CBC/RC4/3DES.
내부 재 암호화 부족. 밸런서에서 응용 프로그램으로의 일반 트래픽은 위험합니다.
수명이 긴 인증서. 짧은 TTL과 자동 업데이트를하십시오.
프록시 뒤에 나쁜 SNI/ALPN. TLS 패스/종료로 SNI/ALPN 전송을 수정합니다.
10) 미니 레시피 (구성 조각)
Nginx (전면, TLS 1. 3/1. 2, HSTS, OCSP 스테이플 링):
ssl_protocols TLSv1. 3 TLSv1. 2;
ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519:P-256;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
특사 (서비스, 체계 간 mTLS):
transport_socket:
name: envoy. transport_sockets. tls typed_config:
"@type": type. googleapis. com/envoy. extensions. transport_sockets. tls. v3. DownstreamTlsContext common_tls_context:
tls_params:
tls_minimum_protocol_version: TLSv1_3 validation_context:
trusted_ca: { filename: /etc/tls/ca. crt }
tls_certificates:
certificate_chain: { filename: /etc/tls/tls. crt }
private_key: { filename: /etc/tls/tls. key }
require_client_certificate: true
WireGuard (데이터 간 센터 터널, 개략적으로):
[Interface]
PrivateKey = <priv>
Address = 10. 10. 0. 1/24
[Peer]
PublicKey = <pub>
AllowedIPs = 10. 10. 0. 0/24
Endpoint = gw. example. com:51820
PersistentKeepalive = 25
11) 정책 및 준수
최소 요구 사항: TLS 1. 가능한 경우 3; TLS 1. 2-제한된 스위트 세트.
규정: PCI DSS/금융 부문-약한 버전/스위트 금지; 필수 교체 및 감사.
제로 트러스트 접근 방식: 워크로드 당 아이덴티티, 지속적인 검증 및 서비스 수준 정책.
12) 작동 및 SLO
SLO: 99% 이상의 성공적인 악수, TLS에서 95% 이상의 트래픽. 3, 0% 혼합 콘텐츠.
경고: 인증서 만료 (<14 일), 악수 실패 증가, SL 1 공유 감소. 3, OCSP 스테이플링 오류.
절차: CA/루트의 긴급 교체, 손상된 키의 취소, 0-RTT 비활성화.
13) 점검표
배치하기 전에:- TLS 1이 비활성화되었습니다. 0/1. 1과 약한 스위트, AEAD 및 PFS가 포함되었습니다.
- ALPN 구성 (h2/h3); h2c 금지.
- 공개 도메인의 경우 HSTS가 활성화되어 있으며 내용이 혼합되어 있지 않습니
- 인증서가 자동 업데이트되고 OCSP 스테이플링이 실행 중입니다.
- 내부 채널은 mSL (또는 WireGuard/IPsec 등가) 로 보호됩니다.
- 클라이언트/SDK에 대한 검증 된 호스트/체인 검증.
- 모니터 TLS/ALPN/오류 및 만료 버전.
- 암호화 민첩성 계획 (새 스위트/커브로 번역).
- 정기 채널 펜 테스트 및 구성 리뷰.
14) FAQ
Q: TLS만으로도 주변에 충분합니까?
아뇨 내부 트래픽은 특히 구름과 멀티 임대 중에 암호화 (mSL/터널/메쉬) 해야합니다.
Q: 0-RTT가 필요하십니까?
A: dempotent 요청에 대해 포인트 단위로 사용하십시오. 그렇지 않으면 재생의 위험으로 인해 비활성화됩니다.
Q: 데이터 간 센터에 무엇을 선택해야합니까? IPsec 또는 WireGuard?
A: WireGuard는 더 단순하고 빠르며 IPsec은 성숙하고 널리 지원됩니다. 올바르게 구성 할 때 둘 다 유효합니다.
Q: "이동 중" 웹 후크를 어떻게 보호합니까?
A: 최신 프로필 + 발신자 인증서 확인 (mSL 인 경우) + 페이로드 서명 및 타임 스탬프 확인이있는 HTTPS (Webhook Delivery Guarantees, 요청 서명 및 검증 참조).
- "휴식 암호화 중"
- "인증 및 승인"
- "서명 및 확인 요청"
- "S2S 인증"
- "키 관리 및 회전"