1

ホテルの金庫でPFSを理解する

🏨 高級ホテルの貴重品金庫システム

PFS(完全前方秘匿性)は「使い捨て鍵システム」です。
これを高級ホテルの貴重品金庫で例えてみましょう。

❌ PFSなし

従来のマスターキー方式

🔐

1本のマスターキー

全ての金庫を開ける
不変のマスターキー

シナリオ: 泥棒が過去1年間、宿泊客が金庫に何を入れたか監視カメラで録画していた。ある日マスターキーを盗むことに成功。

😱 結果: 過去1年分の全ての金庫の中身が分かってしまう!
✅ PFSあり

使い捨て鍵方式(ECDHE)

🔑✨🔑✨🔑

毎回新しい使い捨て鍵

チェックインごとに
新しい鍵を発行・破棄

シナリオ: 同じく泥棒が1年間録画。今日使われる鍵を盗むことに成功。しかし…

😌 結果: 過去の鍵は全て破棄済み。録画した映像は解読不能!
🔄 PFS の仕組み:毎回新しい鍵を作る
👤
STEP 1
クライアント接続
🎲
STEP 2
一時的な鍵ペア生成
🤝
STEP 3
セッション鍵を共有
🔒
STEP 4
暗号化通信
🗑️
STEP 5
鍵を破棄
2

PFS をサポートする暗号スイート

ECDHE
Elliptic Curve Diffie-Hellman Ephemeral

楕円曲線暗号を使用した高速なPFS。
現在最も推奨される暗号鍵交換方式です。

✓ 高速 ✓ 高セキュリティ ✓ 推奨
🔧
DHE
Diffie-Hellman Ephemeral

従来型のDiffie-Hellman鍵交換のPFS版。
ECDHEより計算負荷が高いですが互換性があります。

✓ 高互換性 ✓ レガシー対応
📋 ALB で使用可能な主要 PFS 暗号スイート
暗号スイート名 PFS TLS 強度 用途
TLS_AES_128_GCM_SHA256 ✓ PFS 1.3
最新・推奨
TLS_AES_256_GCM_SHA384 ✓ PFS 1.3
最高セキュリティ
TLS_CHACHA20_POLY1305_SHA256 ✓ PFS 1.3
モバイル向け
ECDHE-RSA-AES256-GCM-SHA384 ✓ PFS 1.2
TLS1.2 推奨
ECDHE-RSA-AES128-GCM-SHA256 ✓ PFS 1.2
バランス型
ECDHE-ECDSA-AES256-GCM-SHA384 ✓ PFS 1.2
ECDSA証明書用

💡 ポイント: TLS 1.3 では全ての暗号スイートがデフォルトでPFSをサポート。TLS 1.2 では ECDHE_* または DHE_* で始まる暗号スイートがPFS対応です。

3

PFS 対応セキュリティポリシー

AWS はPFS(Forward Secrecy)に対応した事前定義セキュリティポリシーを提供しています。
ポリシー名に FS が含まれるものは明示的にPFSをサポートし、 TLS13 系のポリシーは標準でPFSに対応しています。

ELBSecurityPolicy-FS-1-2-Res-2020-10
✓ PFS 専用 TLS 1.2 ECDHE only

最も厳格なPFSポリシー。ECDHE暗号スイートのみを許可し、非PFS暗号を完全に排除。

ELBSecurityPolicy-FS-1-2-2019-08
✓ PFS TLS 1.2 SHA256+

TLS 1.2のみでPFSを強制。SHA256以上のハッシュアルゴリズムを使用。

ELBSecurityPolicy-FS-1-1-2019-08
✓ PFS TLS 1.2 TLS 1.1

TLS 1.1/1.2クライアント向けのPFSポリシー。レガシーシステムとの互換性を維持しつつPFSを確保。

ELBSecurityPolicy-2016-08
デフォルト TLS 1.0-1.2 ⚠️ 一部非PFS

CLIやCloudFormationのデフォルトポリシー。互換性重視だが、非PFS暗号も含まれるため注意が必要。

4

PFS の設定方法

