
- TOP
- ã¿ã°äžèЧ
- éåã³ã³ãã¥ãŒã¿
éåã³ã³ãã¥ãŒã¿
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
æ¬ããã°ã¯ 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 ã® äžå³¶ ç« å ã翻蚳ããŸããã


















