暗号化とAPI保護:TLS、 HSTS、 PFS、シークレット回転
1)脅威の画像とターゲット
MitM攻撃下のAPI、トラフィック傍受、ダウングレード攻撃、トークンスプーフィング、キーリーク、長寿命の秘密の乱用。保護の目的:- 機密性と完全性(TLS 1。3+強力な暗号)。
- ダウングレード/ストリッピング(HSTS、禁止バージョン/暗号)に対する保護。
- 妥協の損傷(PFS、短いTTL、急速な回転)を最小にします。
- 信頼できるクライアント/サービス認証(mTLS/トークン)とトレーサビリティ。
2)基盤としてのTLS(サーバーおよびサービス・ツー・サービス)
バージョンと暗号:- デフォルトはTLS 1です。3;TLS 1を許可します。2互換性のためにのみ。1を無効にします。1/1.0.
- 優先暗号化TLS 1。3:
- 'TLS_AES_128_GCM_SHA256'、 'TLS_AES_256_GCM_SHA384'、 'TLS_CHACHA20_POLY1305_SHA256'。
- TLSの場合1。2: AES-GCM/ChaCha20およびECDSA/RSA署名を持つECDHEのみ(例:'ECDHE-ECDSA-AES128-GCM-SHA256')。
- サーバーキー:ECDSA P-256/P-384(より速く、より短い)またはRSA 2048+/3072。
- mTLSのクライアントキー:ECDSA P-256;あなた自身のCAまたは支払のHSM/KMSによる発行。
- OCSPホチキスを有効にします(好ましくはMust-StapleフラグとALPN (HTTP/2/3))。
- 一時的な交換(ECDHE)によって提供される-サーバーキーが漏洩したとしても、過去のセッションは復号できません。
- 静的なDH/RSA鍵合意を強制します。
- ECH (Encrypted Client Hello)は、フロント/CDNでサポートされている場合、SNIを非表示にします。
- 強力な暗号でのみHTTP/2/3します。保護されていないHTTPを禁止し、HTTPSにリダイレクトします。
3) HSTS対TLSストリッピング
ルートドメインおよびサブドメインでHTTP Strict Transport Securityを有効にする:
Strict-Transport-Security: max-age=63072000;includeSubDomains;プレロードHSTSプリロードリストにドメインを配置します。
発行前の正確さに注意してください(ロールバックは困難です)。
4)相互認証: mTLSおよび/またはトークン
マイクロサービス/内部API間のmTLS:双方向証明書、サービスメッシュによる自動回転(Istio/Linkerd)または独自のPKI。
APIクライアント(モバイル/パートナー統合):トークン(OAuth2/OIDC、 JWT)、高リスクのためのオプションのmTLS。
パブリックフロントの場合:デバイス/DPoPバインディングを持つTLS+短命のOAuth2/OIDCトークン。
5)証明書およびライフサイクル管理
ACMEオートメーション(例えば、Let's Encrypt/Organizational CA)は有効期限の30日前に自動更新されます。
証明書の寿命が短い(≤ 90日)+期限、アラート、カナリア配備パケットの監視。
集中PKI:ルート/中間CA、 CRL/OCSP、監査リリースと失効。
nginx(フラグメント)の例:nginx ssl_protocols TLSv1。3 TLSv1。2;
   ;
 に します。
   ;
 に します。 に します。
add_header Strict-Transport-Security "max-age=63072000;includeSubDomains;preload"常に;6)秘密の回転: 原則とパターン
回転目標:リークの「爆発半径」を制限し、乱用時間を短縮し、シームレスなリリースを保証します。
基本的なルール:- シークレットマネージャ(KMS/Vault/Cloud SM)にのみシークレットを格納します。Git/imagesに秘密はありません。
- 短いTTLと自動回転:署名キー、データベースパスワード、プロバイダのAPIキー。
- デュアルキーウィンドウ:ロール期間中、古いキーと新しいキーが同時にアクティブになります。
- バージョン管理+キッド(JWT/JWKS用)、古いトークンを検証するための「猶予」ウィンドウ。
- JWTキー(署名/暗号化)、ウェブフックとコールバックのHMAC秘密、パスワード/データベースアカウント、キャッシュ(Redis)、 CI/CDトークン、プロバイダ秘密(KYC/AML、支払い、SMS/e-mail)、 SSH-自動化鍵だよ。
予定外のローテーションのトリガー:漏洩の疑い、アクセス権を持つ従業員の解雇、サプライヤーの変更、規制当局の要件。
7) JWT/JWKS: 安全な役割のオーバーレイ
現在および将来のキーでJWKSエンドポイントを公開します('kid'が必要です)。
回転のプロシージャ:1.新しいキーを生成→"second'キーとして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)周囲の中の輸送の保護
「内部ネットワーク」を信頼しないでください:どこでもTLS/mTLS(ゼロトラスト)。
サービスメッシュは、証明書、再起動および回転、オブザビリティ(デフォルトではmTLS)を自動化します。
TLS終端の最小化:エッジ+暗号化された東西のみ、またはエンドツーエンドの暗号化。
10) TLSセキュリティポリシーに対するAPI
レート制限/DoS保護、Webhook署名の検証(HMACと秘密回転)。
Content-Security-Policy/Referrer-Policy/X-Content-Type-Options фронта。
重要なエンドポイント(支払い、管理パネル)のmTLS、パートナーによるIP allow-list。
再生保護:タイムスタンプ+署名されたリクエストでnonce、ウィンドウは5分以内。
11)監視およびテスト
TLSの可視性:メトリックのバージョン/暗号、ダウングレードの試みに対するアラート、ハンドシェイクの失敗の増加。
スキャナー(CI/CDおよび定期的に販売):サポートされている暗号、証明書、HSTS、 OCSPのチェック。
カオス/DR演習:証明書の有効期限、シークレットマネージャドロップ、署名キーの妥協-反応計画をチェックします。
12)応答のプロシージャ
重要な妥協点:JWKSからの即時証明書失効/キー除去、バックアップへの逆転、強制トークン再生。
更新なしの有効期限:一時的な劣化(内部トラフィックのみ)、証明書の自動再インストール。
インシデントレポート:タイムライン、影響を受ける被験者、技術。部品、是正措置。
13)クイックチェックチェックリスト(prod-ready)
- TLS 1のみ。3 (+ 1.2 legasi)、暗号の厳格なリスト。
- HSTS-'preload'、 OCSP stapling、 ALPN。
- PFSのためのECDHE;ECDSA P-256/384またはRSA 3072。
- クラスタ内のmTLS/重要なサービス間。
- JWKS+キッド、短いTTLトークン、回転計画。
- 秘密-KMS/Vaultでのみ、データベース/プロバイダの自動回転。
- 証明書(ACME)の自動更新、30日の警報。
- セキュリティヘッダと脆弱な暗号のCI/CDチェック。
- 文書化されたrunbook'と:回転、リコール、インシデント。
履歴書のサマリー
信頼できるAPI保護はTLS 1の組み合わせです。必須の最低および成熟したキーおよび秘密管理プロセスとして3+HSTS+PFS。サービス間のmTLSの追加、KMS/Vault/meshによるリリース/ローテーションの自動化、キー変更時の短いTTLとダブルウィンドウの保持-製品の可用性と速度を損なうことなく、漏洩した秘密の傍受、ダウングレード、乱用のリスクを最小限に抑えます。