AWS CLI CloudFormation 確認コマンド
AWS CLI
# 新規リスナー作成時にPFS対応ポリシーを指定
aws elbv2 create-listener \
  --load-balancer-arn "arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/my-alb/abc123" \
  --protocol HTTPS \
  --port 443 \
  --certificates CertificateArn="arn:aws:acm:ap-northeast-1:123456789012:certificate/xyz789" \
  --ssl-policy "ELBSecurityPolicy-TLS13-1-2-Res-2021-06" \
  --default-actions Type=forward,TargetGroupArn="arn:aws:..."

# 既存リスナーのポリシーを変更
aws elbv2 modify-listener \
  --listener-arn "arn:aws:elasticloadbalancing:..." \
  --ssl-policy "ELBSecurityPolicy-FS-1-2-Res-2020-10"
CloudFormation
HTTPSListener:
  Type: AWS::ElasticLoadBalancingV2::Listener
  Properties:
    LoadBalancerArn: !Ref ApplicationLoadBalancer
    Protocol: HTTPS
    Port: 443
    Certificates:
      - CertificateArn: !Ref SSLCertificateArn
    # ✅ PFS対応ポリシーを指定
    SslPolicy: "ELBSecurityPolicy-TLS13-1-2-Res-2021-06"
    DefaultActions:
      - Type: forward
        TargetGroupArn: !Ref TargetGroup
確認コマンド
# 現在のセキュリティポリシーを確認
aws elbv2 describe-listeners \
  --load-balancer-arn "arn:aws:elasticloadbalancing:..." \
  --query 'Listeners[*].[ListenerArn,SslPolicy]' \
  --output table

# ポリシーで使用可能な暗号スイートを確認
aws elbv2 describe-ssl-policies \
  --names "ELBSecurityPolicy-TLS13-1-2-Res-2021-06" \
  --query 'SslPolicies[0].Ciphers[*].Name'

# OpenSSL でPFSを確認(外部から)
openssl s_client -connect your-alb.elb.amazonaws.com:443 2>/dev/null | grep -E "Cipher|TLS"
5

PFS 設定のベストプラクティス

推奨事項
  • TLS 1.3 対応ポリシーを優先使用
  • FS(Forward Secrecy)を名前に含むポリシーを選択
  • 定期的に最新のセキュリティポリシーに更新
  • Server Order Preference を有効化
  • ECDHE 暗号スイートを優先順位上位に
  • セキュリティ監査で暗号強度を定期確認
避けるべきこと
  • TLS 1.0/1.1 の使用(非推奨)
  • RSA鍵交換のみの暗号スイート
  • ELBSecurityPolicy-2016-08 をそのまま使用
  • CBC モードの暗号スイート(脆弱性あり)
  • SHA-1 ハッシュアルゴリズム
  • 長期間セキュリティポリシーを更新しない
6

よくある質問

Q. PFS を有効にするとパフォーマンスに影響しますか?

ECDHE暗号スイートは非常に効率的で、実際のパフォーマンス影響はほとんどありません。TLS 1.3 ではハンドシェイクが最適化され、むしろ接続が高速になるケースもあります。セキュリティとパフォーマンスのトレードオフを心配する必要はほぼありません。

Q. 古いブラウザやクライアントとの互換性は大丈夫ですか?

主要なモダンブラウザ(Chrome、Firefox、Safari、Edge)はすべてECDHE/TLS 1.3 に対応しています。Java 7以降、iOS 9以降、Android 4.4以降もサポートしています。レガシーシステムが必要な場合は ELBSecurityPolicy-FS-1-1-2019-08 を使用することでTLS 1.1クライアントにも対応できます。

Q. ALB でカスタムセキュリティポリシーは作成できますか?

いいえ、Application Load Balancer ではカスタムセキュリティポリシーの作成はサポートされていません。AWS が提供する事前定義ポリシーの中から選択する必要があります。Classic Load Balancer のみカスタムポリシーの作成が可能です。

Q. ポスト量子暗号(PQ)対応ポリシーを今すぐ使うべきですか?

将来の量子コンピュータによる攻撃に備えたい場合は、 ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09 の採用を検討してください。このポリシーは従来のTLS 1.2/1.3 クライアントとも互換性があり、PQ-TLS対応クライアントではハイブリッド鍵交換を使用します。「今から暗号化しておいて、後で量子コンピュータで解読する」攻撃への対策として有効です。

Created by SSuzuki1063

AWS SAP Learning Resources