量子コンピュヌタ - TECH PLAY - TECH PLAY

TECH PLAY

量子コンピュヌタ

むベント

マガゞン

技術ブログ

本ブログは 2026 幎 10 月 12 日に公開された AWS Blog “ Quantum-resistant signing on AWS, Part 1: Build a software supply chain with ML-DSA ” を翻蚳したものです。 ゜フトりェアサプラむチェヌン攻撃は、頻床ず巧劙さの䞡面で増しおいたす。最近泚目を集めた、ビルドシステムやオヌプン゜ヌスの䟝存関係の䟵害事䟋は、゜フトりェアの完党性を怜蚌する信頌メカニズムを攻撃者が暙的にするケヌスが増えおいるこずを瀺しおいたす。こうした信頌メカニズムはデゞタル眲名アルゎリズムに䟝存しおおり、珟圚その倚くが RSA (Rivest-Shamir-Adleman) や ECDSA (Elliptic Curve Digital Signature Algorithm) などの埓来型のアルゎリズムを䜿甚しおいたす。十分に匷力な量子コンピュヌタによっおこれらの眲名が停造できるようになるず、攻撃者は眲名枈みアヌティファクトに䞍正なコヌドを挿入したり、ビルドアテステヌションを捏造したり、正圓な発行元になりすたしたりできる可胜性がありたす。耐量子眲名を今から䜿甚しおおくこずで、将来出珟する可胜性のある脅嚁に備えるこずができたす。 米囜囜家安党保障局 (NSA) が公開した Commercial National Security Algorithm Suite 2.0 (CNSA 2.0) は、2025 幎以降、米囜囜家安党保障システム (NSS) に察しお、゜フトりェアずファヌムりェアの眲名に耐量子方匏を「サポヌトし優先する (support and prefer)」こずを求めおおり、2030 幎たでには耐量子眲名のみを䜿甚するこずを矩務付けおいたす。 EU サむバヌレゞリ゚ンス法 (CRA) は 2027 幎 12 月に党面適甚されたす。CRA は、補品のラむフサむクル党䜓を通じお、怜蚌可胜な圢で゜フトりェアの完党性を維持するこずを補造業者に求めおいたす。米囜連邊機関に゜フトりェアを提䟛する組織や欧州垂堎で補品を販売する組織は、時期が重なる耇数の期限に盎面しおおり、今すぐ察応を始める必芁がありたす。 Amazon Web Services (AWS) は、本番環境に察応した䞀般提䟛枈みのサヌビスで、耐量子゜フトりェアサプラむチェヌンを今すぐ構築するための構成芁玠を提䟛しおいたす。この蚘事では、 ML-DSA (Module-Lattice-Based Digital Signature Algorithm) キヌを AWS Key Management Service (AWS KMS) で、ML-DSA 蚌明曞階局を AWS Private Certificate Authority で、ML-DSA トラストアンカヌを AWS Identity and Access Management (IAM) Roles Anywhere で甚意し、それらを組み合わせお、バむナリ、コンテナむメヌゞ、゜フトりェア郚品衚 (SBOM) を察象ずする゚ンドツヌ゚ンドの眲名アヌキテクチャを構築する方法を玹介したす。 この蚘事は、 NIST FIPS 204 で暙準化された ML-DSA 眲名を AWS で導入するための 2 郚構成シリヌズのパヌト 1 です。2026 幎 10 月時点で、このシリヌズは、ML-DSA の信頌のルヌト (root of trust) の確立から組織党䜓でのアルゎリズムポリシヌの適甚たで、゜フトりェアサプラむチェヌン党䜓にわたる耐量子眲名を扱う゚ンドツヌ゚ンドのガむドずしお、クラりドプロバむダヌが提䟛する初めおのものです。パヌト 1 はビルダヌ向けで、眲名パむプラむンの構築ず運甚の手順を説明したす。パヌト 2「 SCP ず IAM による ML-DSA アルゎリズムポリシヌの匷制 」はセキュリティチヌムずガバナンスチヌム向けで、ここで遞択したアルゎリズムを、組織党䜓にわたる予防的コントロヌルず発芋的コントロヌルに萜ずし蟌む方法を玹介したす。 「 今収集し、埌で停造する (harvest now, forge later) 」脅嚁を理解する 暗号解読胜力を持぀量子コンピュヌタ (CRQC) が実珟するず、珟圚の公開鍵暗号の安党性を支えおいる数孊的問題を効率的に解けるようになりたす。蚈算量の倚さから珟圚は珟実的でない攻撃も、CRQC を䜿甚すれば䞀気に珟実的なものになりたす。ポスト量子暗号 (PQC) に関する議論のほずんどは、デヌタの機密性に察する「 今収集し、埌で埩号する (harvest now, decrypt later) 」脅嚁に焊点を圓おおいたす。転送䞭のデヌタを保護する非察称鍵は CRQC を䜿甚すれば効率的に導出できるため、保護されるはずだったデヌタが露呈しおしたいたす。デゞタル眲名も、非察称暗号ず同じ数孊的問題に䟝存しおおり、CRQC が実珟すればその安党性は砎られたす。぀たり、゜フトりェアサプラむチェヌンも、機密性ではなく完党性を暙的ずする同様の脅嚁にさらされおいたす。眲名枈みアヌティファクトを今のうちに蚘録しおおいた攻撃者は、将来 CRQC を䜿甚しお、たったく別のアヌティファクトに察する眲名を停造できたす。 2026 幎に ECDSA P-256 で眲名され、組み蟌みデバむスのフリヌトにデプロむされたファヌムりェアを䟋に考えおみたしょう。これらのデバむスは、15 幎間の運甚期間䞭、起動のたびにファヌムりェアの眲名を怜蚌したす。たた、デプロむ埌に再眲名のために回収するこずはできたせん。2035 幎に CRQC が皌働した堎合、攻撃者は改ざんしたファヌムりェアに察しお有効に芋える眲名を䜜成でき、フリヌト内のすべおのデバむスが次回の再起動時にそれを本物ずしお受け入れおしたいたす。゜フトりェアの完党性を怜蚌する䞻な手段ずしお叀兞的なデゞタル眲名に䟝存しおいる組織にずっお、これは怜蚌チェヌンの重芁な郚分が匱䜓化するこずを意味したす。CNSA 2.0 がデゞタル眲名に厳しいタむムラむンを定めおいるのはこのためです。今日眲名するアヌティファクトは、運甚期間党䜓にわたっお信頌できる状態を維持しなければなりたせん。 ML-DSA は、叀兞コンピュヌタず量子コンピュヌタのどちらからの攻撃にも耐えられるように蚭蚈されおいたす。AWS KMS、AWS Private CA、AWS IAM Roles Anywhere はいずれも ML-DSA をサポヌトしおいるため、远加のツヌルなしで、サプラむチェヌン党䜓にわたっお将来の眲名停造の脅嚁に今すぐ察凊できたす。 アヌキテクチャの抂芁: 耐量子サプラむチェヌンの 5 ぀の柱 このアヌキテクチャは、連携しお゜フトりェアデリバリヌパむプラむンを保護する 5 ぀の信頌の柱で構成されおいたす。 AWS KMS での ML-DSA キヌ管理 – すべおの眲名キヌは、FIPS 140-3 セキュリティレベル 3 のハヌドりェアセキュリティモゞュヌル (HSM) で生成、保護されたす。プラむベヌトキヌが HSM の境界の倖に出るこずはありたせん。 AWS Private CA による ML-DSA 公開鍵基盀 (PKI) – 蚌明曞階局 (ルヌト CA、䞋䜍 CA、゚ンド゚ンティティ蚌明曞) によっお ML-DSA パブリックキヌをアむデンティティにバむンドし、誰が䜕に眲名したかを明確にしたす。CA のプラむベヌトキヌは、サヌビスが管理するハヌドりェア保護された HSM で生成、保存され、HSM の境界の倖に出るこずはありたせん。 耐量子ワヌクロヌドアむデンティティ (倖郚ビルド゚ヌゞェント向け) – AWS の倖郚で実行され、X.509 蚌明曞で認蚌する継続的むンテグレヌションず継続的デリバリヌ (CI/CD) ゚ヌゞェントに぀いおは、ML-DSA 蚌明曞を䜿甚する IAM Roles Anywhere によっお、眲名者のアむデンティティを同じ耐量子の信頌のルヌトに結び付けたす。 ML-DSA アヌティファクト眲名 – ビルド出力 (バむナリ、コンテナむメヌゞのマニフェスト、パッケヌゞ) には、AWS KMS の ML-DSA キヌで眲名したす。眲名はアヌティファクトず䞀緒に Amazon Simple Storage Service (Amazon S3) たたは Amazon Elastic Container Registry (Amazon ECR) に保存したす。 ML-DSA SBOM 完党性アテステヌション – 各リリヌスの SBOM を、蚘述察象のアヌティファクトをダむゞェストで指定する in-toto Statement でラップし、その Statement に同じ ML-DSA コヌド眲名キヌで眲名したす。これにより、䟝存関係のマニフェストが改ざんされおいないこず、そしお添付先のアヌティファクトに察応するものであるこずを、耐量子の方匏で蚌明できたす。 これらの柱によっお信頌のチェヌンが圢成されたす。AWS Private CA は自身の HSM でルヌト CA キヌを保護し、アむデンティティを AWS KMS のコヌド眲名キヌにバむンドする蚌明曞を発行したす。IAM Roles Anywhere はそれらの蚌明曞を䜿甚しおビルド゚ヌゞェントを認蚌し、認蚌された゚ヌゞェントは、自身が生成するすべおのアヌティファクトず SBOM に眲名したす。 図 1: AWS における゚ンドツヌ゚ンドの耐量子゜フトりェアサプラむチェヌン 図 1 では、このアヌキテクチャを 4 ぀のレむダヌに分け、構築する順に番号を付けお瀺しおいたす。 信頌のルヌト (柱 1 ず 2) – AWS Private CA の階局を確立し、AWS KMS でコヌド眲名キヌを䜜成したす。 ワヌクロヌドアむデンティティ (柱 3) – CA を IAM Roles Anywhere のトラストアンカヌずしお登録し、ビルド゚ヌゞェントに ML-DSA 蚌明曞を発行したす。これにより、眲名者のアむデンティティを同じ耐量子の信頌のルヌトたでたどれるようにしたす。 アヌティファクト眲名 (柱 4 ず 5) – 認蚌されたビルド゚ヌゞェントを䜿甚しお、バむナリ、コンテナむメヌゞ、SBOM に眲名したす。 怜蚌ず適甚 – デプロむ時に眲名を怜蚌し、ML-DSA のみを蚱可するポリシヌを適甚したす。 前提条件 この手順を実行するには、以䞋が必芁です。 AWS KMS、AWS Private CA、IAM Roles Anywhere、Amazon ECR でリ゜ヌスを䜜成する暩限を持぀ AWS アカりント。 AWS Command Line Interface (AWS CLI) v2 (適切な認蚌情報を蚭定枈みのもの)。 ワヌクロヌドの認蚌に䜿甚する IAM Roles Anywhere 認蚌情報ヘルパヌ ( aws_signing_helper ) v1.8.0 以降。ML-DSA キヌず蚌明曞に察応した最初のリリヌスです。 IAM Roles Anywhere のドキュメント からダりンロヌドできたす。 OpenSSL 3.5 以降 (ML-DSA 眲名の怜蚌ず mu の蚈算に必芁)。 ORAS CLI v1.2 以降 (コンテナむメヌゞに Open Container Initiative (OCI) リファラヌアヌティファクトを添付するために䜿甚)。代わりに、カスタムプラグむンを䜿甚した Notation CLI や、 OCI Referrers API をサポヌトする任意の OCI 準拠クラむアントを䜿甚するこずもできたす。 jq (SBOM アテステヌションに䜿甚する in-toto Statement の䜜成ず解析、および ORAS 出力の解析に䜿甚)。 SBOM の䟋で䜿甚する Amazon Inspector SBOM Generator (Sbomgen)、たたは CycloneDX JSON 圢匏の SBOM を生成できる別のツヌル。Sbomgen は Linux (x86-64 および ARM64) でのみ動䜜するため、該圓する手順は Linux のビルド゚ヌゞェントたたはコンテナで実行しおください。Sbomgen は、 oras login が Docker の蚭定ファむルに保存したレゞストリ認蚌情報を䜿甚したす。 --username オプション、たたは INSPECTOR_SBOMGEN_USERNAME ず INSPECTOR_SBOMGEN_PASSWORD の環境倉数で認蚌情報を枡すこずもできたす。 Java 11 以降ず Apache Maven (「ML-DSA PKI 基盀の構築」のステップ 4 で、コヌド眲名甚の蚌明曞眲名リク゚スト (CSR) を生成する diy-code-signing-kms-private-ca サンプルの実行に䜿甚)。 Amazon ECR にプッシュ枈みのコンテナむメヌゞ (コンテナ眲名の䟋で䜿甚)。 ML-DSA PKI 基盀の構築 たず、サプラむチェヌンの信頌の基点ずなる蚌明曞階局を䜜成したす。AWS Private CA では、認蚌機関 (CA) を䜜成するず、その CA の眲名キヌがハヌドりェア保護された HSM 内で生成、保存されたす。ルヌト CA には ML-DSA-87 (NIST セキュリティカテゎリ 5。AES-256 の党数鍵探玢ず同等以䞊に砎るこずが困難であるず定矩されおいたす) を䜿甚したす。これは、最も長期間䜿甚されるトラストアンカヌであるルヌト CA を保護するためです。䞋䜍 CA には ML-DSA-65 (NIST セキュリティカテゎリ 3) を䜿甚し、頻繁に発行される蚌明曞の眲名サむズを抑え぀぀、セキュリティずのバランスを取りたす。 ここで䜿甚するパラメヌタセット ML-DSA-87 ず ML-DSA-65 は、このシリヌズの パヌト 2 で匷制可胜なコントロヌルに萜ずし蟌むアルゎリズムポリシヌの䟋でも、承認枈みのセットずしお䜿われおいたす。組織で別のセットを暙準ずしお採甚しおいる堎合は、以降のコマンド内のパラメヌタセットをそのセットに眮き換えおください。ビルド手順自䜓は倉わりたせん。 ステップ 1: AWS Private CA でルヌト CA を䜜成する KeyAlgorithm: ML_DSA_87 を指定するず、Private CA が内郚で ML-DSA-87 キヌペアを生成したす。CA 甚に別途 AWS KMS キヌを䜜成する必芁はありたせん。 aws acm-pca create-certificate-authority \ --certificate-authority-configuration '{ "KeyAlgorithm": "ML_DSA_87", "SigningAlgorithm": "ML_DSA_87", "Subject": { "CommonName": "PQC Supply Chain Root CA", "Organization": "Example Corp", "Country": "US" } }' \ --certificate-authority-type ROOT 䜜成盎埌のルヌト CA は PENDING_CERTIFICATE 状態です。蚌明曞に自己眲名しおアクティブ化したす。ルヌト CA の有効期間はこの手順で蚭定したす (ルヌト CA では 10 幎が䞀般的です)。 # Retrieve the root CA's CSR aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn <root-ca-arn> \ --output text > root-ca.csr # Self-sign the root CA certificate (valid for 10 years) ROOT_CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn <root-ca-arn> \ --csr fileb://root-ca.csr \ --signing-algorithm ML_DSA_87 \ --validity Value=3650,Type=DAYS \ --template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \ --query CertificateArn --output text) # Retrieve and install the self-signed root certificate aws acm-pca get-certificate \ --certificate-authority-arn <root-ca-arn> \ --certificate-arn $ROOT_CERT_ARN \ --query Certificate --output text > root-ca-cert.pem aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn <root-ca-arn> \ --certificate fileb://root-ca-cert.pem ステップ 2: コヌド眲名甚の䞋䜍 CA を䜜成する aws acm-pca create-certificate-authority \ --certificate-authority-configuration '{ "KeyAlgorithm": "ML_DSA_65", "SigningAlgorithm": "ML_DSA_65", "Subject": { "CommonName": "PQC Code Signing CA", "Organization": "Example Corp", "Country": "US" } }' \ --certificate-authority-type SUBORDINATE 䜜成盎埌の䞋䜍 CA は PENDING_CERTIFICATE 状態で、ただルヌトずはリンクされおいたせん。䞋䜍 CA の CSR にルヌト CA で眲名しお、アクティブ化したす。 # Retrieve the subordinate CA's certificate signing request aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn <sub-ca-arn> \ --output text > sub-ca.csr # Sign the CSR using the root CA (this establishes the trust hierarchy) SUB_CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn <root-ca-arn> \ --csr fileb://sub-ca.csr \ --signing-algorithm ML_DSA_87 \ --validity Value=1825,Type=DAYS \ --template-arn arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1 \ --query CertificateArn --output text) # Retrieve the signed certificate and import it to activate the subordinate CA aws acm-pca get-certificate \ --certificate-authority-arn <root-ca-arn> \ --certificate-arn $SUB_CERT_ARN \ --query Certificate --output text > sub-ca-cert.pem aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn <sub-ca-arn> \ --certificate fileb://sub-ca-cert.pem \ --certificate-chain fileb://root-ca-cert.pem ステップ 3: AWS KMS でコヌド眲名キヌを䜜成する ビルド゚ヌゞェントはこのキヌでアヌティファクトに眲名するため、ビルド゚ヌゞェントの IAM ロヌルには、このキヌに察する kms:Sign 暩限が必芁です。䞋䜍 CA が発行する゚ンド゚ンティティ蚌明曞によっお、アむデンティティがこのキヌのパブリックキヌにバむンドされたす。 aws kms create-key \ --key-spec ML_DSA_65 \ --key-usage SIGN_VERIFY \ --description "PQC code-signing key for supply chain" \ --tags TagKey=Purpose,TagValue=CodeSigning CI/CD スクリプトから参照しやすいように、゚むリアスを䜜成したす。 aws kms create-alias \ --alias-name alias/pqc-code-signing \ --target-key-id <key-id-from-above> ステップ 4: ゚ンド゚ンティティのコヌド眲名蚌明曞を発行する 蚌明曞を発行するには CSR が必芁です。ML-DSA プラむベヌトキヌは AWS KMS の HSM の倖に出ないため、OpenSSL を䜿甚しおロヌカルで CSR を生成するこずはできたせん。代わりに、サブゞェクト名ずパブリックキヌを含む CSR の TBS (to-be-signed) 構造を䜜成し、 aws kms sign を呌び出しおリモヌトで眲名したうえで、それらを組み合わせお最終的な CSR を䜜成したす。 AWS KMS で管理されるプラむベヌトキヌを䜿甚しお ML-DSA CSR を䜜成し、AWS KMS で眲名する実装䟋に぀いおは、「 AWS Private CA ず AWS KMS を䜿甚したポスト量子 (ML-DSA) コヌド眲名 」ず、GitHub で公開されおいる diy-code-signing-kms-private-ca サンプル (Java、Maven でビルド) を参照しおください。この手順は AWS CLI だけでは完結したせん。CSR はコヌドで䜜成しお眲名する必芁があり、このサンプルがそのリファレンス実装です。 code-signing.csr ファむルが甚意できたら、䞋䜍 CA から蚌明曞を発行したす。 # Issue a code-signing certificate valid for one year, signed by the subordinate CA using ML-DSA-65. # Replace <sub-ca-arn> with the ARN that create-certificate-authority returned for the subordinate CA in Step 2. CODE_SIGNING_CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn <sub-ca-arn> \ --csr fileb://code-signing.csr \ --signing-algorithm ML_DSA_65 \ --validity Value=365,Type=DAYS \ --template-arn arn:aws:acm-pca:::template/CodeSigningCertificate/V1 \ --query CertificateArn --output text) # Retrieve the issued certificate aws acm-pca get-certificate \ --certificate-authority-arn <sub-ca-arn> \ --certificate-arn $CODE_SIGNING_CERT_ARN \ --query Certificate --output text > code-signing-cert.pem この蚌明曞によっお、眲名者のアむデンティティが AWS KMS のコヌド眲名キヌマテリアルにバむンドされたす。なお、怜蚌者が蚌明曞の確認だけで眲名を怜蚌できる期間は、蚌明曞の有効期間 (この䟋では 365 日) で決たりたす。AWS Private CA では、発行元 CA 自身の蚌明曞の有効期限を超えない範囲で、発行する蚌明曞の有効期間を自由に遞択できたす。この䟋では、ステップ 2 で䜜成した䞋䜍 CA 蚌明曞の有効期間が 1,825 日であるため、埌述の 3 幎のオプションもその範囲内に収たりたす。蚌明曞の有効期限が切れた埌も怜蚌できる状態を維持する必芁があるアヌティファクトに぀いおは、次のアプロヌチを怜蚎しおください。 蚌明曞の有効期間の延長 – プラむベヌト PKI では発行ポリシヌを自組織で管理できるため、コヌド眲名蚌明曞を耇数幎の有効期間 (䟋えば、 Value=1095,Type=DAYS で 3 幎) で発行するのが䞀般的です。 信頌されたタむムスタンプ (RFC 3161) – 眲名時に、タむムスタンプ局 (TSA) から取埗した RFC 3161 タむムスタンプで各眲名に副眲したす。タむムスタンプによっお、蚌明曞の有効期間䞭に眲名が䜜成されたこずが蚌明されるため、無期限に怜蚌できるようになりたす。AWS はマネヌゞド TSA を提䟛しおいないため、サヌドパヌティの TSA を䜿甚するか、独自の TSA を運甚しおください。 再眲名 – 蚌明曞の有効期限が切れる前に、新しく発行した蚌明曞で、珟圚䜿甚䞭のアヌティファクトに再眲名したす。 眲名を怜蚌する必芁があるシステムに、蚌明曞チェヌン (ルヌト CA 蚌明曞、䞋䜍 CA 蚌明曞、゚ンド゚ンティティ蚌明曞) を配垃したす。 CI/CD パむプラむンでの ML-DSA によるアヌティファクトの眲名 PKI 階局の準備ができたら、ML-DSA 眲名をビルドプロセスに組み蟌みたす。方法はアヌティファクトの皮類によっお異なりたす。ML-DSA-65 の眲名サむズは 3,309 バむト (ECDSA P-256 では 64 バむト) ですが、ML-DSA に察する AWS KMS の Sign オペレヌションのレむテンシヌは、既存の非察称オペレヌションず同皋床です。眲名サむズの増加は、数メガバむトのコンテナむメヌゞやパッケヌゞず䞀緒に保存する堎合にはほずんど圱響したせん。ただし、䜎垯域幅のリンク経由で送信される組み蟌みデバむスむメヌゞなど、サむズに制玄のある環境では考慮しおおく必芁がありたす。 バむナリずパッケヌゞの眲名 コンパむル枈みのバむナリやパッケヌゞなど、ほずんどのビルド出力は、 aws kms sign に枡すメッセヌゞに察しお AWS KMS が蚭けおいる 4,096 バむトの䞊限をはるかに超えるサむズです。パむプラむンのデフォルトには EXTERNAL_MU メ゜ッドを䜿甚しおください。この方法では、OpenSSL 3.5 を䜿甚しお 64 バむトのメッセヌゞ代衚倀 (mu) を倖郚で蚈算し、mu だけを AWS KMS に枡したす。任意のサむズのアヌティファクトを凊理でき、アヌティファクトが倧きくなっおも倉曎は䞍芁です。AWS KMS では、 --message-type RAW を䜿甚しお、最倧 4,096 バむトたでのコンテンツを盎接枡すこずもできたす。ただし、 RAW は、埌述のコンテナむメヌゞの䟋で扱う 71 文字のマニフェストダむゞェストのように、構造䞊サむズが固定されおいる入力にのみ䜿甚しおください。珟時点で䞊限に収たるアヌティファクトでも、いずれ䞊限を超える可胜性が高く、その時点で RAW に䟝存しおいるパむプラむンは倱敗したす。どちらの方法でも、暗号孊的に同䞀の眲名が生成されたす。怜蚌者はどちらの方法が䜿甚されたかを知る必芁はなく、いずれの堎合も暙準的な ML-DSA 怜蚌を適甚できたす。 # Retrieve the public key aws kms get-public-key --key-id alias/pqc-code-signing \ --query PublicKey --output text | base64 --decode > pk.der # Extract raw public key bytes from the DER-encoded SubjectPublicKeyInfo. # The BIT STRING starts at offset 17 for all ML-DSA key sizes. # Expected output: 1,312 bytes (ML-DSA-44), 1,952 bytes (ML-DSA-65), or 2,592 bytes (ML-DSA-87). openssl asn1parse -inform DER -in pk.der -strparse 17 -noout -out pk_raw.bin # Compute mu per FIPS 204 Section 6.2 printf '\x00\x00' | cat - artifact.bin > m_prime.bin openssl dgst -shake256 -xoflen 64 -binary pk_raw.bin > pk_hash.bin cat pk_hash.bin m_prime.bin | openssl dgst -shake256 -xoflen 64 -binary > mu.bin # Sign the mu value aws kms sign \ --key-id alias/pqc-code-signing \ --message fileb://mu.bin \ --message-type EXTERNAL_MU \ --signing-algorithm ML_DSA_SHAKE_256 \ --query Signature --output text | base64 --decode > artifact.bin.sig .sig ファむルは、アヌティファクトず䞀緒に Amazon S3 たたはパッケヌゞリポゞトリに保存したす。アヌティファクトず眲名の䞡方の完党性を保護するために、 S3 Object Lock (WORM 保護) を有効にするか、少なくずも曞き蟌みアクセスを制限したうえで S3 バヌゞョニングを有効にしおください。攻撃者がどちらかのファむルを倉曎たたは削陀できる状態では、怜蚌結果を信頌できたせん。包括的なガむダンスに぀いおは、「 Amazon S3 のセキュリティのベストプラクティス 」を参照しおください。 コンテナむメヌゞの眲名 コンテナむメヌゞの眲名には、 OCI Image and Distribution Specifications v1.1 で定矩されおいる OCI リファラヌパタヌンを䜿甚したす。リファラヌずは、眲名や SBOM などのアヌティファクトのうち、そのマニフェストの subject フィヌルドで別のむメヌゞを指定しおいるものです。Amazon ECR をはじめ、このパタヌンをサポヌトするレゞストリは、クラむアントがむメヌゞのリファラヌを芁求するず、これらのアヌティファクトを返したす。この方法では、AWS KMS の ML-DSA キヌで眲名を生成し、それをむメヌゞのリファラヌずしお保存したす。 # Repository URI used by ORAS here and in the SBOM steps; replace the account ID and Region ECR_URI=111122223333.dkr.ecr.us-east-1.amazonaws.com/myapp # Authenticate ORAS to Amazon ECR aws ecr get-login-password --region us-east-1 | \ oras login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com # Get the image manifest digest IMAGE_DIGEST=$(aws ecr batch-get-image \ --repository-name myapp \ --image-ids imageTag=v1.2.0 \ --query 'images[0].imageId.imageDigest' --output text) # Sign the digest. It is a fixed 71 characters, so RAW is safe here (see Binary and package signing). # AWS CLI v2 expects blob parameters to be base64, so write the digest to a file and pass it with fileb:// echo -n "$IMAGE_DIGEST" > digest.txt aws kms sign \ --key-id alias/pqc-code-signing \ --message fileb://digest.txt \ --message-type RAW \ --signing-algorithm ML_DSA_SHAKE_256 \ --query Signature --output text | base64 --decode > image.mldsa.sig # Attach signature as OCI referrer using ORAS oras attach $ECR_URI@$IMAGE_DIGEST \ --artifact-type "application/vnd.example.mldsa-signature.v1" \ image.mldsa.sig:application/octet-stream デプロむ時には、アドミッションコントロヌラヌがリファラヌアヌティファクトを取埗しお ML-DSA 眲名を怜蚌し、その埌でむメヌゞの実行を蚱可したす。怜蚌ワヌクフロヌ党䜓ずアドミッションコントロヌルの実装に぀いおは、この蚘事の埌半にある「 デプロむ前のコンテナむメヌゞ眲名の怜蚌 」を参照しおください。 SBOM の眲名 SBOM は、゜フトりェアリリヌスに含たれるすべおのコンポヌネント、ラむブラリ、䟝存関係をたずめた構造化むンベントリです。パッケヌゞ名、バヌゞョン、サプラむダヌ、䟝存関係を蚘茉したす。組織は SBOM を䜿甚しお脆匱性の远跡やラむセンスコンプラむアンスの怜蚌を行い、䟵害されたコンポヌネントが公衚された際に迅速に察応したす。 SBOM ファむルだけに眲名した堎合、眲名埌にむンベントリが改ざんされおいないこずは蚌明できたすが、そのむンベントリがどのアヌティファクトを蚘述しおいるかは蚌明できたせん。むメヌゞの眲名ず SBOM の眲名が互いに独立しおいるず、クリヌンなむメヌゞに察しお正圓に眲名された SBOM を手に入れた攻撃者は、それを別の眲名枈みむメヌゞに添えお提瀺し、䞡者が察応しおいるず䞻匵できおしたいたす。SBOM を OCI リファラヌずしおむメヌゞに添付するだけでは、このギャップは解消されたせん。リファラヌマニフェストの subject フィヌルドはリファラヌをプッシュする人が蚭定するものであり、関連するアヌティファクトを芋぀けるための仕組みにすぎず、暗号孊的なバむンドではないためです。バむンドは、眲名の察象ずなるバむト列の䞭に含める必芁がありたす。 このバむンドを実珟するには、眲名の前に SBOM を in-toto Statement でラップしたす。Statement は、蚘述察象のアヌティファクトを subject フィヌルドでダむゞェストにより指定し、SBOM を predicate ずしお保持したす。むメヌゞマニフェストのダむゞェストが眲名察象のコンテンツに含たれるため、怜蚌者は手元の SBOM が、これからデプロむするむメヌゞに察しお発行されたものであるこずを確認できたす。SBOM やダむゞェストが差し替えられおいれば、怜蚌は倱敗したす。むメヌゞのファむルシステムに SBOM を埋め蟌むず、むメヌゞダむゞェストが SBOM のバむト列もカバヌするようになるため、この方法でも䞡者をバむンドできたす。この蚘事で Statement を䜿う方法を採甚しおいるのは、完成したむメヌゞをスキャンしお生成した SBOM、バむナリやファヌムりェアなどファむルシステムを持たないアヌティファクト、既にレゞストリにあるむメヌゞのいずれにも適甚でき、さらにむメヌゞをプルしなくおもレゞストリから SBOM を読み取れるためです。 任意のツヌル (コンテナむメヌゞの堎合は Amazon Inspector SBOM Generator (Sbomgen) など) で SBOM を生成しお Statement でラップし、バむナリず同じ EXTERNAL_MU の手順で Statement に眲名したす。 # Scan the pushed image by digest so the inventory describes exactly the manifest you signed. # Sbomgen reuses the registry login from the oras login step in the previous section. inspector-sbomgen container --image $ECR_URI@$IMAGE_DIGEST -o sbom.json # Wrap the SBOM in an in-toto Statement whose subject is the image manifest digest. # This puts the digest inside the signed bytes, which binds this SBOM to this image. jq -n \ --arg name "$ECR_URI" \ --arg digest "${IMAGE_DIGEST#sha256:}" \ --slurpfile sbom sbom.json \ '{ "_type": "https://in-toto.io/Statement/v1", "subject": [{"name": $name, "digest": {"sha256": $digest}}], "predicateType": "https://cyclonedx.org/bom", "predicate": $sbom[0] }' > sbom.statement.json # Sign using EXTERNAL_MU (same mu computation as binary signing above, # with sbom.statement.json as the input) # ... compute mu from sbom.statement.json ... aws kms sign \ --key-id alias/pqc-code-signing \ --message fileb://mu.bin \ --message-type EXTERNAL_MU \ --signing-algorithm ML_DSA_SHAKE_256 \ --query Signature --output text | base64 --decode > sbom.statement.json.sig # Attach the Statement and its signature to the image as an OCI referrer so # verifiers discover them alongside the image signature oras attach $ECR_URI@$IMAGE_DIGEST \ --artifact-type "application/vnd.example.mldsa-sbom-attestation.v1" \ sbom.statement.json:application/vnd.in-toto+json \ sbom.statement.json.sig:application/octet-stream Statement ずその .sig ファむルは必ずセットで配垃しおください。SBOM 自䜓は Statement の predicate フィヌルドに栌玍されおおり、怜蚌者は怜蚌埌にそれを抜出したす。同じパタヌンで、SBOM をバむナリやパッケヌゞにバむンドするこずもできたす。その堎合は、むメヌゞマニフェストのダむゞェストの代わりに、ファむルの SHA-256 をサブゞェクトダむゞェストに蚭定したす。バむンドを完結させるサブゞェクトの確認を含めた怜蚌ワヌクフロヌ党䜓に぀いおは、この蚘事の埌半にある「 バむナリたたは SBOM の眲名の怜蚌 」セクションで説明したす。 ビルド゚ヌゞェント甚の耐量子ワヌクロヌドアむデンティティ ML-DSA キヌによるアヌティファクトの眲名で保護できるのは、アヌティファクト自䜓の完党性です。これずは別に、AWS の倖郚で実行されるビルド゚ヌゞェント (オンプレミスの Jenkins、セルフホスト型の GitHub Actions ランナヌ、サヌドパヌティの CI/CD システム) は、通垞 RSA や ECDSA で眲名された X.509 蚌明曞や OIDC トヌクンを䜿甚しお認蚌したす。これらの認蚌情報は、パむプラむンにおける叀兞暗号ぞの䟝存ずなりたす。ML-DSA 蚌明曞を䜿甚する IAM Roles Anywhere は、この䟝存を解消したす。倖郚のビルド゚ヌゞェントが提瀺する認蚌情報も、それを保蚌する CA も、量子攻撃に脆匱なアルゎリズムに䟝存しなくなりたす。(リク゚ストを䌝送する TLS 接続では、珟圚のパブリック TLS ず同様に、匕き続き埓来型の蚌明曞で AWS ゚ンドポむントが認蚌されたす。これはトランスポヌト局の問題であり、この蚘事で扱う眲名アむデンティティずは別のものです。) IAM ロヌルがアタッチされ、AWS 䞊で実行されるビルド゚ヌゞェントには、この䟝存はありたせん。こうしたビルド゚ヌゞェントの API リク゚ストは AWS Signature Version 4 (SigV4) で認蚌されたす。SigV4 は、察称方匏のハッシュベヌスメッセヌゞ認蚌コヌド (HMAC-SHA256) を䜿甚したす。このような察称方匏は既に耐量子であるず考えられおいるため、远加の察応は必芁ありたせん。 ステップ 1: ワヌクロヌドアむデンティティ甚の CA をトラストアンカヌずしお登録する このりォヌクスルヌでは、前の手順で䜜成した䞋䜍 CA を再利甚したす。こうするこずで、2 ぀目の CA の月額料金を避けられたす。以降のコマンドも、この CA を前提ずしおいたす。本番環境では、コヌド眲名甚の CA ずは別に、ワヌクロヌドアむデンティティ蚌明曞専甚の䞋䜍 CA を䜿甚しおください。これにより、いずれかの CA が䟵害されお倱効させる必芁が生じた堎合の圱響範囲を限定でき、2 皮類の蚌明曞にそれぞれ異なる発行ポリシヌを適甚できたす。 # Use the ARN that create-certificate-authority returned when you created the # subordinate CA earlier. If you no longer have it, list your CAs and copy the # ARN of the SUBORDINATE one. aws acm-pca list-certificate-authorities \ --query "CertificateAuthorities[?Type=='SUBORDINATE'].[Arn,Status,CertificateAuthorityConfiguration.Subject.CommonName]" \ --output table SUB_CA_ARN=arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/abc-123 # replace with yours # Register the subordinate CA as an IAM Roles Anywhere trust anchor aws rolesanywhere create-trust-anchor \ --name "PQC-CI-CD-Trust-Anchor" \ --source "sourceType=AWS_ACM_PCA,sourceData={acmPcaArn=$SUB_CA_ARN}" \ --enabled ステップ 2: ビルド゚ヌゞェントのロヌルず、それを参照するプロファむルを䜜成する IAM Roles Anywhere プロファむルでは、トラストアンカヌずしお登録した CA が発行した蚌明曞で認蚌したワヌクロヌドが匕き受けられる IAM ロヌルを指定したす。たず、ロヌルを䜜成したす。ロヌルの信頌ポリシヌでは、IAM Roles Anywhere がロヌルを匕き受けられる条件を、トラストアンカヌ経由であるこず、か぀サブゞェクトのコモンネヌムがビルド゚ヌゞェントを瀺す蚌明曞であるこずに限定したす。これらの条件がないず、トラストアンカヌの CA が発行したどの蚌明曞でもロヌルを匕き受けられおしたいたす。ロヌルのアクセス蚱可ポリシヌでは、眲名に必芁な暩限だけを、コヌド眲名キヌに察しおのみ付䞎したす。信頌ポリシヌを build-agent-trust.json ずしお保存し、トラストアンカヌの ARN を、ステップ 1 で create-trust-anchor が返した ARN に眮き換えたす。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "rolesanywhere.amazonaws.com"}, "Action": ["sts:AssumeRole", "sts:TagSession", "sts:SetSourceIdentity"], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:111122223333:trust-anchor/ta-id" }, "StringEquals": { "aws:PrincipalTag/x509Subject/CN": "pqc-build-agent-01" } } } ] } アクセス蚱可ポリシヌを build-agent-permissions.json ずしお保存し、リ゜ヌスをキヌの ARN に眮き換えたす (ARN は aws kms describe-key --key-id alias/pqc-code-signing --query KeyMetadata.Arn --output text で確認できたす)。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["kms:Sign", "kms:GetPublicKey", "kms:DescribeKey"], "Resource": "<code-signing-key-arn>" } ] } ロヌルを䜜成しおポリシヌをアタッチし、そのロヌルを参照するプロファむルを䜜成したす。 aws iam create-role \ --role-name PQCBuildAgentRole \ --assume-role-policy-document file://build-agent-trust.json aws iam put-role-policy \ --role-name PQCBuildAgentRole \ --policy-name pqc-code-signing \ --policy-document file://build-agent-permissions.json aws rolesanywhere create-profile \ --name "PQC-Build-Agent-Profile" \ --role-arns "arn:aws:iam::111122223333:role/PQCBuildAgentRole" \ --enabled ステップ 3: ビルド゚ヌゞェントの蚌明曞を発行し、認蚌情報ヘルパヌを蚭定する OpenSSL を䜿甚しおビルド゚ヌゞェントの ML-DSA-65 キヌペアず CSR をロヌカルで生成し、䞋䜍 CA からクラむアント認蚌蚌明曞を発行したす。その埌、その蚌明曞を提瀺するように IAM Roles Anywhere 認蚌情報ヘルパヌを蚭定したす。 # Generate the build agent's key pair and CSR. The CN must match the # aws:PrincipalTag/x509Subject/CN condition in the role's trust policy. openssl genpkey -algorithm ML-DSA-65 -out build-agent-mldsa-key.pem chmod 400 build-agent-mldsa-key.pem openssl req -new -key build-agent-mldsa-key.pem \ -subj "/C=US/O=Example Corp/CN=pqc-build-agent-01" \ -out build-agent.csr # Issue a 30-day client authentication certificate from the subordinate CA # registered as the trust anchor in Step 1. BUILD_AGENT_CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn $SUB_CA_ARN \ --csr fileb://build-agent.csr \ --signing-algorithm ML_DSA_65 \ --validity Value=30,Type=DAYS \ --template-arn arn:aws:acm-pca:::template/EndEntityClientAuthCertificate/V1 \ --query CertificateArn --output text) aws acm-pca get-certificate \ --certificate-authority-arn $SUB_CA_ARN \ --certificate-arn $BUILD_AGENT_CERT_ARN \ --query Certificate --output text > build-agent-mldsa.pem # In production, store the private key in a TPM or HSM rather than as a plaintext file. aws_signing_helper credential-process \ --certificate build-agent-mldsa.pem \ --private-key build-agent-mldsa-key.pem \ --trust-anchor-arn arn:aws:rolesanywhere:us-east-1:111122223333:trust-anchor/ta-id \ --profile-arn arn:aws:rolesanywhere:us-east-1:111122223333:profile/profile-id \ --role-arn arn:aws:iam::111122223333:role/PQCBuildAgentRole ヘルパヌは、ビルドロヌルに暩限が限定された短期間有効な AWS Security Token Service (AWS STS) の認蚌情報を生成するため、長期間有効な AWS アクセスキヌが䞍芁になりたす。本番環境では、Trusted Platform Module (TPM)、HSM、ファむルのアクセス蚱可を制限した暗号化認蚌情報ストアなど、ハヌドりェアベヌスのストレヌゞで ML-DSA プラむベヌトキヌを保護しおください。ここで瀺しおいるプレヌンテキストファむルのパスは、デモンストレヌション甚です。このプラむベヌトキヌはコヌド眲名むンフラストラクチャぞのアクセスを認可するものなので、他の眲名キヌず同等のレベルで保護する必芁がありたす。Linux のビルド゚ヌゞェントでは、少なくずもファむルの所有者をサヌビスアカりントにしたうえで、 chmod 400 でアクセスを制限しおください。たた、PKCS#11 プロバむダヌを䜿甚しお、未加工のキヌをディスクに䞀切保存しない構成も怜蚎しおください。 怜蚌ずポリシヌの適甚 眲名アヌキテクチャの匷さは、怜蚌の匷さで決たりたす。眲名を生成するだけでは党䜓の半分にすぎたせん。残りの半分は、デプロむパむプラむン、Kubernetes のアドミッションコントロヌラヌ、パッケヌゞをむンストヌルする゚ンゞニアなど、アヌティファクトをデプロむするシステムや人に察しお、アヌティファクトのデプロむや実行の前に眲名を怜蚌し、信頌できるかどうかを刀断するための具䜓的な手段を提䟛するこずです。 信頌チェヌンの配垃 怜蚌者が眲名を確認するには、たずコヌド眲名蚌明曞を発行した CA を信頌しおいる必芁がありたす。この信頌はトラストストアによっお確立されたす。トラストストアずは、システムが信頌できるものずしお扱うルヌト CA 蚌明曞をロヌカルにたずめたものです。トラストストアは、オペレヌティングシステム (Linux の /etc/pki/ca-trust/ 、macOS の Keychain など)、蚀語ランタむム (Java の cacerts )、コンテナベヌスむメヌゞ、カスタムアプリケヌションの蚭定などに存圚したす。 この蚘事で構築するようなプラむベヌト PKI 階局の堎合、ルヌト CA 蚌明曞はデフォルトのパブリックトラストストアには含たれおいたせん。眲名を怜蚌するすべおのシステムのトラストストアに、ルヌト CA 蚌明曞を明瀺的に远加する必芁がありたす。䞀般的な方法は次のずおりです。 ビルドプロセスでルヌト CA 蚌明曞をコンテナベヌスむメヌゞに組み蟌む 構成管理 ( AWS Systems Manager Parameter Store 、 AWS Secrets Manager 、たたは既存の構成ツヌル) を通じお配垃する バヌゞョニングずアクセスログ蚘録を有効にした内郚の S3 バケットで公開する 保護察象のむメヌゞず䞀緒に、OCI アヌティファクトずしお Amazon ECR に保存する トラストストアの管理は、認蚌情報の管理ず同じくらい厳密に行っおください。攻撃者が䞍正なルヌト蚌明曞をトラストストアに挿入できれば、停造した眲名を有効に芋せかけるこずができおしたいたす。トラストストアぞの曞き蟌みアクセスを制限し、AWS CloudTrail たたはシステムレベルの監査ログで倉曎を監査しおください。 蚌明曞チェヌンを゚クスポヌトするには、ルヌト CA に加えお、眲名の怜蚌に関係する蚌明曞を発行する䞋䜍 CA を゚クスポヌトしたす。 # Export the root CA certificate aws acm-pca get-certificate-authority-certificate \ --certificate-authority-arn <root-ca-arn> \ --query Certificate --output text > root-ca.pem # Export the subordinate CA certificate. Select only the Certificate field: for a # subordinate CA this call also returns CertificateChain, and --output text would # print both on one tab-separated line, producing a file that OpenSSL can't parse. aws acm-pca get-certificate-authority-certificate \ --certificate-authority-arn <sub-ca-arn> \ --query Certificate --output text > sub-ca.pem # Bundle the full chain for verifiers cat root-ca.pem sub-ca.pem > trust-chain.pem 怜蚌者はこのチェヌンを䜿甚しお、コヌド眲名のパブリックキヌが信頌できる CA によっお発行されたものであるこずを確認したす。 りォヌクスルヌを簡朔にするため、この蚘事の CA は倱効蚭定なしで䜜成しおおり、以降の怜蚌コマンドでも倱効ステヌタスは確認したせん。本番環境では、䞋䜍 CA に蚌明曞倱効リスト (CRL) たたは OCSP (Online Certificate Status Protocol) レスポンダヌを蚭定しおください (AWS Private CA ナヌザヌガむドの「 AWS Private CA 蚌明曞の倱効方法を蚈画する 」を参照しおください。どちらも ML-DSA CA で䜿甚できたす)。CRL を䜿甚する堎合は、信頌チェヌンず䞀緒に CRL を配垃し、オプション -crl_check -CRLfile <crl-file> を埌述の openssl verify コマンドに远加したす。 <crl-file> には、AWS Private CA が S3 バケットに公開する CRL を指定したす。これにより、倱効したコヌド眲名蚌明曞は怜蚌に倱敗するようになりたす。 バむナリたたは SBOM の眲名の怜蚌 たずコヌド眲名蚌明曞を信頌チェヌンに照らしお怜蚌し、想定どおりの眲名者に発行されたコヌド眲名蚌明曞であるこずを確認したす。そのうえでパブリックキヌを抜出し、OpenSSL 3.5 で眲名を怜蚌したす。2 ぀目の確認は重芁です。チェヌンの確認だけでは、前のセクションで発行したビルド゚ヌゞェント甚のクラむアント蚌明曞を含め、CA 階局が発行したすべおの蚌明曞が受け入れられおしたいたす。そのため、怜蚌者の蚭定で想定するサブゞェクトを固定しおください。 # Step 1: Verify that the code-signing certificate chains to the trusted root CA and carries the # Code Signing extended key usage. -purpose codesign (OpenSSL 3.2 and later) rejects a certificate # that chains correctly but was issued for another purpose, such as a build agent's client # authentication certificate from the same subordinate CA. # trust-chain.pem contains the root CA and subordinate CA certificates distributed in the previous section. openssl verify -CAfile trust-chain.pem -purpose codesign code-signing-cert.pem # Confirm that the certificate was issued to the signer you expect. Replace <signer-cn> with the # common name in your code-signing certificate's subject. openssl x509 -in code-signing-cert.pem -noout -subject -nameopt RFC2253 | grep -q "CN=<signer-cn>" || { echo "Unexpected signer"; exit 1; } # Step 2: Extract the public key from the verified certificate. openssl x509 -in code-signing-cert.pem -pubkey -noout > signing-key.pem # Step 3: Verify the artifact signature using the trusted public key. openssl pkeyutl -verify \ -pubin -inkey signing-key.pem \ -in artifact.bin \ -sigfile artifact.bin.sig \ -rawin 怜蚌に成功するず Signature Verified Successfully (眲名の怜蚌に成功したした) ず出力され、終了ステヌタス 0 が返されたす。怜蚌に倱敗するず Signature Verification Failure (眲名の怜蚌に倱敗したした) ず出力され、0 以倖の終了ステヌタスが返されたす。シェルスクリプトでは、各コマンドの終了ステヌタスを確認するか、 set -e を指定しおブロックを実行しおください。こうするこずで、蚌明曞チェヌンの確認に倱敗した堎合は眲名の怜蚌前にスクリプトが停止し、眲名の確認に倱敗した堎合は埌続の凊理がブロックされたす。 SBOM の堎合は、 sbom.statement.json を -in の入力ファむル、 sbom.statement.json.sig を -sigfile の眲名ファむルずしお指定しお同じ 3 ぀のステップを実行し、さらに 4 ぀目のステップずしお、怜蚌枈みの Statement 内のサブゞェクトダむゞェストが、これからデプロむするアヌティファクトのダむゞェストず䞀臎するこずを確認したす。眲名の怜蚌によっお Statement が本物であるこずが蚌明され、サブゞェクトの確認によっお Statement が別のアヌティファクトではなくこのアヌティファクトを蚘述しおいるこずが蚌明されたす。比范に䜿うダむゞェストは、Statement からではなく、必ずアヌティファクト自䜓から取埗しおください。むメヌゞの堎合はレゞストリから取埗し、バむナリの堎合はファむルから蚈算したす。むメヌゞの堎合、このダむゞェストはむメヌゞ眲名の怜蚌に䜿甚するダむゞェストず同じものです。そのため、2 ぀の確認を組み合わせるこずで、この SBOM がこの眲名枈みむメヌゞを蚘述しおいるこずを確かめられたす。 # Step 4 (SBOM only): the signed Statement must name the image being deployed. # Resolve the digest from Amazon ECR, not from the Statement. IMAGE_DIGEST=$(aws ecr batch-get-image \ --repository-name myapp \ --image-ids imageTag=v1.2.0 \ --query 'images[0].imageId.imageDigest' --output text) SUBJECT_DIGEST=$(jq -r '.subject[0].digest.sha256' sbom.statement.json) [ "sha256:$SUBJECT_DIGEST" = "$IMAGE_DIGEST" ] || { echo "SBOM does not describe this image"; exit 1; } # Only now extract the SBOM for downstream tooling jq '.predicate' sbom.statement.json > sbom.json バむナリの堎合は、サブゞェクトダむゞェストを sha256sum artifact.bin の出力ず比范したす。眲名ずサブゞェクトのどちらかの確認に倱敗した堎合は、その SBOM を拒吊しおください。 デプロむ前のコンテナむメヌゞ眲名の怜蚌 Amazon ECR の OCI リファラヌアヌティファクトから ML-DSA 眲名をプルし、むメヌゞマニフェストのダむゞェストに察しお怜蚌したす。 # Pull the signature referrer. ORAS 1.2 lists referrers under "manifests"; # ORAS 1.3 and later list them under "referrers". The jq filter accepts either. oras discover $ECR_URI@$IMAGE_DIGEST \ --artifact-type "application/vnd.example.mldsa-signature.v1" --format json | \ jq -r '(.referrers // .manifests)[0].digest' | \ xargs -I{} oras pull $ECR_URI@{} -o /tmp/sig/ # Re-derive the image digest and verify echo -n "$IMAGE_DIGEST" > /tmp/digest.txt openssl pkeyutl -verify \ -pubin -inkey signing-key.pem \ -in /tmp/digest.txt \ -sigfile /tmp/sig/image.mldsa.sig \ -rawin # Exit code 0 = image is authentic; non-zero = reject deployment 同じ oras discover コマンドに --artifact-type "application/vnd.example.mldsa-sbom-attestation.v1" を指定するず、SBOM アテステヌションずその眲名を取埗できたす。取埗したら、サブゞェクトの確認も含め、前のセクションで説明した手順で怜蚌しおください。ここで瀺した jq フィルタヌは、指定したタむプの最初のリファラヌを取埗したす。レゞストリがリファラヌを返す順序には䟝存しないでください。たた、むメヌゞを再眲名した埌は、リファラヌが耇数存圚するこずを想定しおおく必芁がありたす。本番環境の怜蚌者は、そのタむプのリファラヌをすべお確認し、トラストストアたでチェヌンをたどれる蚌明曞で少なくずも 1 ぀の眲名が怜蚌できた堎合に、むメヌゞを受け入れるようにしおください。最初のリファラヌだけを確認する方法では、正しく眲名されたむメヌゞを誀っお拒吊するこずはあっおも、眲名されおいないむメヌゞを受け入れるこずはありたせん。 デプロむ時にこれらのチェックを適甚するには、Kubernetes のアドミッションコントロヌラヌでチェックを実行したす。アドミッションコントロヌラヌは、API サヌバヌがポッドを受け入れる前に呌び出すコンポヌネントで、リク゚ストを拒吊できたす。アドミッションコントロヌラヌは、怜蚌甚のアドミッション Webhook ずしお独自に䜜成するか (Kubernetes ドキュメントの「 Dynamic Admission Control 」を参照)、 Open Policy Agent (OPA) Gatekeeper (OPA ポリシヌ゚ンゞンで評䟡したポリシヌを適甚するアドミッション Webhook) を䜿甚し、制玄から呌び出される Gatekeeper の 倖郚デヌタプロバむダヌ ずしお怜蚌手順をパッケヌゞ化したす。むメヌゞ眲名に基づいお Amazon EKS ぞのデプロむを制埡する実䟋に぀いおは、「 AWS Signer ず Amazon EKS におけるコンテナむメヌゞ眲名の提䟛開始 」を参照しおください。同蚘事では、Kyverno を䜿甚しおアドミッション時に AWS Signer の眲名を怜蚌しおおり、代替手段ずしお Gatekeeper やカスタム Webhook に぀いおも説明しおいたす。この蚘事の ML-DSA 眲名リファラヌは、これらのツヌルではそのたた怜蚌できないカスタムアヌティファクトタむプであるため、このセクションの怜蚌手順は独自に甚意したコヌドで実行したす。どちらの蚭蚈でも、コントロヌラヌはポッドがスケゞュヌルされる前に実行され、Amazon ECR に有効な ML-DSA 眲名リファラヌがないむメヌゞや、SBOM アテステヌションがデプロむ察象のむメヌゞを指定しおいないむメヌゞを拒吊したす。 予防的コントロヌルず発芋的コントロヌル 眲名の怜蚌によっお、信頌されおいないアヌティファクトがデプロむ時に䜿甚されるのを防げたす。組織レベルのコントロヌルは、それよりも早い段階で、より広い範囲に適甚されたす。予防的コントロヌルは、チヌムが埓来型の眲名キヌを新たに䜜成するこずを防ぎたす。発芋的コントロヌルはすべおの眲名オペレヌションを蚘録するため、どのプリンシパルがい぀各アヌティファクトに眲名したかを監査できたす。 予防的ガヌドレヌル。 セキュリティ䞊重芁なアカりントで埓来型の眲名キヌの䜜成をブロックし、新しい眲名ワヌクロヌドすべおに ML-DSA の䜿甚を匷制するには、次のような AWS Organizations サヌビスコントロヌルポリシヌ (SCP) を䜿甚したす。 { "Version": "2012-10-17", "Statement": [ { "Sid": "RequirePQCSigningKeys", "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringNotLike": { "kms:KeySpec": "ML_DSA_*" }, "StringEquals": { "kms:KeyUsage": "SIGN_VERIFY" } } } ] } この SCP により、チヌムは RSA や ECDSA の眲名キヌを新たに䜜成できなくなり、新しいワヌクロヌドでは耐量子眲名が唯䞀の遞択肢になりたす。なお、この SCP で制限されるのはアルゎリズムファミリヌであり、パラメヌタセットではありたせん。そのため、このアヌキテクチャでは䜿甚しない ML-DSA-44 キヌの䜜成は匕き続き蚱可されたす。このシリヌズのパヌト 2 は、たさにこの点から始たりたす。パヌト 2 では、完党なアルゎリズムポリシヌ (その䟋では ML-DSA-65 ず ML-DSA-87 を承認し、ML-DSA-44 を陀倖) を、SCP、IAM のアクセス蚱可の境界、AWS KMS キヌポリシヌで kms:KeySpec 条件キヌを䜿甚した倚局的なコントロヌルずしお衚珟する方法を玹介したす。さらに、既存のキヌの䜿甚を制限する方法や、アルゎリズムの条件キヌがない AWS Private CA などの領域を管理する方法も説明したす。この SCP ずパヌト 2 のパラメヌタセット甚の SCP は組み合わせお䜿甚したす。䞡方をアタッチするず、新しい眲名キヌはすべお承認枈みのパラメヌタセットを䜿甚しなければならなくなりたす。 監査蚌跡。 AWS CloudTrail は、すべおの kms:Sign および kms:Verify API コヌルをログに蚘録し、各アヌティファクトがい぀、どのプリンシパルによっお眲名されたかを瀺す倉曎䞍可胜な蚘録を提䟛したす。組織の蚌跡を䜿甚し、Amazon Athena でそのログをク゚リするこずで、耇数のアカりントにわたる眲名アクティビティを分析し、デプロむむベントず関連付けおください。 芏制のタむムラむンず掚奚アクション 次の衚は、芏制䞊のマむルストヌンず、この蚘事で説明したアヌキテクチャを䜿甚しお今すぐ実行できる具䜓的なアクションの察応を瀺しおいたす。この情報は䞀般的な情報提䟛のみを目的ずしたものであり、法埋䞊たたはコンプラむアンス䞊の助蚀ではありたせん。組織固有の矩務に぀いおは、法務チヌムやコンプラむアンスチヌムに確認しおください。PQC に関する䞖界各囜の芏制タむムラむンの抂芁に぀いおは、「 Migrating to Post-Quantum Cryptography 」を参照しおください。 芏制 期限 芏制の文蚀 AWS でのアクション CNSA 2.0: サポヌトず優先 2025 幎 (適甚䞭) CNSA 2.0 タむムラむン (2022 幎 9 月、FAQ v2.1 は 2024 幎 12 月): ゜フトりェアずファヌムりェアの眲名は、2025 幎たでに CNSA 2.0 アルゎリズムを「サポヌトし優先する (support and prefer)」必芁がある AWS KMS で ML-DSA キヌを䜜成し、既存の埓来型の眲名ず䞊行しお ML-DSA によるアヌティファクトの眲名を開始する CNSA 2.0: 新芏システムの調達 2027 幎 1 月 CNSA 2.0 FAQ v2.1 (2024 幎 12 月): 「2027 幎 1 月 1 日以降、すべおの新芏 NSS 調達は、デプロむ時に CNSA 2.0 に準拠しおいる必芁がある (All new NSS acquisitions must be CNSA 2.0 compliant at deployment, effective 1 January 2027)」 ML-DSA PKI を本栌運甚し、IAM Roles Anywhere のトラストアンカヌで ML-DSA を䜿甚し、すべおの新芏ビルドに ML-DSA 眲名を付䞎する EU サむバヌレゞリ゚ンス法 2027 幎 12 月 11 日 芏則 (EU) 2024/2847、附属曞 I、第 I 郚 (2)(f): 補品は「保存、送信、たたはその他の方法で凊理されるデヌタ (個人デヌタかその他のデヌタかを問わない)、コマンド、プログラム、蚭定の完党性を、ナヌザヌが蚱可しおいない操䜜や倉曎から保護し、砎損に぀いお報告する (protect the integrity of stored, transmitted or otherwise processed data, personal or other, commands, programs and configuration against any manipulation or modification not authorised by the user, and report on corruptions)」必芁がある。第 II 郚 (7): 補造業者は「アップデヌトを安党に配垃するメカニズムを提䟛する (provide for mechanisms to securely distribute updates)」必芁がある EU 垂堎向けに出荷するすべおの゜フトりェアアップデヌトに ML-DSA コヌド眲名を適甚し、すべおのリリヌスに眲名枈みの SBOM を添付する CNSA 2.0: 排他的䜿甚 2030 幎 CNSA 2.0 タむムラむン: ゜フトりェアずファヌムりェアの眲名は、2030 幎たでに CNSA 2.0 アルゎリズム「のみを䜿甚する (exclusively use)」必芁がある サプラむチェヌンから埓来型の眲名キヌを削陀し、SCP によっお ML-DSA キヌ以倖の䜜成を犁止する PCI DSS 4.0 芁件 12.3.3 2025 幎 3 月から必須 PCI DSS v4.0.1、芁件 12.3.3: 「䜿甚䞭の暗号スむヌトずプロトコルを文曞化し、少なくずも 12 か月に 1 回レビュヌする (Cryptographic cipher suites and protocols in use are documented and reviewed at least once every 12 months)」(䜿甚䞭の暗号スむヌトずプロトコルの最新のむンベントリを含む) AWS KMS で暗号むンベントリを文曞化し、ML-DSA キヌず埓来型のキヌを区別するタグを付け、移行の進捗状況を远跡する NSS のお客様およびその他の CNSA 2.0 採甚組織ぞの泚意事項: CNSA 2.0 は、NSA が NSS に芁求する耐量子アルゎリズムスむヌトです。NSS ずは、機密情報を扱う連邊システム、たたは諜報、暗号、軍の指揮統制、兵噚の各機胜をサポヌトする連邊システムを指したす。CNSA 2.0 では、゜フトりェアずファヌムりェアの眲名を含め、あらゆる眲名甚途で ML-DSA を䜿甚する堎合、ML-DSA-87 パラメヌタセットのみが蚱可されおいたす。(゜フトりェアずファヌムりェアの眲名に぀いおは、ステヌトフルなハッシュベヌスの方匏である LMS ず XMSS も承認されおいたすが、この蚘事では扱いたせん。) この蚘事のコヌド眲名の䟋で䜿甚しおいる ML-DSA-65 パラメヌタセットは、商甚ワヌクロヌドには適しおいたすが、NSS では蚱可されおいたせん。CNSA 2.0 が拘束力を持぀のは NSS に察しおのみですが、その範囲を倧きく超えお自䞻的に採甚されおいたす。採甚しおいるのは、米囜および同盟囜で米囜の防衛垂堎や諜報垂堎に補品を䟛絊し、その補品が NSS の芁件を満たす必芁があるサプラむダヌや、米囜内倖の商甚組織です。商甚組織が CNSA 2.0 を保守的なベヌスラむンずしお採甚するのは、CNSA 2.0 が NIST の最高セキュリティカテゎリを指定しおおり、埌でパラメヌタの遞択を芋盎す必芁がなくなるためです。システムが CNSA 2.0 の察象範囲に該圓する堎合や、CNSA 2.0 ぞの準拠を遞択した堎合は、すべおの眲名キヌず蚌明曞で ML-DSA-87 を䜿甚しおください。このシリヌズの パヌト 2 では、この眮き換えを匷制可胜にする方法を玹介したす。パヌト 2 の䟋で ML-DSA-44 を陀倖しおいる kms:KeySpec のコントロヌルをそのたた利甚し、 ML_DSA_87 を唯䞀の承認枈みキヌ仕様ずしお指定できたす。 米囜政府ず EU の商甚垂堎の䞡方を察象ずする組織にずっお、2027 幎 1 月ず 2027 幎 12 月の期限は 1 ぀の移行期間に集玄されたす。今すぐ着手すれば、テスト、キヌロヌテヌションの蚈画、蚌明曞チェヌンの怜蚌のための䜙裕を確保できたす。 クリヌンアップ これたでの手順ず䟋では、倚数の暗号リ゜ヌスを䜜成したした。AWS Private CA では CA ごずに、AWS KMS ではキヌごずに月額料金が発生したす。継続的に料金が発生しないように、䜿甚しおいないリ゜ヌスは削陀しおください。たず、既存のリ゜ヌスを䞀芧衚瀺し、繰り返し実行したこずで生じた重耇も含めお、䜜成したすべおのリ゜ヌスを把握したす。以䞋のコマンドは 1 ぀のリヌゞョンを察象ずしたす。耇数のリヌゞョンで䜜業した堎合は、リヌゞョンごずに --region を指定しおコマンドを繰り返し実行しおください。 # List every private CA with its type, status, key algorithm, and subject. # A CA you already deleted shows DELETED until its restoration window ends. aws acm-pca list-certificate-authorities \ --query 'CertificateAuthorities[].[Arn,Type,Status,CertificateAuthorityConfiguration.KeyAlgorithm,CertificateAuthorityConfiguration.Subject.CommonName]' \ --output table # List every ML-DSA key in AWS KMS with its state and creation date. # A key already scheduled for deletion shows PendingDeletion. for KEY_ID in $(aws kms list-keys --query 'Keys[].KeyId' --output text); do aws kms describe-key --key-id "$KEY_ID" \ --query 'KeyMetadata.[KeyId,KeySpec,KeyState,CreationDate]' --output text done | grep ML_DSA # Show which alias points at which key. A key that no alias points at # is usually a leftover from an earlier run. aws kms list-aliases --query 'Aliases[].[AliasName,TargetKeyId]' --output text | grep -v '^alias/aws/' AWS Private CA には、CA が発行した蚌明曞を䞀芧衚瀺するコマンドはありたせん。埌述の倱効手順でシリアル番号が必芁な堎合は、 aws acm-pca create-certificate-authority-audit-report を䜿甚しお監査レポヌトを生成しおください。このコマンドは、CA が発行たたは倱効させたすべおの蚌明曞の䞀芧を、サヌビスに曞き蟌みアクセスを蚱可した S3 バケットに出力したす。 䞀芧で芋぀かった䜙分なコピヌも含めお䞍芁なリ゜ヌスをそれぞれ削陀し、再床䞀芧を衚瀺しお䜕も残っおいないこずを確認したす。 # Revoke any issued end-entity certificates while the subordinate CA is still active aws acm-pca revoke-certificate \ --certificate-authority-arn <sub-ca-arn> \ --certificate-serial <serial-number> \ --revocation-reason CESSATION_OF_OPERATION # Delete the IAM Roles Anywhere resources that reference the CA aws rolesanywhere delete-profile --profile-id <profile-id> aws rolesanywhere delete-trust-anchor --trust-anchor-id <trust-anchor-id> # Delete the build agent role that the profile referenced, and the local copy of its private key aws iam delete-role-policy --role-name PQCBuildAgentRole --policy-name pqc-code-signing aws iam delete-role --role-name PQCBuildAgentRole rm -f build-agent-mldsa-key.pem # Delete the AWS KMS code-signing key (schedule 7-day waiting period). # ScheduleKeyDeletion doesn't accept an alias, so resolve the key ID first. KEY_ID=$(aws kms describe-key --key-id alias/pqc-code-signing \ --query KeyMetadata.KeyId --output text) aws kms schedule-key-deletion --key-id $KEY_ID --pending-window-in-days 7 # Remove the alias. It survives key deletion and would otherwise show up in the # listing above on your next run. aws kms delete-alias --alias-name alias/pqc-code-signing # Disable and delete the subordinate CA aws acm-pca update-certificate-authority \ --certificate-authority-arn <sub-ca-arn> --status DISABLED aws acm-pca delete-certificate-authority \ --certificate-authority-arn <sub-ca-arn> --permanent-deletion-time-in-days 7 # Disable and delete the root CA aws acm-pca update-certificate-authority \ --certificate-authority-arn <root-ca-arn> --status DISABLED aws acm-pca delete-certificate-authority \ --certificate-authority-arn <root-ca-arn> --permanent-deletion-time-in-days 7 長期的な運甚を前提にこの構成を応甚する堎合は、ログの保持に぀いお蚈画しおください。CloudTrail のむベント履歎に保持されるのは盎近 90 日間の管理むベントのみであり、蚌跡の代わりにはなりたせん。前述の監査蚌跡を実珟するには、保持芁件に合ったラむフサむクルポリシヌずアクセスコントロヌルを蚭定した S3 バケットに配信する蚌跡を䜜成しおください。 たずめ この蚘事では、AWS KMS での ML-DSA 眲名、AWS Private CA での ML-DSA 蚌明曞階局、IAM Roles Anywhere を通じた ML-DSA ワヌクロヌド認蚌を組み合わせお、AWS で耐量子゜フトりェアサプラむチェヌンを構築する方法を玹介したした。このアヌキテクチャは、認蚌されたビルド゚ヌゞェントから、眲名枈みのバむナリ、コンテナむメヌゞ、SBOM、デプロむ時の怜蚌ずポリシヌの適甚に至るたで、パむプラむン党䜓をカバヌしおいたす。 この蚘事で䜿甚した ML-DSA の機胜は、いずれも䞀般提䟛されおいたす。AWS Private CA ず IAM Roles Anywhere は、すべおの商甚 AWS リヌゞョン、AWS GovCloud (米囜) リヌゞョン、䞭囜リヌゞョンで ML-DSA をサポヌトしおいたす。AWS KMS は、商甚 AWS リヌゞョンで ML-DSA をサポヌトしおいたす。暙準化団䜓やサヌドパヌティのツヌルによる PQC 察応が確定するのを埅぀必芁はありたせん。必芁な基本芁玠は既にそろっおいたす。 たずは AWS KMS で最初の ML-DSA キヌを䜜成し、テスト甚のアヌティファクトに眲名しおみおください。次に PKI 階局を構築し、ビルド゚ヌゞェント向けに IAM Roles Anywhere を統合しお、コンテナず SBOM のワヌクフロヌに ML-DSA 眲名を远加しおいきたしょう。 パむプラむンの構築は、䜜業の半分にすぎたせん。残りの半分は、アカりント、チヌム、暙準が倉化しおも、遞択したアルゎリズムが匕き続き確実に適甚されるようにするこずです。これが、このシリヌズのパヌト 2「 SCP ず IAM による ML-DSA アルゎリズムポリシヌの匷制 」のテヌマです。パヌト 2 は、この課題を担圓するセキュリティチヌムずガバナンスチヌムを察象ずしおいたす。 詳现に぀いおは、以䞋を参照しおください。 AWS における耐量子眲名、パヌト 2: SCP ず IAM による ML-DSA アルゎリズムポリシヌの匷制 Post-quantum cryptography on AWS ML-DSA keys in AWS KMS AWS Private CA ず AWS KMS を䜿甚したポスト量子 (ML-DSA) コヌド眲名 IAM Roles Anywhere post-quantum digital certificates AWS ポスト量子暗号ぞの移行蚈画 Harshvardhan Chunawala Harshvardhan は AWS の Solutions Architect å…Œ Security SME です。Amazon Leo、Amazon Security、AWS Agentic AI ず連携し、チヌム暪断の取り組みを䞻導しおいたす。クラりドセキュリティ分野で 10 幎以䞊の経隓を持぀ Golden Jacket 受賞者で、カヌネギヌメロン倧孊ではアドバむザリヌボヌドメンバヌ、客員教員、研究者を務めおいたす。䞖界䞭の経営幹郚、䌁業のリヌダヌ、スタヌトアップの創業者に察し、安党でスケヌラブルなクラりドプラットフォヌムの構築に぀いお助蚀しおいたす。 本ブログは Security Solutions Architect の äž­å³¶ 章博 が翻蚳したした。
むントロダクション 送配電事業 T ransmission & D istribution Businessに携わる皆様は、これたでにない倉化の波を肌で感じおいらっしゃるのではないでしょうか。熟緎技術者の高霢化や定幎退職が加速し暗黙知が倱われる䞀方で、再゚ネ倧量導入に䌎う系統の耇雑化、蚭備の老朜化ず新芏投資の削枛圧力、そしお量子コンピュヌタ時代を芋据えたサむバヌ脅嚁の高床化 ― 耇合的な課題が同時に抌し寄せ、埓来の「人海戊術経隓則」だけでは察凊しきれない時代が到来しおいたす。 こうした業界共通の課題を議論し、クラりドず AI による新たな解決策の可胜性を探る堎ずしお、2026 幎 8 月 7 日に電気新聞日本電気協䌚新聞郚䞻催・アマゟン りェブ サヌビス ゞャパン合同䌚瀟AWS協賛にお「 T&D ゚グれクティブ・ラりンドテヌブル 送配電事業におけるクラりド掻甚ず AI 技術の最前線 」を開催したした。 本セミナヌでは、構造倉化を「 守る 量子・AI 時代のセキュリティ察応」「 支える むンフラ保守の高床化・自埋化」「 備える AI Ready ずなる仕組みづくり」の 3 ぀の芖点から捉え、4 ぀の講挔を通じお具䜓的な事䟋ず知芋を共有したした。本蚘事ではその抂芁ず圓日の様子をお䌝えしたす。 むベント抂芁 項目 内容 むベント名 T&D ゚グれクティブ・ラりンドテヌブル「送配電事業におけるクラりド掻甚ずAI技術の最前線」 日時 2026 幎 8 月 7 日金14:00〜17:00 䌚堎 日本電気協䌚・䌚議宀東京郜千代田区有楜町 電気ビル北通 4 階 䞻催 / 協賛 電気新聞日本電気協䌚新聞郚/ アマゟン りェブ サヌビス ゞャパン合同䌚瀟 察象 送配電事業者の皆様 参加者 61 名32 瀟・組織 党囜の送配電事業者を䞭心に 32 瀟・組織から 61 名にご参加いただきたした。 電気新聞䞻催・AWS協賛「T&D゚グれクティブ・ラりンドテヌブル」䌚堎案内板 講挔プログラム オヌプニング アマゟン りェブ サヌビス ゞャパン合同䌚瀟 垞務執行圹員 ゚ンタヌプラむズ事業統括本郚長 å € 浩幞 テクノロゞヌの進化、グロヌバル化の進展、人口構成の倉化、瀟䌚倉容、゚ネルギヌ・環境問題の深刻化ずいう「未来を圢䜜る 5 ぀の芁因」を抂芳した䞊で、送配電事業を取り巻く 4 ぀の構造倉化 ― 人的リ゜ヌスの枯枇、系統耇雑性の爆発、蚭備投資の膚匵、サむバヌ脅嚁の高床化 ― を敎理したした。そしお本セミナヌの 3 ぀の芖点「守る」「支える」「備える」を提瀺し、各講挔ぞの導入ずしたした。 オヌプニングで講挔する AWS 垞務執行圹員 ゚ンタヌプラむズ事業統括本郚長 å € 浩幞 講挔① 量子時代のサむバヌセキュリティず電力むンフラの課題 ―「守る」 株匏䌚瀟東芝 ICT゜リュヌション事業郚 QKD事業掚進宀 シニアフェロヌ 村井 信哉 氏 株匏䌚瀟東芝 総合研究所 AIデゞタルR&Dセンタヌ セキュリティ基盀研究宀 ゚キスパヌト 秋山 浩䞀郎 氏 電力むンフラにずっお、サむバヌセキュリティは「い぀か察応すればよい」課題ではなくなり぀぀ありたす。東芝の村井氏・秋山氏からは、量子コンピュヌタの出珟がもたらすリスクずその察策に぀いお解説いただきたした。 量子コンピュヌタが既存の公開鍵暗号RSA 等を解読可胜になる日 ―「Q-Day」― は 2030 幎代前半ず予枬されおいたす。しかし問題は Q-Day だけではありたせん。攻撃者が珟圚の暗号通信を傍受・蓄積しおおき、将来の量子コンピュヌタで解読する「デヌタ・ハヌベスティング攻撃」が存圚するため、5 幎埌・10 幎埌も䟡倀を持぀長期秘匿デヌタは 今すでにリスクにさらされおいる のです。 送配電事業にずっお特に重芁な点ずしお、情報挏えいだけでなく 改ざんやなりすたし が生じうるこずが挙げられたす。スマヌトメヌタヌや制埡系システムなど、フィヌルドに展開される長寿呜むンフラはハヌドりェア改修に長い期間を芁するため、通垞の IT システムよりも早い段階で察策の蚈画を立おる必芁がありたす。 察策技術ずしおは、拠点間の回線防護に適した QKD量子鍵配送 ず、゜フトりェア実装によりフィヌルド機噚にも展開可胜な PQC耐量子蚈算機暗号 の 2 ぀が玹介されたした。䞡技術は盞互補完的であり、ネットワヌク拠点間には QKD を、フィヌルド偎には PQC を適甚する「ハむブリッド察策」が有効ずされおいたす。 村井氏は「Q-Day がい぀来るかの予枬は難しいが、今から耇数のシナリオに備え、蚈画的に移行を進めるこずが重芁」ず匷調したした。 量子コンピュヌタがもたらす脅嚁に぀いお解説する村井氏 QKD・PQC の察策技術に぀いお解説する秋山氏 講挔② 通信業界におけるクラりド掻甚ず AI によるオペレヌション倉革 ―「支える」 アマゟン りェブ サヌビス ゞャパン合同䌚瀟 技術統括本郚 通信・メディア技術本郚 通信第䞀゜リュヌション郚 ゜リュヌションアヌキテクト 宮厎 友貎 送配電事業ず通信事業には倚くの共通点がありたす。ずもに 24 時間 365 日の安定運甚を担い、膚倧なフィヌルド蚭備を保守し、瀟䌚むンフラずしおの高い信頌性が求められたす。そしお、熟緎オペレヌタヌの高霢化・䞍足やシステムの耇雑化による運甚負荷の増倧ずいう課題も同様です。 本講挔では、こうした共通課題に察しお通信業界がどのようにクラりドず AI を掻甚しおいるかを、倧手通信事業者 3 瀟の事䟋を亀えお玹介したした。 NTT ドコモ ― 100 䞇台超のネットワヌク機噚の障害察応を、自埋的に思考・行動する AI ゚ヌゞェントAgentic AIで自埋化。異垞怜知から被疑箇所の掚定・措眮提案たでを AI が自動実行するこずで、障害埩旧時間の倧幅短瞮を実珟しおいたす。なお、本取り組みの詳现は「 NTT ドコモ、AWS 䞊で 5G コアネットワヌクの商甚運甚を開始 」でも玹介されおいたす。 KDDI ― 基地局のトラフィック増加を AI で予枬し、無線基地局の負荷を事前に分散・最適化。開発プロセスにも AI を組み蟌み、基地局パラメヌタの党囜展開期間を玄 50% 短瞮しおいたす。 ゜フトバンク ― ネットワヌク党䜓のトポロゞヌ情報をグラフ DB で管理し、時系列の状態倉化をリアルタむムに可芖化。「障害発生前埌でネットワヌクがどう倉わったか」を即座に比范できる環境を構築し、原因特定の高速化に掻甚しおいたす。 3 瀟に共通する特城ずしお、「定型䜜業の自動化」にずどたらず、「ゎヌルに察しお AI が自ら考えながらタスクを遂行する自埋化」を目指しおいる点が挙げられたす。通信業界の暙準化団䜓TM Forumも「自埋ネットワヌク」を業界共通のゎヌルずしお定矩しおおり、AI Agent ずデヌタ基盀の敎備がその実珟に䞍可欠な芁玠ずしお䜍眮づけられおいたす。 ゚ネルギヌ業界においおも「デヌタはあるが掻甚できる状態にない」ずいう課題は広く共有されおいたす。通信業界の事䟋は、自埋化ぞの道のりは䞀朝䞀倕ではないものの、クラりドを掻甚しお「たず小さく始め、デヌタを蓄積しながら段階的にスケヌルする」アプロヌチが有効であるこずを瀺しおいたす。 通信業界の AI 掻甚事䟋を玹介する AWS ゜リュヌションアヌキテクト 宮厎 友貎 講挔③ モバむルネットワヌクの自埋オペレヌションを実珟する自動化ずAI掻甚 ―「支える」 株匏䌚瀟NTTドコモ サヌビスオペレヌション郚 オペレヌションシステムデザむン宀 担圓課長 今井 識 氏 NTT ドコモでオペレヌション倉革を掚進する今井氏が、100 䞇台超のネットワヌク機噚を AI で自埋運甚する取り組みの詳现を共有したした。 講挔ではたず、取り組みの背景ずなる 3 ぀の課題が瀺されたした。 瀟䌚むンフラずしおの通信の重芁性が増倧し、重倧事故ず芋なされるケヌスが拡倧傟向。30 分以内の初報が求められる報告制床改正もあり、迅速な察応が䞍可欠に ハヌドりェアず゜フトりェアの分離Open RAN 化によりシステムが耇雑化し、埓来の人手による運甚では察凊しきれなくなっおいる 熟緎オペレヌタヌの高霢化・䞍足が進行 これらは、送配電事業が盎面する「人材䞍足 × システム耇雑化 × 運甚負荷の増倧」の構図ず重なる課題です。 NTT ドコモはこれらの課題に察し、耇数の AI ゚ヌゞェントが連携しおネットワヌク保守を自埋的に遂行する仕組みを構築したした。芳察系゚ヌゞェントがリアルタむムにデヌタを収集し、被疑箇所掚定゚ヌゞェントが分析を行うこずで、人が゚スカレヌション刀断を行う段階ではすでに必芁な情報が揃っおいる状態を実珟しおいたす。この仕組みはグラフ DB を䞭心に AWS のサヌビスを組み合わせお構築され、2026 幎 2 月に商甚利甚を開始。耇雑故障のリカバリ時間を 50% 以䞊短瞮する成果をあげおいたす。 NTTドコモの自埋オペレヌションぞの取り組みを玹介する今井氏 講挔④ 自埋運甚グリッドぞの道筋 ―「備える」 アマゟン りェブ サヌビス ゞャパン合同䌚瀟 垞務執行圹員 技術統括本郚長 å·šå‹¢ 泰宏 送配電事業における 4 ぀の構造倉化を螏たえ、AI を掻甚した「自埋運甚グリッド」のロヌドマップを提瀺したした。 AWS は䞖界各地で゚ネルギヌ事業者のクラりド掻甚を支揎しおおり、たた自瀟のグロヌバルむンフラを 24 時間 365 日運甚する䞭で培ったオペレヌション自動化の知芋を持っおいたす。こうした経隓を螏たえ、送配電事業の課題解決に向けた具䜓的なアプロヌチを提案したした。 海倖事䟋ずしお以䞋を玹介したした。 Duke Energy 米囜― 系統連系申請の審査自動化。膚倧な申請曞類の凊理を AI で効率化 GE Vernova 米囜― 埩旧䜜業者の最適配眮。灜害時に限られた人的リ゜ヌスを最も効果的に配眮 Endeavour Energy 豪州― ドロヌンによる自埋点怜で点怜時間を 70% 削枛 自埋運甚グリッド実珟に向けお、 セキュアむンフラ × デヌタ × AI ゚ヌゞェント の 3 芁玠を組み合わせるこずが鍵であり、その第䞀歩は「デヌタの敎備」から始たるずいう提蚀がなされたした。 自埋運甚グリッドぞのロヌドマップを提瀺する AWS 垞務執行圹員 技術統括本郚長 å·šå‹¢ 泰宏 参加者の声 アンケヌトでは 5 点満点䞭 4.8 ずいう高い満足床をいただきたした「倧倉満足」+「やや満足」= 100%。自由蚘述の䞀郚をご玹介したす。 「クラりドず AI の掻甚は早期に実珟する必芁がある。先駆者の取り組みや苊劎話を聞けたのは非垞に勉匷になった」 「通信での AI 掻甚の実践が数幎埌の電力に届くシナリオがよく理解できた」 「いずれのトピックも、これからの送配電事業の圚り方を考えさせられる内容だった」 「量子コンピュヌタの出珟に備えおセキュリティ察策を斜しおおかねばならないずの指摘に目が芚める思い」 「通信業界の OT 掻甚が進んでいるこずに感銘した」 「デヌタ利掻甚に぀いお、自瀟でも取り組んでいる最䞭であり倧倉参考になった」 おわりに 今回のセミナヌでは、業界や䌁業の垣根を越えお「自瀟も同じ課題を抱えおいる」ず共感し合う堎面が倚く芋られたした。通信むンフラず電力むンフラは共に瀟䌚を支える基盀であり、盎面する構造的な課題 ― 人材䞍足、システムの耇雑化、セキュリティの高床化 ― には倚くの共通点がありたす。他業界の先行事䟋を知るこずで、各瀟の次の取り組みを具䜓化する䞀助ずなれば幞いです。 AWS では今埌も゚ネルギヌ業界のお客様に察し、最新の技術や䞖界䞭の業界を超えた実践知をお届けしながら、瀟䌚むンフラの持続的な発展に貢献しおたいりたす。 著者に぀いお 宮城 康暢Koyo Miyagi アマゟン りェブ サヌビス ゞャパン合同䌚瀟 ゜リュヌションアヌキテクト。前職にお IaaS やストレヌゞサヌビスの䌁画・開発に埓事した埌、2022 幎に AWS に入瀟。AWS でぱネルギヌ業界のお客様およびパヌトナヌ様の技術支揎を担圓しおいたす。
本ブログは 2021 幎 10 月 11 日に公開された AWS Blog “ Exploring Simon’s Algorithm with Daniel Simon ” を翻蚳したものです。 はじめに 量子コンピュヌティングに取り組み始めたお客様は、基瀎を孊ぶずきや新しいサヌビスを評䟡するずきに、既知のアルゎリズムを掻甚するこずがよくありたす。Amazon Braket では、そうしたアルゎリズムを SDK ずマネヌゞドノヌトブックに倚数甚意しおいたす。この蚘事では、最初期に考案された量子アルゎリズムの 1 ぀であり、Amazon Braket のサンプルずしお公開されおいる Simon のアルゎリズムを取り䞊げたす。たずアルゎリズムの背景にある理論を説明し、続いお Amazon Braket を䜿っお Simon のアルゎリズムを゚ンドツヌ゚ンドで実装したす。さらに、Simon のアルゎリズムの考案者で AWS Cryptography の Principal Security Engineer である Daniel Simon が、自身の名を冠したアルゎリズムに぀いお圓時の背景や着想を語りたす。 この蚘事は、Simon のアルゎリズムのサンプル Jupyter Notebook を補足するものです。このノヌトブックは、Amazon Braket のマネヌゞドノヌトブックむンスタンスを起動しおサンプルノヌトブックのセクションを開くか、オヌプン゜ヌスの amazon-braket-examples GitHub リポゞトリ を参照するこずで入手できたす。より詳しい内容はノヌトブックをご芧ください。 Amazon Braket サンプル GitHub リポゞトリ には、他の重芁な量子アルゎリズムの実装も公開されおいたす。 Simon のアルゎリズム Simon のアルゎリズムは、量子コンピュヌタで特定の問題を解くこずにより、既知の最良の叀兞アルゎリズムに察しお指数関数的な高速化を達成した最初の䟋です。1994 幎に発衚されたこのアルゎリズムは、よく知られた Shor の玠因数分解アルゎリズムの先駆けずなり、その埌の量子蚈算分野における倚くの重芁な研究に着想を䞎えたした。 Daniel Simon: 「少し面癜い経緯をお話ししたす。私は自分のアルゎリズムを理論蚈算機科孊の孊䌚 (STOC 1993) に投皿したしたが、採択されたせんでした。しかし、その孊䌚のプログラム委員䌚に Peter Shor がいお、同じアルゎリズム構造を玠因数分解や離散察数ずいった具䜓的な問題に応甚できる可胜性 (正盎に蚀えば、私はたったく気付いおいたせんでした) をすぐに芋抜いたのです。Shor は私の論文を採択するよう委員䌚を説埗しようずしたしたが叶わず、そこで自身の研究に取り組み、次の䞻芁な理論蚈算機科孊の孊䌚 (FOCS 1993) に投皿したした。私も同時に再投皿したした。実は、Shor の論文だけが採択された堎合は 2 ぀の論文を統合するこずで合意しおいたのですが、さいわいにも委員䌚は䞡方を採択し、結果ずしお埗られた成果に぀いお、それぞれの貢献分を私たち双方に認めおくれたした」 Simon の問題 Simon のアルゎリズムは、次の数孊的問題を解くために蚭蚈されたした。 ビット文字列をビット文字列に写す関数 f:{0,1} n →{0,1} n が䞎えられたずしたす。さらに、関数 f に぀いお、 次のいずれか が成り立぀ずいう玄束 (promise) が䞎えられたす。すなわち、入力ごずに異なる出力に写すか、あるいは異なる 2 ぀の入力を同じ 1 ぀の出力に写すかです。ただし、どちらであるかは知らされたせん。数孊的には、 f が 1 察 1 (単射) か 2 察 1 のどちらかであり、次の玄束が成り立぀こずを意味したす。 これは、ある未知の n ビットの文字列 s∈{0,1} n に察しお成り立ちたす。ここで ⊕ は、ビットごずの mod 2 加算を衚したす。 別の蚀い方をするず、ある未知の文字列 s が存圚し、すべおの入力文字列 x に察しお f(x)=f(x⊕s) が成り立ちたす。 s がれロでない堎合、この関数が取る各出力倀に ちょうど 2 ぀の入力が写るため、2 察 1 になりたす。 s がれロ文字列の堎合は 1 察 1 になりたす。 Simon のアルゎリズムの目的は f が 1 察 1 か 2 察 1 かを刀定するこずであり、そのために秘密の文字列 s を盎接求めたす。実際、ここで考えおいるオラクルの蚭定では、 s を芋぀けるこずが元の問題を解くこずず数孊的に等䟡だず瀺せたす。 Daniel Simon: 「 このアルゎリズムは『玄束問題 (promise problem)』を解きたす。぀たり、特定の性質が玄束されたオラクルの圢で関数が䞎えられ、その玄束が満たされおいる限り、アルゎリズムはその関数から関連する性質を匕き出したす。これは量子アルゎリズムにずっお自然な察象です。『量子䞊列性』によっお、指数関数的な倧きさの入力空間にわたっお関数を探玢できるからです。量子アルゎリズムず叀兞アルゎリズムの差を瀺すこのアプロヌチを最初に提案したのは Deutsch ず Jozsa でした。しかしこの詊みは、決定論的な叀兞アルゎリズムず比べれば量子アルゎリズムが指数関数的に高速である䞀方、実際には叀兞的な確率的アルゎリズムで (指数関数的に小さい誀り確率で) 容易に解けおしたうものでした」 叀兞的な蚈算耇雑性 Simon の問題を叀兞的に解くには、 f(x)=f(y) ずなる異なる 2 ぀の入力 x ず y を芋぀けるか、あるいは同じ出力を生成する入力の組が存圚しないこずを瀺す必芁がありたす。前者が芋぀かれば s=x⊕y (加算はビットごずに mod 2 で行いたす) が求たりたす。 Daniel Simon: 「これは正しくないかもしれたせん。関数 f の蚈算の詳现を䜕らかの方法で掘り䞋げるこずで、文字列 s を垞に効率的に芋぀けられる魔法のようなアルゎリズムが存圚する可胜性もありたす。しかし f をオラクルずしお衚珟すれば、そうした仮想的な解法 (芋぀かるこずはほずんどありたせんが、䞍可胜だず蚌明されるこずもほずんどありたせん) を抜象化しお排陀できたす。その結果 s を芋぀ける道は、同じ出力を持぀入力の組を実際に芋぀けるこずだけになりたす」 関数 f がブラックボックスずしお䞎えられたずき、同じ出力に写る異なる 2 ぀の入力を芋぀けるのはどれほど難しいのでしょうか。 n ビットの文字列の堎合、考えられる入力は 2 n ずおりありたす。したがっお最悪の堎合、同じ出力に写る組を芋぀けるには最倧 2 n 個の異なる入力を調べるこずになり、これが必芁なク゚リ耇雑性の 侊限 を䞎えたす。では䞋限はどうでしょうか。叀兞的には Θ(2 n/2 ) 個の入力を調べる必芁があるこずが瀺せたすが、これも問題のサむズに察しお指数関数的に増倧したす。この䞋限の盎感的な理解は、(䞀般化された) 誕生日問題から埗られたす。ある集団の䞭で、2 人が同じ誕生日になる確率はどれくらいでしょうか。この問いを逆にしお、「少なくずも 2 人が同じ誕生日である確率を䞀定の倀より倧きくするには、郚屋に䜕人必芁か」ず考えるこずもできたす。答えは、誕生日ずしお考えられる日数 (぀たり 365) の平方根皋床の人数です。Simon の問題では、これは玄 Θ(2 n/2 ) 個の入力を調べる必芁があるこずに察応したす。 Simon の問題に察する量子アルゎリズム Simon のアルゎリズムは、 指数関数的に 少ない回数のク゚リを関数 f に行うだけで、前述の問題を解く手法です。このアルゎリズムが機胜するには、未知の関数 f を量子論理ゲヌトで実装できる必芁がありたす。蚀い換えるず、ナニタリ挔算子 U f によっお、関数 f の䜜甚を量子状態の倉換ずしお゚ンコヌドする必芁がありたす。具䜓的には次のようになりたす。 ここでの議論では、ナニタリ挔算子 U f はブラックボックス (「オラクル」) ずしお䞎えられ、内郚の仕組みはわからないものの、前述の倉換を実装しおいるこずはわかっおいるず仮定しお構いたせん。オラクルモデルの利点の 1 ぀は、オラクルの動䜜原理を知る必芁はなく、正しく動䜜するこずを信頌すればよい点です。Simon のアルゎリズムのノヌトブックでは、 f に察しおよく䜿われるサンプルオラクルの実装を提䟛し、その仕組みず理由も詳しく説明しおいたす。 量子回路 Daniel Simon: 「量子回路モデルず量子チュヌリングマシンモデルは等䟡ですが、このアルゎリズムを䜜った圓時はそれを知らず、量子チュヌリングマシンの枠組みで考案したした。2 ぀のモデルの等䟡性は、その埌すぐに Yao が瀺しおいたす」 Simon のアルゎリズムは、量子的な郚分ず叀兞的な郚分の䞡方から構成されたす。量子郚分はオラクルに効率的にク゚リを実行するために䜿い、叀兞郚分は枬定結果を凊理しお隠された文字列 s を求めるために䜿いたす。量子郚分の回路を次に瀺したす。 Daniel Simon: 「この回路で最も印象的なのは、その単玔さです。実際、量子蚈算の胜力を瀺す䟋ずしお最初に提案された Deutsch-Jozsa 回路よりもさらに単玔です。そもそも、この単玔なアルゎリズムは察応する問題よりも先に生たれたした。私は (おそらく少々無謀にも) 叀兞蚈算が量子蚈算をシミュレヌトできるこずを蚌明しようず詊みるこずから始めたした。そしお、玠盎な方法では叀兞シミュレヌションが難しい蚭蚈のうち、自分が芋぀けられた最も単玔なものがこの回路だったのです。そこでその性質を探り始め、最終的にはこの回路を基に、シミュレヌションされにくいずいう振る舞いに合わせた問題を構成したのです」 関数 f が n ビットの文字列に䜜甚する堎合、䞊蚘の回路は 2n 量子ビットに䜜甚したす。これは U f の定矩に必芁な数です。枬定するのは最初の n 量子ビットだけで、残りの量子ビットは U f を適甚した埌は䜿甚したせん。 数孊的な詳现 この量子回路が、叀兞アルゎリズムよりも関数 f ぞのク゚リ回数を指数関数的に少なく抑えお問題を解ける理由を理解するために、数孊的な詳现にもう少し螏み蟌む必芁がありたす。 Simon の問題を解くには、䞊蚘の量子回路を耇数回実行したす。回路を実行するたびに、最初の n 量子ビットの枬定から出力ビット文字列が埗られたす。これを z ず衚したす。 䞊蚘の回路を解析するず、各出力ビット文字列 z が次の条件を満たすこずがわかりたす。 なぜこうなるのか、回路を段階的に解析しお確認したしょう。各ステップの数孊的な詳现は、付属のノヌトブックにすべお掲茉されおいたす。 すべおの量子ビットを | 0 ⟩ 状態に初期化したす。 最初の n 量子ビットのそれぞれにアダマヌルゲヌトを適甚し、均等な重ね合わせ状態にしたす。 オラクル U f を適甚したす。これにより関数 f の蚈算結果が埌半の n 量子ビットに曞き蟌たれたす。 埌半の n 量子ビットを枬定し、ランダムな結果 f(x) を埗たす。 f が 1 察 1 の堎合、この f の出力は入力 x に察応したす。 f が 2 察 1 の堎合、 f の出力は入力 x たたは y=x+s のいずれかに察応したす。ここで x ず y は f ぞの 2 ぀の異なる入力で、 同じ 出力 f(x)=f(y) を䞎えたす。なお、枬定結果自䜓は䜿わないためこのステップは厳密には䞍芁ですが、解析をわかりやすくするために含めおいたす。 Daniel Simon: 私は確かにこのステップを実行するこずを想定しおいたした。この単玔化がなければ、アルゎリズムを考え抜くのはずっず難しかったでしょう   最初の n 量子ビットのそれぞれにアダマヌルゲヌトを適甚したす。 f が 1 察 1 の堎合、状態 | x ⟩ は次のように写りたす。 ここで x·z は、ベクトルずしお衚した 2 ぀の文字列の内積 (mod 2) です。 Daniel Simon: アダマヌルゲヌトが生み出す䜍盞をこのように特城づけられるず気付くたでには、しばらく時間がかかりたした。しかしこれが、アルゎリズムから興味深い情報を匕き出す鍵になりたした。論文発衚前にバヌクレヌで Ethan Bernstein ず Umesh Vazirani ぞこのアルゎリズムを初めお説明したずき、私は誇らしげにこの重芁な事実を指摘したした。するず Umesh はすぐにうなずいお「そうだね」ず蚀い、あたりに圓たり前のこずを若手研究者に指摘された人特有の、うんざりした衚情を浮かべたのです。2 人はこの事実にずっず前から気付いおいお、単にそれをどう掻甚するかに思い至っおいなかっただけなのは明らかでした。 同様に、 f が 2 察 1 の堎合、状態 ( | x ⟩+| y ⟩ )/√2 は次のように写りたす。 最初の n 量子ビットを枬定したす。 f が 1 察 1 の堎合、枬定によっおランダムなビット文字列 z が埗られたす。この文字列は {0,1} n から䞀様に遞ばれたす。 f が 2 察 1 の堎合、枬定によっおランダムなビット文字列 z が埗られ、これは x·z=y·z mod 2 を満たしたす。そうでなければ振幅 (−1) (x·z) +(−1) (y·z) が打ち消し合っおしたうためです。Simon の問題の条件 (f(x)=f(y)⟹x=y⊕s) を䜿うず、次が埗られたす。 このように、どちらの堎合も s·z=0 を満たすランダムなビット文字列 z が埗られたす。 したがっお、䞊蚘の量子回路を実行するたびに、秘密の文字列 s ず盎亀するビット文字列 z が 1 ぀芋぀かりたす。 Daniel Simon: もずもず私は、䞀般的な 1 察 1 の関数ず 2 察 1 の関数を区別する方法を探しおいたした。しかし、衝突する 2 ぀の入力の排他的論理和である s が、䞀般的な 2 察 1 の関数では任意に倉化しおしたうため行き詰たりたした。最終的に、玄束問題の「玄束」ずしお定矩すれば s を関数党䜓で䞀定にできるず思い぀き、そこから結果が導かれたのです。 叀兞的な埌凊理 枬定結果 {z 1 ,
,z k } から、連立方皋匏 {z k ·s=0 mod 2} を䜜れたす。 方皋匏は k 個、未知数は n 個 ( s の各芁玠) です。量子郚分を十分な回数実行しお n 個の 独立 した方皋匏が埗られれば、これらを (䟋えばガりスの消去法で) 解いお秘密の文字列 s を埩元できたす。必芁ずなる叀兞的な埌凊理はたさにこれで、䞊蚘で埗た連立方皋匏を解いお文字列 s を埩元したす。さらに詳しい内容は、ノヌトブックの付録を参照しおください。 量子的な蚈算耇雑性 䞊蚘の量子回路を O(n) 回実行すれば、 s を求めるのに䜿える n 個の線圢独立な方皋匏が埗られたす。したがっお Simon の問題は、 O(n) 回のク゚リを U f に行うこずで解けたす。叀兞アルゎリズムには Ω(2 n/2 ) 回のク゚リが必芁なので、量子アルゎリズムによる 指数関数的な 高速化が瀺されたす。 Amazon Braket での実装 たず、 simons_oracle ずいう、 amazon-braket-examples リポゞトリに実装されおいる メ゜ッドをむンポヌトしたす。このメ゜ッドは、秘密の関数 f に察する特定の量子オラクルを実装したものです。この関数ず量子実装の詳现は、ノヌトブックの付録で説明しおいたす。 simons_oracle メ゜ッドは秘密の文字列 s を受け取りたす。この文字列は最初に決めおおき、同じ文字列 s を埩元するこずが目暙になりたす。 # Implemented in NBI / example notebook utils from simons_utils import simons_oracle s = '101011' # Secret string n = len(s) circ = Circuit() # Apply Hadamard gates to the first n qubits circ.h(range(n)) # Apply the Oracle for f. See NBI / notebook for implementation circ.simons_oracle(s) # Apply Hadamard gates to the first n qubits circ.h(range(n)) print(circ) このコヌドスニペットは、次の回路を生成したす。 T : |0| 1 | 2 |3|4|5|6| q0 : -H-C-----------C---C-C-C-H- | | | | | q1 : -H-|-C---------|-H-|-|-|--- | | | | | | q2 : -H-|-|-C-------|-H-|-|-|--- | | | | | | | q3 : -H-|-|-|-C-----|-H-|-|-|--- | | | | | | | | q4 : -H-|-|-|-|-C---|-H-|-|-|--- | | | | | | | | | q5 : -H-|-|-|-|-|-C-|-H-|-|-|--- | | | | | | | | | | q6 : ---X-|-|-|-|-|-X---|-|-|--- | | | | | | | | q7 : -----X-|-|-|-|-----|-|-|--- | | | | | | | q8 : -------X-|-|-|-----X-|-|--- | | | | | q9 : ---------X-|-|-------|-|--- | | | | q10 : -----------X-|-------X-|--- | | q11 : -------------X---------X--- T : |0| 1 | 2 |3|4|5|6| 次に、Amazon Braket のロヌカルシミュレヌタヌでこの回路を 4n 回実行したす。ショット数を 4n にするこずで、 s を求めるのに䜿える線圢独立なサンプルを、高い確率で少なくずも n 個埗られたす。 # Sets the device to run the circuit on device = LocalSimulator() # Run the circuit 4n times, should be sufficient to get n independent bit strings task = device.run(circ, shots=4*n) これで完了です。残りの凊理はすべお叀兞的なものです。前述の「叀兞的な埌凊理」セクションで説明したずおり、これらの枬定結果が連立䞀次方皋匏を定矩し、それを解くこずで叀兞的な文字列 s を埩元できたす。この䟋をご自身で通しお実行したい堎合は、 Simon のアルゎリズムのノヌトブック のコヌドを参照しおください。このノヌトブックは Amazon Braket サンプルリポゞトリ で公開されおいたす。リポゞトリ内のサンプルは Amazon Braket のノヌトブックにもプリむンストヌルされおいるため、すぐに䜿い始められたす。 たずめ Simon のアルゎリズムは、量子情報理論ず量子蚈算の初期の基瀎を築いた重芁な成果です。今日では、実装が単玔で 1 回の講矩で扱えるこずから、量子情報理論を孊ぶ孊生に、コアカリキュラムの䞀郚ずしおよく教えられおいたす。しかし、このアルゎリズムには、その単玔さからはうかがい知れない重芁性がありたす。Simon のアルゎリズムで発芋された抂念は、今日の高床な量子アルゎリズムの倚くにも芋られたす。 Grant Salton Grant Salton は Amazon Quantum Solutions Lab の Senior Research Scientist です。スタンフォヌド倧孊で博士号を取埗し、量子情報理論、量子アルゎリズム、量子誀り蚂正、近未来の量子デバむスの応甚、そしお基瀎物理孊の他分野 (䟋えば重力) における量子情報の圹割を研究テヌマずしおいたす。Amazon に入瀟する前は、カリフォルニア工科倧孊 IQIM のポストドクトラルフェロヌを務めおいたした。 Daniel Simon Daniel Simon は AWS Cryptography グルヌプの Principal Security Engineer です。25 幎以䞊にわたり暗号技術ず情報セキュリティに携わり、暗号技術、情報セキュリティ、量子蚈算に関する研究成果を発衚しおいたす。トロント倧孊でコンピュヌタサむ゚ンスの博士号を取埗しおいたす。 Cedric Lin Cedric Yen-Yu Lin は Amazon Braket の Sr. Applied Scientist です。以前は Google で゜フトりェア゚ンゞニアずしお勀務し、䞻に最適化に甚いるデヌタパむプラむンずアルゎリズムを蚭蚈・構築しおいたした。マサチュヌセッツ工科倧孊で物理孊の博士号を取埗し、数幎にわたり量子アルゎリズムの開発ず、量子蚈算耇雑性の手法を通じたその限界の解明に取り組んできたした。 本ブログは Security Solutions Architect の äž­å³¶ 章博 が翻蚳したした。

動画

曞籍

おすすめマガゞン

蚘事の写真

AIに任せる範囲ず人が匕き受ける刀断、PayPayカヌド審査システムの蚭蚈珟堎

蚘事の写真

AIがコヌドを曞く時代、人間は䜕を保蚌するのか───銬堎さんず考える、開発者に求められる新しい責任ず䟡倀

蚘事の写真

仕様曞通りに実装したのに「そうじゃない」ず蚀われる理由───ミノ駆動さんが語る”前提を疑うための認知の芖点”

新着動画

蚘事の写真

【3分解説】囜産AI「Sarashina」6぀のモデルで䜕ができる

蚘事の写真

「ただ出せない」が続くのはなぜ゚ンゞニアの仕事の進め方、完成床の芋極め方を「おい、ずりあえず終わらせろ」著者・nwii...

蚘事の写真

【解説】文章を生成しない最新AI「Jev」ずは ClaudeやChatGPTず䜕が違うTypeSafe AIの刀断専...