過境加密
加密In Transit
1)控制的定義和界限
Transit加密是在網絡傳輸的整個路徑(瀏覽器↔服務器,服務↔服務,代理商↔經紀人,基地↔應用程序,數據中心↔數據中心)中保護數據,以便被動攔截和對鏈路的主動攻擊不會泄露內容並且不允許在不進行檢測的情況下對其進行修改。
涵蓋的內容包括:公共和私有API(HTTP/HTTPS,gRPC),流媒體和經紀人(Kafka,NATS,RabbitMQ),WebSocket,網絡基礎和緩存,群集內的服務流量,VPN/跨數據中心和雲端,DNS查詢、移動/物聯網客戶端。
我們不能完全覆蓋的內容是:端點攻擊(主機/瀏覽器損害)、應用程序漏洞、登錄名/轉儲泄漏。這可以通過單獨的控制(A&A,權利最小化,加密恢復,安全編寫)來解決。
2)威脅模式和目標
風險:攔截/變換流量(MITM),協議/密碼劫持,偽造證書/SA,密鑰泄漏,SNI/元數據攻擊,混合內容,不正確的TLS在平衡器上的破壞,不安全的服務間連接。
目標是:1.隱私+具有加密身份驗證的完整性。
2.反對Downgrade(嚴格的政治和config)。
3.各方的識別(如有必要,服務器是相互的)。
4.管理的證書/密鑰生命周期和審核。
5.不影響安全性的性能配置文件。
3)基本原則
默認情況下,TLS到處都是。外部和內部流量是密碼。
現代版本。TLS 1.3作為標準;TLS 1.2-只有嚴格的政策。禁用1。0/1.1.
帶有PFS的AEAD密碼。AES-GCM或ChaCha20-Poly1305;通過(EC)DHE的PFS。
曲線/kay挖掘。X25519(最好是)或secp 256r1(P-256)。RSA密鑰≥2048,優於ECDSA(P-256)。
mTLS在信任不足的地方。服務間渠道,admin-API,經紀人,基地-通過相互身份驗證。
HSTS for Web。用於公共域的強制HTTPS+preload。
「Shifruem-i-on-shifruem」是有意識的。外圍的TLS終端+對後端或端到端的passthrough加密-根據威脅模型進行選擇。
Crypto-agility.能夠以零停機時間更改曲線/套件/版本。
4)協議棧和腳本
4.1 HTTP/2, HTTP/3 (QUIC), gRPC, WebSocket
ALPN:HTTP/2為h2,HTTP/3為h3;禁止h2c(沒有TLS)。
HTTP/3/QUIC:減少隱性、內聯0-RTT和互聯移動;0-RTT有選擇地解決(重置風險)。
gRPC:在h2/h3之上;必定TLS,可選mTLS+per-RPC授權。
WebSocket:僅限wss://;在代理/平衡器中-正確的域升級和TLS固定。
4.2服務間流量和服務
Sidecar模型(Istio/Linkerd等)。自動mTLS,權限策略,證書輪換。
SPIFFE/SPIRE.分散服務身份(SPIFFE ID),SVID證書,TTL短。
TLS參數集中。最大限度地減少服務代碼中configs的差異。
4.3經紀人/流媒體/隊列
Kafka/NATS/RabbitMQ:kliyent↔broker和broker↔broker的TLS;如果可能的話-mTLS。
TLS之上的SASL:如果mTLS不可行,則通過令牌/登錄進行身份驗證,但通道進行加密。
ACL和主題授權。加密≠訪問控制。
4.4個數據庫和緩存
PostgreSQL/MySQL/SQL Server:啟用TLS,CN/SAN驗證,pin SA/root。
Redis/Memcached:使用stunnel/TLS redis;禁止銷售中的平原流量。
4.5網絡/隧道
在數據中心/雲之間:IPsec(IKEv2)或WireGuard(現代原語集)。
管理訪問:具有現代KECH/密碼的 SSH;密碼禁令,只有/SSO密鑰。
4.6個DNS和支持協議
TTPS上的DNS(DoH )/TLS上的DNS(DoT)用於客戶端,並在可能的情況下用於群集內部。
禁用混合內容。https://頁面上沒有任何內容。
5)證書、PKI和密鑰管理
PKI模型:用於外部域-公共CA;對於內部流量-CA或SPIRE-CA。
自動化:ACME/Cert-Manager for Kubernetes,短TTL,自動旋轉。
OCSP stapling и CRL.在前部包括滑動;定期更新鏈條。
Pinning-謹慎。在移動/臺式機客戶端中,帶有緊急啟動引擎的pin CA/SPKI。
密鑰存儲:HSM/KMS/秘密存儲中的私有密鑰;最少曝光;禁止拼寫。
6)配置: 實用配置文件
推薦的TLS配置文件(外部周長):- 版本:TLS 1。3(必修),TLS 1.2 (fallback).
- TLS 1.3: `TLS_AES_128_GCM_SHA256`, `TLS_AES_256_GCM_SHA384`, `TLS_CHACHA20_POLY1305_SHA256`.
- TLS 1.2:「ECDHE-ECDSA-AES 128-GCM-SHA 256」,「ECDHE-RSA-AES 128-GCM-SHA 256」(必要時為+變體AES256/CHACHA20)。
- 曲線:X25519, secp 256r1.
- 證書:ECDSA,最好是RSA-fallback。
- 安全標題:「嚴格運輸安全」,「X-Content-Type-Options」,「X-Frame-Options」(按案例),「Referrer-Policy」。
- Cookie:「Secure」,「HttpOnly」,「SameSite」(設計Lax/Strict)。
- 客戶端證書是必需的。
- 客戶端SVID的短TTL(小時/天),自動旋轉。
- 策略:誰可以連接到誰(基於intent/通過 mesh授權工作).
7)性能和可靠性
硬件加速:AES-NI/ARMv8 Crypto,首選ChaCha20-Poly1305沒有AES-NI的CPU。
Session resumption: TLS 1.3 tickets;思考生命周期(珀斯與安全之間的平衡)。
0-RTT:僅限於等效請求;保護自己免受重播(服務器反重播機制)。
平衡器/代理人:明確選擇終端vs passthrough;終止-重新加密到後端。
觀察力:ALPN握手/錯誤/談判指標,TLS 1%。3、證書到期、OCSP狀態。
8)測試和驗證
TLS配置文件掃描。定期檢查受支持的版本/繁文/曲線和HSTS/OCSP。
消極測試:禁止降級,拒絕弱肉汁,拒絕沒有SNI/沒有有效鏈證書的連接。
Pentest通道:MITM模擬,移動客戶端的打孔檢查,0-RTT中繼嘗試。
混沌測試:證書到期/撤銷,OCSP/CA不可用。
9)頻繁的錯誤以及如何避免錯誤
已啟用TLS,但沒有主機驗證。我們總是檢查CN/SAN,禁止「InsecureSkipVerify」。
混合內容。在https頁面上阻止http資源,使用CSP。
弱/過時的版本和套餐。禁用TLS 1。0/1.1, CBC/RC4/3DES.
內部沒有重新加密。從平衡器到應用程序的平原流量是風險。
長壽證書。做短的TTL和自動更新。
不正確的SNI/ALPN代理。在TLS pass tru/termination中正確傳輸SNI/ALPN。
10)迷你食譜(配置片段)
Nginx(前線,TLS 1。3/1.2, HSTS, OCSP stapling):
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;
Envoy(服務之間的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-具有有限的suits集。
監管性:PCI DSS/finsector-禁止弱版本/套裝;強制輪換和審計。
零信任方法:每個工作負載的身份,持續驗證和服務級別的政策。
12)操作和SLO
SLO:TLS 1上成功握手的≥99%,流量的≥95%。3,0%混合內容。
Alerts:證書到期(<14天),握手故障增加,TLS 1份額下降。3、OCSP stapling錯誤。
過程:緊急更換SA/根,召回受損密鑰,禁用0-RTT。
13)支票單
在發布之前:- 已禁用TLS 1。0/1.1和弱小的suits,包括AEAD和PFS。
- ALPN設置(h2/h3);禁止h2c。
- HSTS已啟用(用於公共領域),沒有混合內容。
- 自動更新證書,OCSP stapling運行。
- 內部通道受到mTLS(或等效的WireGuard/IPsec)的保護。
- 已驗證客戶端/SDK中的主機/鏈驗證。
- 監視TLS/ALPN版本/錯誤和演示。
- crypto-agility計劃(翻譯成新的套件/曲線)。
- 偶爾的運河五角星和configs的咆哮。
14) FAQ
問:TLS是否僅在外圍就足夠了?
哦不內部流量也必須加密(mTLS/tunnels/mesh),尤其是在雲層和多範圍時。
問:需要0-RTT嗎?
答:針對偶數請求逐點打開,否則由於重播風險而關閉。
問: 如何選擇數據中心?IPsec還是WireGuard?
答:WireGuard更簡單,更快,IPsec是成熟且廣泛支持的。如果配置正確,兩者都是有效的。
問:如何保護webhooks「在路上」?
答:具有現代配置文件的HTTPS+驗證發送者證書(如果mTLS)+有效載荷簽名和計時器驗證(請參閱Webhook交付保證,簽名和查詢驗證)。
- 「At Rest加密」
- 「身份驗證和授權」
- ";請求的簽字和核實";
- 「S2S認證」
- 「密鑰管理和旋轉」