ALB/NLBが ポスト量子鍵共有 (Post-Quantum Key Exchange)をサポートしました。
2025年11月、Application Load Balancer (ALB) および Network Load Balancer (NLB) において、ポスト量子鍵共有 (Post-Quantum Key Exchange) をサポートするアップデートがありました。
量子コンピュータの実用化はまだ先とされていますが、現在の暗号化された通信データを盗聴・保存、将来高性能な量子コンピュータが登場した際に解読する、HNDL (Harvest Now, Decrypt Later) / SNDL (Store Now, Decrypt Later)攻撃がリスクとなるとされています。
ALB、NLB が 量子コンピュータでも解読が困難とされる新しい暗号方式(ポスト量子暗号)をサポートしたことで、将来データが解読されるリスクに備えることが可能になりました。
今回は、ポスト量子暗号をサポートした ALBとNLBを Cloudformationで作成し、実際にブラウザからの接続で利用できる事を試す機会がありましたので、紹介します。
検証環境
構成図

ALB
ポスト量子暗号サポートを示す「PQ」を含む 「ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09」をセキュリティポリシーとして設定しました。
Listener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref LoadBalancer
Port: 443
Protocol: HTTPS
Certificates:
- CertificateArn: !Ref CertificateArn
SslPolicy: ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09
- マネジメントコンソールで「PQ」サポート、ポスト量子TLSの一覧から(推奨)と案内されていた 「ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09」を利用しました。


ACM (AWS Certificate Manager)
TLS/SSL 証明書は、キーアルゴリズム 「ECDSA P 256」 で作成したものを利用しました。
CloudFormation
以下のテンプレートを使用して、検証用ALBとEC2を構築しました。
検証環境作成テンプレート (クリックして展開)
AWSTemplateFormatVersion: '2010-09-09'
Description: 'ALB Post-Quantum TLS Test Environment (ARM64/T4g)'
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
Description: Default VPC ID
SubnetIds:
Type: List<AWS::EC2::Subnet::Id>
Description: Select at least 2 Public Subnets
CertificateArn:
Type: String
Description: ACM Certificate ARN for HTTPS Listener
Default: arn:aws:acm:ap-northeast-1:********:certificate/****-***-***-***-******
AllowedPattern: "arn:aws:acm:.*"
LatestAmiId:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64
Resources:
# Security Group
ALBSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow HTTPS
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
EC2SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow HTTP from ALB
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
SourceSecurityGroupId: !Ref ALBSecurityGroup
# EC2 Instance
TargetInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref LatestAmiId
InstanceType: t4g.nano
SecurityGroupIds:
- !Ref EC2SecurityGroup
SubnetId: !Select [0, !Ref SubnetIds]
UserData:
Fn::Base64: !Sub |
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Post-Quantum TLS Test (ARM)</h1>" > /var/www/html/index.html
Tags:
- Key: Name
Value: ALB-PQ-Target-ARM
# Target Group
TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: alb-pq-test-tg
Port: 80
Protocol: HTTP
VpcId: !Ref VpcId
Targets:
- Id: !Ref TargetInstance
# ALB
LoadBalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: alb-pq-test
Scheme: internet-facing
SecurityGroups:
- !Ref ALBSecurityGroup
Subnets: !Ref SubnetIds
# HTTPS Listener with PQ Policy
Listener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref LoadBalancer
Port: 443
Protocol: HTTPS
Certificates:
- CertificateArn: !Ref CertificateArn
SslPolicy: ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09
DefaultActions:
- Type: forward
TargetGroupArn: !Ref TargetGroup
接続確認
Chrome
Google Chrome、バージョン 142.0.7444.176(Official Build) (arm64)の開発者ツールを利用して、確認を試みました。
Connection - secure connection settings の欄で、 MLKEM768: NISTが標準化した耐量子暗号アルゴリズム(Module-Lattice-Based Key-Encapsulation Mechanism, 旧Kyber)が利用されている事が確認できました。

SSL Labs
SSL LabsのSSL Server Test でも確認を試みました。

2025年11月時点の SSL Server Testは、耐量子暗号アルゴリズム(PQ)を未サポート、PQの接続は確認できませんでした。

しかし、X25519(従来の楕円曲線暗号)を利用した接続については成功しており、その評価も「A」。PQをサポートしない既存のクライアントからも問題なくアクセスできる事は確認できました。
まとめ
ALB/NLBのセキュリティポリシーを変更するだけで、HNDL/SNDL攻撃への対策が可能になりました。 金融、医療、公共システムなど、情報の機密性を数年〜数十年単位で守る必要があるシステムでは、導入を検討する価値があると思われます。
ハイブリッド鍵共有を利用することによるパフォーマンスへの影響は、TLSハンドシェイク時のメッセージサイズが1KB程度増加する点のみです。利用される ML-KEM(格子暗号)は、従来のRSAや楕円曲線暗号に比べて計算自体は非常に高速であり、ELBやブラウザのCPUリソース消費への影響は微小とされています。
今後、HNDL/ SNDL 攻撃に備えた対策が求められた場合、今回サポートされたポスト量子鍵共有(PQ)ポリシーを、ALB/NLBで利用する事をご検討ください。







