diff --git a/README.md b/README.md index 9665bd9..b2f062a 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ Any questions regarding the Chrome Quantum-Resistant Root Program can be directe The site is deployed automatically on commits to `main`. To add a new Chrome Root Program policy revision: -- Archive the current version in `content/policy-archive/` (create the directory and copy the current policy to the proper version file). +- Archive the current version in `content/crp/policy-archive/` (create the directory and copy the current policy to the proper version file). - Update `config.yaml`: - Update `context.versions` array so that the path for the now archived version is no longer marked as `current`. - - Add a new entry at the bottom of the array for the next version, with an archive path, `path: content/policy-archive/policy-version-NEW-VERSION`. + - Add a new entry at the bottom of the array for the next version, with an archive path, `path: crp/policy-archive/policy-version-NEW-VERSION`. - Bump `context.current_version` to the next version value. It should match the version number at the end of the versions array. Be sure all version numbers are in quotes so they are interpreted as strings, not floats. - Update `content/crp/policy.md` with the new policy content. diff --git a/config.yaml b/config.yaml index 2827a14..01c03b3 100644 --- a/config.yaml +++ b/config.yaml @@ -2,31 +2,31 @@ context: base_url: "http://localhost:8000" current_version: "1.8" versions: - - path: policy-archive/policy-version-1-0 + - path: crp/policy-archive/policy-version-1-0 version: "1.0" date: "2022-03-01" - - path: policy-archive/policy-version-1-1 + - path: crp/policy-archive/policy-version-1-1 version: "1.1" date: "2022-06-01" - - path: policy-archive/policy-version-1-2 + - path: crp/policy-archive/policy-version-1-2 version: "1.2" date: "2022-09-01" - - path: policy-archive/policy-version-1-3 + - path: crp/policy-archive/policy-version-1-3 version: "1.3" date: "2023-01-06" - - path: policy-archive/policy-version-1-4 + - path: crp/policy-archive/policy-version-1-4 version: "1.4" date: "2023-03-03" - - path: policy-archive/policy-version-1-5 + - path: crp/policy-archive/policy-version-1-5 version: "1.5" date: "2024-01-16" - - path: policy-archive/policy-version-1-6 + - path: crp/policy-archive/policy-version-1-6 version: "1.6" date: "2025-02-15" - - path: policy-archive/policy-version-1-7 + - path: crp/policy-archive/policy-version-1-7 version: "1.7" date: "2025-07-15" - - path: policy-archive/policy-version-1-8 + - path: crp/policy-archive/policy-version-1-8 version: "1.8" date: "2026-02-05" input_dir: content diff --git a/content/cqrp/apply.md b/content/cqrp/apply.md index 0d64b47..50658df 100644 --- a/content/cqrp/apply.md +++ b/content/cqrp/apply.md @@ -1,6 +1,89 @@ --- -title: Chrome Quantum-resistant Root Program - Apply for Inclusion +title: Chrome Quantum-resistant Root Program - Preparing and Applying for Inclusion --- -# Apply for Inclusion -Coming soon. +# [DRAFT] Preparing and Applying for Inclusion + +## Last updated: 2026-08-14 + +The Chrome Quantum-resistant Root Program's (CQRP) primary commitment is to the security of Chrome's users. Chrome continuously works to improve the baseline of security on the web, and its policies, procedures, and initiatives reflect that goal. Every [Merkle Tree Certificate](https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/) Certification Authority (MTC CA) and Mirroring Cosigner in the Chrome Quantum-resistant Root Store (CQRS) is a critical link in the chain of trust relied upon by Chrome’s billions of users. Any compromise or misoperation by a single operator can have cascading, detrimental effects, with harm not limited to Subscribers of the corresponding operator. + +Ultimately, in order for an operator’s inclusion request to be accepted, it must clearly and unequivocally demonstrate how their organization meets the high standards defined in the [CQRP Policy](draft-policy.md). The burden of proof rests entirely on the entity applying to proactively and unquestionably demonstrate this commitment, thereby clearly offsetting the inherent and significant security risks of inclusion. + +Google includes or removes operators in the CQRS as it deems appropriate at its sole discretion. Google selects and continues to include Cosigner keys to enhance Chrome's security. Operators included in the CQRS must provide value to Chrome end users that clearly exceeds the risk of their continued inclusion. To that end, the CQRP Policy defines the minimum requirements that MTC CA Operators and Mirroring Operators must meet for both initial and continued inclusion in the CQRS. The policy is periodically updated to further promote the CQRP’s goals: **security, simplicity, predictability, transparency,** and **resilience**. + +> [!NOTE] +> A future update to this process may require the use of the Common CA Database ([CCADB](https://www.ccadb.org/)) for inclusion submissions, rather than using the [Chromium Issues Tracker](https://issues.chromium.org/u/0/issues/new?component=2114629&pli=1&authuser=0&template=0). + +## **1. Roles and Prerequisites for Inclusion Requests** + +Entities interested in applying for inclusion to the CQRS can do so under one of 2 operational roles: + +1. **Mirroring Operator:** Responsible for operating a Mirroring Cosigner service to cosign issuance log views, guaranteeing ecosystem transparency and split-view resistance. A Mirroring Operator that is not also an MTC CA Operator is referred to as an “Independent Mirroring Operator.” +2. **MTC CA Operator:** Responsible for Subscriber certificate issuance and issuance log operation. All MTC CA Operators need to also fulfill the duties of a Mirroring Operator. + +Except for CT Log [operators](https://certificate.transparency.dev/logs/) with at least one “[usable](https://googlechrome.github.io/CertificateTransparency/log_states.html)” log in Chrome before February 1, 2026, demonstrating the high-availability infrastructure and operational maturity required for global certificate issuance, a CQRS Applicant applying to become an MTC CA Operator need to first be an Independent Mirroring Operator in good standing for at least 90 consecutive calendar days before submitting an MTC CA Operator inclusion request. + +## **2. Submission Process** + +### **2.1. Initial Submission** + +CQRS inclusion requests are submitted using the Operator template [TODO: create and link to template] in the Chromium Issues Tracker. Depending on the intended role of the operator, specific information is required and described by the template. By creating a new issue in the Chromium Issue Tracker the entity is asserting they are organizationally distinct from all existing operators present in [cosigners.json](https://www.gstatic.com/mtcs/cosigners/v1/cosigners.json). + +All application artifacts need to be hosted from a publicly-accessible Repository (as defined within the Baseline Requirements). At any point during its review, the CQRP may contact the operator seeking additional or clarifying information. Operators are expected to provide the requested information promptly, and no later than 14 days unless specified otherwise. + +### **2.2. Updating Submissions** + +Inclusion request submissions are expected to remain up-to-date as operational representations change. This includes updating the issue in the Chromium Issues Tracker as planned key lifecycle events become known, as detailed in the subsections below. + +If an Independent Mirroring Operator intends to apply for inclusion as an MTC CA Operator, they are expected to use their preexisting issue and provide the additional template details required for MTC CA Operators. + +#### **2.2.1. Submitting new Mirroring Cosigner Keys** + +Existing Mirroring Operators can apply to have a new Mirroring Cosigner Key included in the CQRS by updating their existing issue on the Chromium Issue Tracker. + +#### **2.2.2. Submitting new CA Cosigner Keys** + +Existing MTC CA Operators can apply to have CA Cosigner Keys rotated in the CQRS, which will be processed according to a quarterly schedule (targeted for processing on the 15th day of January, April, July, and October). This includes: + +1. At least 30 days prior to the target quarterly update date, the existing MTC CA Operator will publish the new MTC CA Cosigner Certificates (i.e., Reserve CA Cosigner Keys) on its Repository, update their existing issue in the Chromium Issues Tracker with the new key information, and announce the planned addition to mtcs [at] chromium [dot] org. The announcement needs to include the URL to the MTC CA Operators [mtc-disclosures.json](disclosures/mtc-disclosures.schema.json) ([example](disclosures/mtc-disclosures.json)). +2. After the CQRP reviews the issue and the key is added to the CQRS, the MTC CA Operator needs to update the issue explicitly stating when the Reserve CA Cosigner Key(s) are expected to transition to an Active state, which is when the MTC CA Operator can expect landmarks for the newly Active CA Cosigner Key(s) to be distributed to Chrome clients. + +## **3. Evaluation Process** + +Chrome evaluates inclusion requests through a structured review pipeline, generally adhering to the following high-level milestones: + +1. Completeness Triage +2. Beneficial Ownership and Due Diligence Review +3. Public Discussion Period +4. Technical Compliance and Audit Verification +5. Inclusion Decision + +Once an inclusion request has all required artifacts, ongoing monitoring will occur as the review progresses through the high-level milestones. + +All Mirroring Cosigners need to pass a minimum 30-day compliance monitoring period before becoming `Qualified`. Once `Qualified`, a Mirroring Cosigner that maintains ongoing compliance with the CQRP policy will automatically transition to `Usable` after a 70-day propagation period, at which point its cosignatures will be relied upon for Chrome client validation. During this time, the CQRP will actively monitor the Mirroring Cosigner to ensure conformance to the technical specifications and availability requirements included in the CQRP Policy. In the event that the Mirroring Cosigner does not maintain ongoing compliance with the CQRP Policy, it will not be promoted `Usable`. + +All operators should expect ongoing querying of their cosigners from Google’s compliance monitoring infrastructure throughout the lifetime of the mirror and/or issuance log. + +## **4. Potential Outcomes** + +Inclusion requests may conclude with one of the following outcomes: + +* **Accepted**: An inclusion application is classified as “Accepted” when an entity proactively and unequivocally demonstrates full compliance with all technical, operational, procedural, and audit requirements defined within the CQRP Policy, and clearly establishes that the value of its inclusion for Chrome end users exceeds the associated security, privacy, and operational risks. + + Upon receiving an Accepted determination, the entity's key material, endpoints, and associated trust metadata will be scheduled for inclusion in the CQRS and distributed to Chrome clients on approximately, but not limited to, a targeted quarterly release cycle. However, the CQRP makes no guarantees on the timeliness of distribution. + + Acceptance does not constitute a permanent, irrevocable, or unconditional guarantee of trust. Included operators need to continuously maintain adherence to all ongoing policy obligations - including compliance monitoring metrics (uptime, cryptographic correctness, and mirror consistency) and prompt incident reporting. The CQRP reserves the right to modify, suspend, or revoke inclusion at its sole discretion if an operator fails to sustain these standards or if the risk of continued inclusion outweighs the benefit to Chrome users. + +* **Rejected**: An inclusion application is classified as “Rejected” when an entity fails to unequivocally demonstrate that the value of its inclusion to Chrome end users clearly exceeds the associated security, privacy, or operational risks. Rejection typically results from unaddressed technical, audit, or procedural deficiencies, incomplete or inaccurate disclosures, an incident reporting history that fails to reliably demonstrate the factors that are significant to the CQRP, or a failure to satisfy the minimum requirements defined within the CQRP Policy. + + An organization whose application is Rejected is typically subject to a standard 6 month cooling-off period, beginning on the date of the formal rejection determination. During this period, the organization is ineligible to submit new or revised inclusion requests to the CQRP. This cooling-off period provides the organization sufficient time to remediate identified deficiencies, demonstrate sustained operational stability, and obtain updated, compliant audit attestations prior to re-applying. + +* **Disqualified**: An entity is classified as “Disqualified” when the CQRP determines that they present an unacceptable or unmitigable risk to Chrome end users or the integrity of the web. Disqualification is reserved for, but not limited to: + * Being the subject of multiple application Rejections without demonstrating meaningful and measurable remediation; + * Intentional misrepresentation, falsification, or material omission of facts in public disclosures, audit attestations, or program communications; + * Willful non-compliance with the CQRP Policy; or + * Critical failures, key compromises, or operational practices that demonstrate an inability or unwillingness to maintain a robust "security-first" culture. + + + An entity designated as Disqualified is permanently barred from applying for or receiving inclusion in the CQRS across all current and future PKI hierarchies operated, owned, or controlled by the organization, its subsidiaries, or its affiliates. diff --git a/content/cqrp/disclosures/ari-operational-test-report.json b/content/cqrp/disclosures/ari-operational-test-report.json new file mode 100644 index 0000000..b08f218 --- /dev/null +++ b/content/cqrp/disclosures/ari-operational-test-report.json @@ -0,0 +1,81 @@ +{ + "$schema": "https://github.com/GoogleChrome/chromerootprogram/tree/main/content/cqrp/disclosures/ari-operational-test-report.schema.json", + "test_cycle_id": "2026-Q3-ARI-TEST-01", + "sample_selection": { + "timestamp": "2026-08-05T00:00:00Z", + "methodology_description": "Queried all time-valid, unrevoked Subscriber certificates with validity > 7 days issued between 2026-07-22T00:00:00Z and 2026-08-05T00:00:00Z (preceding 336 hours). A uniform random sample of 3.0% was selected using a cryptographically secure pseudorandom number generator (CSPRNG).", + "filter_criteria": "validity > 7 days, unrevoked, issued between 2026-07-22T00:00:00Z and 2026-08-05T00:00:00Z", + "selection_algorithm": "Uniform random selection via CSPRNG", + "eligible_certificate_count": 50000, + "sampled_certificate_count": 1500, + "sample_percentage": 3.0 + }, + "summary": { + "overall_pass_rate_percentage": 90.0, + "median_time_to_renewal_seconds": 14400, + "p95_time_to_renewal_seconds": 172800, + "user_agent_version_breakdown": [ + { + "software": "Certbot", + "version": "2.6.0", + "total": 500, + "passed": 490, + "failed": 10, + "pass_rate_percentage": 98.0 + }, + { + "software": "acme.sh", + "version": "3.0.5", + "total": 400, + "passed": 380, + "failed": 20, + "pass_rate_percentage": 95.0 + }, + { + "software": "cert-manager", + "version": "v1.11.0", + "total": 300, + "passed": 210, + "failed": 90, + "pass_rate_percentage": 70.0 + } + ] + }, + "results": [ + { + "serial_number": "03A4F891BCDE0012", + "issuance_log_entry_index": 1048576, + "ari_renewal_window": { + "start": "2026-08-05T12:00:00Z", + "end": "2026-08-08T12:00:00Z" + }, + "outcome": "pass", + "user_agent": "Certbot/2.6.0 (Ubuntu 22.04; certbot-ari-plugin/0.1.0)", + "parsed_client": { + "name": "Certbot", + "version": "2.6.0" + }, + "user_agent_source": "renewal_request", + "renewal_timestamp": "2026-08-05T16:00:00Z", + "time_to_renewal_seconds": 14400 + }, + { + "serial_number": "03A4F891BCDE0013", + "issuance_log_entry_index": 1048577, + "ari_renewal_window": { + "start": "2026-08-05T12:00:00Z", + "end": "2026-08-08T12:00:00Z" + }, + "outcome": "fail", + "user_agent": "legacy-acme-client/1.0.0", + "parsed_client": { + "name": "legacy-acme-client", + "version": "1.0.0" + }, + "user_agent_source": "initial_issuance", + "renewal_timestamp": null, + "time_to_renewal_seconds": null + } + ] +} + diff --git a/content/cqrp/disclosures/ari-operational-test-report.schema.json b/content/cqrp/disclosures/ari-operational-test-report.schema.json new file mode 100644 index 0000000..26da483 --- /dev/null +++ b/content/cqrp/disclosures/ari-operational-test-report.schema.json @@ -0,0 +1,205 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/GoogleChrome/chromerootprogram/tree/main/content/cqrp/disclosures/ari-operational-test-report.schema.json", + "title": "MTC CA Operational ARI Test Report Schema", + "description": "Schema for reporting quarterly operational ACME Renewal Information (ARI) client responsiveness test cycles.", + "type": "object", + "required": [ + "test_cycle_id", + "sample_selection", + "summary", + "results" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "test_cycle_id": { + "type": "string", + "minLength": 1, + "description": "Unique identifier for this operational ARI test cycle (e.g., 2026-Q3-ARI-TEST-01)." + }, + "sample_selection": { + "type": "object", + "description": "Metadata regarding the derivation of the sample population.", + "required": [ + "timestamp", + "methodology_description", + "filter_criteria", + "selection_algorithm", + "eligible_certificate_count", + "sampled_certificate_count", + "sample_percentage" + ], + "properties": { + "timestamp": { + "type": "string", + "format": "date-time", + "description": "UTC timestamp when sample selection occurred." + }, + "methodology_description": { + "type": "string", + "minLength": 1, + "description": "Detailed human-readable explanation of sample selection methodology." + }, + "filter_criteria": { + "type": "string", + "minLength": 1, + "description": "Criteria used to filter the eligible certificate population." + }, + "selection_algorithm": { + "type": "string", + "minLength": 1, + "description": "Random selection algorithm or mechanism used to collect the sample." + }, + "eligible_certificate_count": { + "type": "integer", + "minimum": 0, + "description": "Total count of eligible certificates meeting sample criteria." + }, + "sampled_certificate_count": { + "type": "integer", + "minimum": 0, + "description": "Total count of certificates selected for sampling." + }, + "sample_percentage": { + "type": "number", + "minimum": 3.0, + "maximum": 100.0, + "description": "Percentage of eligible certificates sampled (MUST be at least 3.0%)." + } + }, + "additionalProperties": false + }, + "summary": { + "type": "object", + "description": "Aggregate summary statistics for the test cycle.", + "required": [ + "overall_pass_rate_percentage", + "median_time_to_renewal_seconds", + "p95_time_to_renewal_seconds", + "user_agent_version_breakdown" + ], + "properties": { + "overall_pass_rate_percentage": { + "type": "number", + "minimum": 0.0, + "maximum": 100.0, + "description": "Overall percentage of sampled certificates that passed the ARI test." + }, + "median_time_to_renewal_seconds": { + "type": ["number", "null"], + "description": "Median time to renewal in seconds for successful test cases." + }, + "p95_time_to_renewal_seconds": { + "type": ["number", "null"], + "description": "95th percentile time to renewal in seconds for successful test cases." + }, + "user_agent_version_breakdown": { + "type": "array", + "description": "Pass/fail breakdown by parsed client software name and version.", + "items": { + "type": "object", + "required": [ + "software", + "version", + "total", + "passed", + "failed", + "pass_rate_percentage" + ], + "properties": { + "software": { "type": "string", "minLength": 1 }, + "version": { "type": "string", "minLength": 1 }, + "total": { "type": "integer", "minimum": 0 }, + "passed": { "type": "integer", "minimum": 0 }, + "failed": { "type": "integer", "minimum": 0 }, + "pass_rate_percentage": { + "type": "number", + "minimum": 0.0, + "maximum": 100.0 + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "results": { + "type": "array", + "description": "Individual test results for every sampled certificate.", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "serial_number", + "issuance_log_entry_index", + "ari_renewal_window", + "outcome", + "user_agent", + "parsed_client", + "user_agent_source", + "renewal_timestamp", + "time_to_renewal_seconds" + ], + "properties": { + "serial_number": { + "type": "string", + "pattern": "^[a-fA-F0-9]+$", + "description": "Hex-encoded serial number of the sampled certificate." + }, + "issuance_log_entry_index": { + "type": "integer", + "minimum": 0, + "description": "Issuance Log Entry Index for the sampled certificate." + }, + "ari_renewal_window": { + "type": "object", + "required": ["start", "end"], + "properties": { + "start": { "type": "string", "format": "date-time" }, + "end": { "type": "string", "format": "date-time" } + }, + "additionalProperties": false + }, + "outcome": { + "type": "string", + "enum": ["pass", "fail"] + }, + "user_agent": { + "type": "string", + "description": "Full untruncated HTTP User-Agent request header string." + }, + "parsed_client": { + "type": "object", + "required": ["name", "version"], + "properties": { + "name": { "type": "string", "minLength": 1 }, + "version": { "type": "string", "minLength": 1 } + }, + "additionalProperties": false + }, + "user_agent_source": { + "type": "string", + "enum": ["renewal_request", "initial_issuance"] + }, + "renewal_timestamp": { + "type": ["string", "null"], + "format": "date-time", + "description": "UTC timestamp of renewal for successful tests, or null if failed." + }, + "time_to_renewal_seconds": { + "type": ["integer", "null"], + "description": "Calculated time to renewal in seconds relative to the start of the ARI window for successful tests, or null if failed." + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false +} + + diff --git a/content/cqrp/disclosures/mtc-disclosures.json b/content/cqrp/disclosures/mtc-disclosures.json new file mode 100644 index 0000000..daf1ba3 --- /dev/null +++ b/content/cqrp/disclosures/mtc-disclosures.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://github.com/GoogleChrome/chromerootprogram/tree/main/content/cqrp/disclosures/mtc-disclosures.schema.json", + "operator_name": "Example Security CA Inc.", + "last_updated": "2026-08-05T10:00:00Z", + "global_disclosures": { + "ca_repository_url": "https://github.com/example-ca/pki-repository", + "legal_entity_and_ownership_url": "https://example-ca.com/legal/ownership-and-control.html", + "status_and_incidents_url": "https://status.example-ca.com", + "facility_certification_url": "https://example-ca.com/compliance/iso27001-global.pdf" + }, + "ca_cosigner_keys": [ + { + "friendly_name": "Example MTC CA 2026 7-Day Key 1", + "key_sha256": "40328aac349197c2daccd7b8ca66b17f3e44d2d5fa66acc7d0a8c2924802fbfa", + "disclosures": { + "policy_documents_url": "https://github.com/example-ca/pki-repository/blob/main/CPS-7day.md", + "reserve_keys_url": "https://github.com/example-ca/pki-repository/blob/main/upcoming_keys_7day.json", + "key_generation_attestation_url": "https://example-ca.com/audits/2026-key1-attestation.pdf", + "infrastructure_architecture_url": "https://github.com/example-ca/pki-repository/blob/main/arch-key1.md" + } + }, + { + "friendly_name": "Example MTC CA 2026 47-Day Key 2", + "key_sha256": "8f3b211a549197c2daccd7b8ca66b17f3e44d2d5fa66acc7d0a8c2924802eabc", + "disclosures": { + "policy_documents_url": "https://github.com/example-ca/pki-repository/blob/main/CPS-47day.md", + "reserve_keys_url": "https://github.com/example-ca/pki-repository/blob/main/upcoming_keys_47day.json", + "key_generation_attestation_url": "https://example-ca.com/audits/2026-key2-attestation.pdf", + "infrastructure_architecture_url": "https://github.com/example-ca/pki-repository/blob/main/arch-key2.md", + "facility_certification_url": "https://example-ca.com/compliance/iso27001-secondary-dc.pdf" + } + } + ] +} diff --git a/content/cqrp/disclosures/mtc-disclosures.schema.json b/content/cqrp/disclosures/mtc-disclosures.schema.json new file mode 100644 index 0000000..b3b7abd --- /dev/null +++ b/content/cqrp/disclosures/mtc-disclosures.schema.json @@ -0,0 +1,125 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/GoogleChrome/chromerootprogram/tree/main/content/cqrp/disclosures/mtc-disclosures.schema.json", + "title": "MTC CA Operator Disclosures Schema", + "description": "Schema for MTC CA Operator disclosures supporting per-key and global disclosure URLs.", + "type": "object", + "required": [ + "operator_name", + "last_updated", + "global_disclosures", + "ca_cosigner_keys" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "operator_name": { + "type": "string", + "description": "Legal name of the MTC CA Operator." + }, + "last_updated": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 UTC timestamp indicating when this manifest was last updated." + }, + "global_disclosures": { + "type": "object", + "description": "Operator-wide disclosures applicable across all CA Cosigner Keys.", + "required": [ + "ca_repository_url", + "legal_entity_and_ownership_url", + "status_and_incidents_url", + "facility_certification_url" + ], + "properties": { + "ca_repository_url": { + "type": "string", + "format": "uri", + "description": "URL to the CA Operator's public repository where items like policy documents, Subscriber agreements, and historical revisions reside." + }, + "legal_entity_and_ownership_url": { + "type": "string", + "format": "uri", + "description": "URL detailing legal entity status, beneficial ownership, and corporate control." + }, + "status_and_incidents_url": { + "type": "string", + "format": "uri", + "description": "URL to public operational status and incident reporting pages." + }, + "facility_certification_url": { + "type": "string", + "format": "uri", + "description": "URL to ISO/IEC 27001 or equivalent facility audit certification." + } + }, + "additionalProperties": false + }, + "ca_cosigner_keys": { + "type": "array", + "description": "List of disclosures specific to each CA Cosigner Key operated by the CA.", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "friendly_name", + "key_sha256", + "disclosures" + ], + "properties": { + "friendly_name": { + "type": "string", + "description": "Human-readable name for the CA Cosigner Key." + }, + "key_sha256": { + "type": "string", + "pattern": "^[a-fA-F0-9]{64}$", + "description": "Hex-encoded SHA-256 hash of the CA Cosigner Key public key." + }, + "disclosures": { + "type": "object", + "description": "Key-specific disclosure URLs.", + "required": [ + "policy_documents_url", + "reserve_keys_url", + "key_generation_attestation_url", + "infrastructure_architecture_url" + ], + "properties": { + "policy_documents_url": { + "type": "string", + "format": "uri", + "description": "URL to the Markdown/AsciiDoc CPS for this specific key." + }, + "reserve_keys_url": { + "type": "string", + "format": "uri", + "description": "URL disclosing anticipated Reserve CA Cosigner Keys for this key lineage." + }, + "key_generation_attestation_url": { + "type": "string", + "format": "uri", + "description": "URL to the Key Generation Ceremony Attestation report for this key." + }, + "infrastructure_architecture_url": { + "type": "string", + "format": "uri", + "description": "URL describing infrastructure architecture and geographic diversity for this key." + }, + "facility_certification_url": { + "type": "string", + "format": "uri", + "description": "Optional override URL for facility certification if this key is hosted in a distinct facility." + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false +} diff --git a/content/cqrp/draft-policy.md b/content/cqrp/draft-policy.md index 705cac8..f807d6d 100644 --- a/content/cqrp/draft-policy.md +++ b/content/cqrp/draft-policy.md @@ -1,6 +1,631 @@ --- -title: Chrome Quantum-resistant Root Program Policy +title: Chrome Quantum-resistant Root Program Policy, Version 0.3.0 --- -# Chrome Quantum-resistant Root Program Policy +# [DRAFT] Chrome Quantum-resistant Root Program Policy, Version 0.3.0 + +## Last updated: 2026-08-14 + +[TOC] + +## **Introduction** + +The Chrome Quantum-resistant Root Program (CQRP) establishes the minimum requirements for [Merkle Tree Certificate](https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/) [TODO: point to final/latest spec before v1.0.0 of this policy] Certification Authorities (referred to as "MTC CAs") to be trusted by default in Chrome. + +As [announced](https://security.googleblog.com/2026/02/cultivating-robust-and-efficient.html) in February 2026, Chrome will not add traditional X.509 certificates containing post-quantum cryptography to the Chrome Root Store. Instead, the Chrome Quantum-resistant Root Store (CQRS) relies entirely on MTC CAs to decouple connection security strength from TLS handshake payload size while integrating transparency directly into the issuance process. + +Unlike a traditional root store consisting of X.509 certificates acting as trust anchors for certificate chain validation and accompanying metadata, the CQRS encompasses both MTC CA Operators (i.e., TLS server authentication certificate issuers responsible for domain control validation and Merkle Tree generation) and Mirroring Operators (i.e., entities responsible for replicating and cosigning log views to guarantee transparency and split-view resistance). The complete list of MTC CA and Mirroring Cosigners included in the CQRS is published in [cosigners.json](https://www.gstatic.com/mtcs/cosigners/v1/cosigners.json). + +The CQRS and corresponding policy are distinct from the existing: + +* [Chrome Root Store](https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md), +* Chrome Root Program [Policy](https://googlechrome.github.io/chromerootprogram/crp/policy/), +* Chrome Certificate Transparency (CT) [Policy](https://googlechrome.github.io/CertificateTransparency/ct_policy.html), +* Chrome CT Log [Policy](https://googlechrome.github.io/CertificateTransparency/log_policy.html), and +* Chrome CT Log List Usage [Policy](https://googlechrome.github.io/CertificateTransparency/log_lists.html). + +Inclusion in the Chrome Root Store does not guarantee admission into the CQRS, nor is inclusion in the Chrome Root Store a prerequisite for inclusion in the CQRS. + +Because this area is evolving rapidly this policy will change over time. Stakeholders can expect an emphasis on **security, simplicity, predictability, transparency,** and **resilience.** To respond effectively to emerging security risks and standards, Chrome reserves the right to modify this policy as necessary. Although Chrome intends to provide reasonable notice for policy updates, advance notice is not guaranteed. Participants in the CQRS are expected to maintain the operational agility and technical capabilities required to implement policy changes without disrupting ecosystem availability. + +### **Preparing and Applying for Inclusion** + +Organizations are welcome to apply for inclusion in the CQRS as MTC CA Operators or Independent Mirroring Operators if they meet the minimum requirements detailed in this policy and follow the submission guidelines detailed in [Preparing and Applying for Inclusion](apply.md). + +### **Chrome's Ongoing Commitment to Transport Security** + +The CQRP is purpose-driven and designed to serve Chrome users' security needs. Its existence and this corresponding policy represent Google's [ongoing commitment](https://transparencyreport.google.com/https/overview?hl=en) to upholding secure and reliable network connections in Chrome. + +In support of this commitment, Google, as it deems appropriate and at its sole discretion, includes or removes MTC Operators and Independent Mirroring Operators in the CQRS. The selection and ongoing inclusion of these operators is done to enhance the security of Chrome. Inclusion in the root store, both initially and sustained, is not guaranteed to any CQRS Applicant, MTC CA Operator, or Independent Mirroring Operator. + +## **Change History** + +| Version | Date | Note | +| :---- | :---- | :---- | +| 0.3.0 | 2026.08.14 | Third draft release with additional feedback considered, a reorganization of sections, and new subsection headers. | +| 0.2.0 | 2026.06.17 | Second draft release with feedback considered. | +| 0.1.0 | 2026.05.14 | Initial draft release for feedback. | + +## **Definitions** + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/info/bcp14) when, and only when, they appear in all capitals, as shown here. + +**CQRS Applicant**: A legal entity that has an open inclusion request submitted to Google Chrome in the [Chromium Issues Tracker](https://issues.chromium.org/u/0/issues/new?component=2114629&pli=1&authuser=0&template=0) [TODO: create and link to template]. + +**MTC CA Operator**: A legal entity included in the CQRS that possesses or controls the private key(s) capable of issuing Subscriber certificates and generating checkpoints for the associated issuance log. All MTC CA Operators are also Mirroring Operators. + +**Mirroring Operator**: A legal entity included in the CQRS that maintains a synchronized copy of MTC CA issuance logs (i.e., a mirror) and possesses or controls the private key(s) capable of cosigning views of those issuance logs. + +**Independent Mirroring Operator**: A Mirroring Operator that is not also an MTC CA Operator. + +**Inconsistent Merkle Tree View (or Split-View)**: A state where an MTC CA's issuance log or a Mirroring Cosigner's view of an issuance log presents different, conflicting versions of its log history to various parties (e.g., cosigners, relying parties, or monitors). + +**Key Sunset**: The process by which Chrome deprecates and phases out default trust in an MTC CA Cosigner Key. To safely sunset a key and prevent retroactive issuance, Chrome establishes a Key Sunset Date technically enforced in client configurations through bounded minimum and maximum certificate serial numbers and log instances. Certificates linked to inclusion proofs outside this explicitly bounded window will not be accepted by Chrome clients. This is analogous to the SCTNotAfter feature used by the Chrome Root Store to gradually phase-out trust in CA key material. + +## **1. Participation in the Root Store** + +Unless noted, the requirements in this section apply to both MTC CA Operators and Independent Mirroring Operators. + +### **1.1. Eligibility** + +Initial eligibility for inclusion in the CQRS as an MTC CA Operator is restricted to [organizations](https://certificate.transparency.dev/logs/) responsible for operating a “[usable](https://googlechrome.github.io/CertificateTransparency/log_states.html)” Certificate Transparency (CT) Log prior to February 1, 2026. These organizations have already demonstrated the operational excellence and high-availability infrastructure required to run global security services that underpin default TLS connections in Chrome. Since MTC technology shares significant architectural similarities with CT, these operators are uniquely qualified to ensure MTCs are able to get off the ground quickly and successfully. + +> [!NOTE] +> Requirements for additional MTC CA Operators (i.e., organizations that do not satisfy the above initial eligibility restrictions) will be established in a future version of this policy. At a minimum, prospective MTC CA Operators will be expected to first demonstrate operational capability and high-availability infrastructure reliability by successfully operating as a trusted Independent Mirroring Operator in the CQRS, as defined by this policy, for a specified period prior to applying for MTC CA Operator inclusion. + +There are no such eligibility restrictions placed on Independent Mirroring Operators. + +### **1.2. Beneficial Ownership** + +During the inclusion request process, CQRS Applicants MUST provide comprehensive ownership disclosures to enable the CQRP to fully evaluate the applicant's ultimate beneficial corporate ownership, parent entities, and corporate control structure. In its public Repository (as defined within the Baseline Requirements), the operator MUST disclose: + +* Legal Entity Identification: Full legal name, entity type, jurisdiction of incorporation, official corporate registration number, and registered principal business address. +* Corporate Hierarchy: Full legal name, jurisdiction, and corporate registration number of the ultimate parent entity, along with a complete listing of all intermediate parent and subsidiary entities connecting the operator to its ultimate parent. +* Beneficial Ownership: Legal name, jurisdiction of incorporation, and exact percentage of equity or voting interest for any legal entity directly or indirectly holding a 25% or greater ownership or voting control interest in the operator. +* CQRS Affiliations: An explicit listing of any other CQRS participant that shares common ownership, parent entities, or corporate control with the operator, or an explicit statement confirming that no such relationships exist. + +Following inclusion, operators MUST continuously maintain transparent ownership records and update its disclosure for any material changes in legal structure, ultimate corporate control, or beneficial ownership. + +When ownership intends to transfer, trust in the new operator is not automatically transferred. To provide sufficient time to evaluate the security, operational, and trustworthiness implications of the new controlling entity prior to the transfer of trust, MTC CA Operators and Independent Mirroring Operators MUST, where permissible by law, notify mtcs [at] chromium [dot] org at least 30 calendar days before any impending: + +* changes in ownership resulting in a transfer of effective control, or changes in operating control, +* cessations of operations, or +* other change control events involving components that would materially affect the ongoing operations or perceived trustworthiness of CA Cosigner or Mirroring Cosigner Keys included in the CQRS (e.g., changes to operational location(s), etc.). + +Not limited to the circumstances above, the CQRP reserves the right to require re-application to the CQRS. + +### **1.3. Operator Independence** + +To prevent single points of failure, every entity participating in the CQRS, whether an MTC CA Operator (and by default also a Mirroring Operator) or an Independent Mirroring Operator, MUST be completely distinct from all other operators in the CQRS. Organizational independence is maintained through transparency, continuous monitoring, and ongoing re-evaluation processes. + +For the purposes of this policy, an entity is 'distinct' from another operator if and only if they are separate legal, corporate, and operational entities that share no common ownership, ultimate corporate control, parent companies, administrative access, or control over cosigner key material. + +### **1.4. Facilities and Geographic Diversity** + +To provide baseline assurance of physical, environmental, and operational security, all MTC CA Operator and Mirroring Operator infrastructure SHOULD be hosted in facilities certified under ISO/IEC 27001 or an equivalent security framework, with compliance independently audited and publicly reported on at least an annual basis. + +When an operator deploys infrastructure across multiple physical locations, those locations SHOULD be distributed across diverse geographic regions (e.g., North America, Europe, Asia-Pacific) to prevent regional single points of failure. + +Specific only to MTC CA Operators: + +* Infrastructure responsible for Subscriber certificate issuance and landmark generation, as detailed in Section 2. (“Minimum Requirements for MTC CA Operators”), SHOULD be distributed across at least 2 distinct Regional Internet Registries. +* Because this policy strictly bounds the total number of Active CA Cosigner Keys an MTC CA Operator can maintain at any given time, as detailed in Section 2.6.2. (“CA Cosigner Key Use”), MTC CA Operators MUST strategically manage their key allowance to accommodate any current or future regional deployment needs. Additional CA Cosigner Key allowances will not be granted solely to support regional deployments or bypass key limits in Chrome. + +Inclusion or usability standards will not be reduced solely to satisfy geographic diversity preferences. + +## **2. Minimum Requirements for MTC CA Operators** + +The requirements in this section only apply to MTC CA Operators. + +### **2.1. Public General Availability** + +To ensure the CQRS supports the diverse needs of the web, MTC CA Operators MUST offer Subscriber certificate issuance as a service generally available to the public. This requirement does not prohibit the MTC CA Operator from also offering other certificate issuance services that are not generally available to the public, provided those services do not negatively impact the availability of the CA Cosigner(s) trusted by default in Chrome. To manage risk and ensure system stability during initial deployment, upon initial inclusion in the CQRS, an MTC CA Operator MAY conduct a phased rollout for up to 60 calendar days, during which certificate issuance MAY be restricted to a controlled set of Subscribers. Following the conclusion of this period, the MTC CA Operator MUST transition the service to full public general availability. + +To ensure that inclusion in the CQRS provides equitable public value, MTC CA Operators MUST NOT condition the acceptance of a certificate request or the issuance of a certificate on the Subscriber’s use of other services, products, or platforms offered by the MTC CA Operator or any affiliated entity. This requirement does not prohibit the MTC CA Operator from requiring the use of its own platform or account management services for the purpose of authentication, quota management, or abuse prevention, provided these access mechanisms are made generally available to the public. + +#### **2.1.1. Disclosures Manifest** + +MTC CA Operators MUST create, publish, and continuously maintain an [mtc-disclosures.json](disclosures/mtc-disclosures.schema.json) ([example](disclosures/mtc-disclosures.json)). The manifest MUST: + +* be hosted at a publicly accessible URL within the operator’s public Repository; +* conform to the latest version of the MTC Disclosures schema; +* accurately specify all mandatory global disclosure URLs (including the operator’s public Repository, legal entity and beneficial ownership disclosures, operational status page, and facility security certifications); +* accurately specify all key-specific disclosure URLs for each CA Cosigner Key included in the CQRS; and +* be updated within 14 calendar days of any material change to any contained URL or disclosure metadata. + +### **2.2. Service Uptime & Maintenance Notifications** + +The MTC CA Operator SHOULD maintain continuous availability of its Subscriber certificate issuance services. As the ecosystem relies on automated renewal of certificates, and prolonged downtime risks widespread TLS breakage for website operators, the MTC CA Operator MUST NOT experience any single, unplanned service outage exceeding 24 consecutive hours, during which certificate issuance and management is unavailable to Subscribers through any of the operator’s endpoints. Any planned scheduled maintenance that will interrupt these services MUST be publicly announced before the maintenance begins, minimally on the MTC CA Operator’s public status page (described below). To provide Subscribers with sufficient time to pre-renew certificates and adjust automation schedules, this announcement SHOULD be published no less than 48 hours before the outage begins. + +MTC CA Operators MUST maintain a freely accessible, public status page that reports real-time operational health and availability for all MTC services. To ensure availability during primary system outages, the status page SHOULD be hosted on infrastructure operationally independent of the CA’s primary issuance endpoints. + +The status page MUST: + +* display real-time operational status for each primary service component, including Subscriber certificate issuance endpoints (i.e., ACME API), issuance log operations, and landmark generation services; +* provide real-time status updates, root-cause summaries, and estimated resolution timelines during active service degradations, API error spikes, or outages; and +* maintain a publicly viewable archive of all past service incidents and maintenance events for a minimum of 12 months. + +### **2.3. PKI Policy Governance** + +#### **2.3.1. CA/Browser Forum TLS Server Authentication Baseline Requirements** + +MTC CA Operators that issue TLS server authentication Subscriber certificates trusted in Chrome by default MUST adhere to the latest version of the CA/Browser Forum "Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates" ([Baseline Requirements](https://cabforum.org/working-groups/server/baseline-requirements/requirements/)), except as described in the remainder of this policy. Because MTCs fundamentally differ from traditional X.509 certificates, this policy modifies, strengthens, limits, or exempts MTC CAs from certain Baseline Requirements. In the event of any conflict or incompatibility between the Baseline Requirements and this policy, the requirements of this policy SHALL take precedence. + +#### **2.3.2. MTC CA Operator Policies** + +MTC CA Operators MUST accurately describe the policies and practices of their MTC CA(s) within a combined CP/CPS that is: + +* freely publicly available for examination; +* available in an authoritative English language version; +* available in Markdown (i.e., .md) or AsciiDoc (i.e., .adoc) and hosted in a public Repository where all historical versions are maintained and accessible; +* authoritative for all CA Cosigner Keys included in the CQRS; +* focused only on the specific PKI use case of issuing TLS server authentication MTCs to websites; +* explicitly states adherence to the latest published version of this policy in its Section 1.1; +* sufficiently detailed to assess the operations of the CA(s) and compliance with these expectations and the Baseline Requirements, and MUST NOT conflict with either of these requirements, except for the Baseline Requirements modifications permitted by this CQRP Policy. + +The combined CP/CPS SHOULD be structured in accordance with [RFC 3647](https://datatracker.ietf.org/doc/html/rfc3647). For every applicable requirement in the CQRP Policy and Baseline Requirements, the combined CP/CPS MUST: + +* Contain sufficient CA-specific detail to allow a technically competent reviewer to understand how the operator implements applicable controls. To satisfy this requirement, where underlying specifications (such as the Baseline Requirements) permit operational variation or optionality, the combined CP/CPS MUST explicitly state the chosen method, parameter, constraint, or implementation mechanism used by the CA (e.g., detailing the exact Domain Control Validation sub-methods utilized, rather than citing the section generally). +* Describe the operator's current implementation commitments, including relevant operational parameters, constraints, and design choices. These SHOULD be explicit, bounded, and testable, particularly where applicable requirements permit discretion or variation. +* Be self-contained, ensuring that any referenced external documents or specifications are publicly accessible and directly hyperlinked so that conformance can be evaluated without requiring excessive interpretive reconstruction across unlinked or undisclosed secondary documents. + +MTC CA Operators MUST include in Section 1.1 or 2.2 of their combined CP/CPS a structured table chronologically disclosing all CA Cosigner Keys and corresponding certificate subjects governed by the policy. For each key, the disclosure MUST specify: + +* The full Certificate Subject Distinguished Name (if a corresponding certificate exists); +* The SHA-256 fingerprint of the SubjectPublicKeyInfo (Key ID); +* The cryptographic algorithm and parameter set (e.g., ML-DSA-44); and +* The key generation date and reference to the corresponding Key Generation Ceremony Report. + +MTC CA Operators MUST publish exhaustive certificate profiles adhering to the profiles specified in Section 2.4.3. (“Certificate and CRL Profiles”) of this policy. Specifically: + +* For each MTC CA capable of issuing Subscriber certificates, the MTC CA Operator MUST publish a machine-readable certificate profile in its Repository corresponding to each Reserved Certificate Policy Identifier that might appear in Subscriber certificates. The MTC CA Operator SHOULD generate and maintain these machine-readable profiles via automated export or continuous synchronization from the active configuration of its issuance systems. +* Each profile MUST exhaustively enumerate every field and extension the MTC CA is capable of including in a Subscriber certificate issued under that Reserved Certificate Policy Identifier. For each field and extension, the profile MUST explicitly specify required presence (MUST, MAY, or MUST NOT), criticality, permitted values, permitted encodings, and, where applicable, permitted ordering and cardinality. +* Any field or extension not explicitly enumerated and specified in the applicable machine-readable certificate profile MUST NOT be present in Subscriber certificates issued under that profile. +* The effective date of a machine-readable certificate profile MUST NOT precede the date on which it was published in the MTC CA Operator’s Repository. +* The MTC CA Operator MUST retain and continue to publish each superseded profile, together with its effective date range, until all remaining Subscriber certificates relying upon it have expired. + +Because a CP/CPS is considered a binding operational commitment it needs to provide meaningful transparency into how the CA practically operates, rather than just acknowledging the rules it must follow, a CP/CPS MUST NOT simply copy, paraphrase, or restate the requirements as a substitute for describing the CA's actual implementation. + +The requirements in this section do not prohibit MTC CA Operators from maintaining additional policy documents, which may also be considered authoritative by other stakeholders. However, the consolidated policy document made available to the CQRP MUST NOT conflict with any additional policy documents that might exist for the corresponding PKI. + +### **2.4. Certificate Issuance Lifecycle and Profiles** + +For the purpose of this policy, MTC Subscriber certificate issuance occurs when the CA Cosigner private key is applied to sign an issuance log checkpoint that incorporates the corresponding `TBSCertificateLogEntry` into the Merkle Tree. + +MTC CA Operators MUST provide both Standalone and Landmark-relative certificates. + +#### **2.4.1. Domain Control Validation** + +MTC CA Operators MUST validate domain control in accordance with Section 3.2.2.4 (“Validation of Domain Value”) and Section 3.2.2.5 (“Authentication of IP Address”) of the Baseline Requirements, subject to the following modifications: + +The following domain control validation methods are being deprecated in the Baseline Requirements and MUST NOT ever be relied upon: + +* 3.2.2.4.4 Constructed Email to Domain Contact +* 3.2.2.4.12 Validating Applicant as a Domain Contact +* 3.2.2.4.13 Email to DNS CAA Contact +* 3.2.2.4.14 Email to DNS TXT Contact +* 3.2.2.4.16 Phone Contact with DNS TXT Record Phone Contact +* 3.2.2.4.17 Phone Contact with DNS CAA Phone Contact +* 3.2.2.5.2 Email, Fax, SMS, or Postal Mail to IP Address Contact +* 3.2.2.5.3 Reverse Address Lookup +* 3.2.2.5.5 Phone Contact with IP Address Contact + +Domain control validation data reuse MUST be limited to a maximum of 10 days. + +#### **2.4.2. Automation Support** + +To enable reliable, rapid issuance and renewal without manual intervention, Subscriber certificates MUST be able to be issued and retrieved using an ACME-based service. The ACME service MUST conform to [RFC 8555](https://datatracker.ietf.org/doc/html/rfc8555) and interoperate with standard ACME clients without requiring custom client-side software modifications for account registration, domain authorization, order processing, certificate issuance and management, and retrieval workflows. Any divergences from RFC 8555 MUST be documented in the combined CP/CPS. + +The MTC CA MUST support ACME Renewal Information (ARI) ([RFC 9773](https://datatracker.ietf.org/doc/rfc9773/)) and use it as a mechanism by which Subscribers can be signaled to renew certificates in advance of scheduled expiry or in response to a revocation event. ARI adoption and client responsiveness are essential to ecosystem resilience and agility. + +No less than quarterly, MTC CAs issuing Subscriber certificates with validity periods exceeding 7 days MUST perform operational ARI testing to evaluate whether Subscriber ACME clients reliably poll and act upon ARI signals. + +Specific to this operational ARI testing: + +* The MTC CA Operator MUST select a random sample comprising no less than 3% of its time-valid and unrevoked Subscriber certificates whose validity exceeds 7 days and whose `notBefore` timestamp is within the last 336 hours. +* For each sampled certificate, the MTC CA Operator MUST publish a modified ARI renewal window recommending an accelerated renewal timeline that begins within 24 hours of sample selection and spans no more than 72 hours in total duration. +* Within 14 calendar days of completing each operational ARI test cycle, the MTC CA Operator MUST publish [{test_cycle_id}-ari-operational-test-report.json](disclosures/ari-operational-test-report.schema.json) ([example](disclosures/ari-operational-test-report.json)) in its Repository. +* If the MTC CA Operator maintains Subscriber contact information (such as through External Account Binding (EAB) associations or email addresses provided during ACME account registration), the MTC CA Operator SHOULD contact Subscribers whose ACME clients failed to renew sampled certificates during operational ARI testing. + * This outreach SHOULD inform the Subscriber of the test outcome, outline the security and resilience benefits of ARI, and seek to identify technical or operational challenges to successful ARI adoption. + * MTC CA Operators SHOULD aggregate these identified challenges and communicate them to chrome-quantum-resistant-root-program [at] google [dot] com before the next operational ARI testing is performed. +* All historical ARI testing reports MUST be preserved and made publicly accessible in the operator’s Repository. +* It is NOT RECOMMENDED that MTC CA Operators revoke sampled certificates unless explicitly requested by the Subscriber. + +The MTC CA MUST also support the ACME Profiles Extension ([draft-ietf-acme-profiles](https://datatracker.ietf.org/doc/draft-ietf-acme-profiles/)) and use it as a mechanism to allow ACME clients to dynamically discover and select among different certificate lifetimes and formats (such as short-lived versus longer validity and Standalone versus Landmark-relative) over a single, unified ACME endpoint without requiring custom client modifications. + +#### **2.4.3. Certificate and CRL Profiles** + +The subsections below detail the profile requirements for MTC CA Cosigner Certificates, Subscriber TLS Certificates, and CRLs. + +##### **2.4.3.1. MTC CA Cosigner Certificate Profile** + +MTC CA Cosigner Certificates MUST conform to the MTC CA Certificate Profile defined in the MTC [specification](https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/) [TODO: point to final/latest spec before v1.0.0 of this policy] and the mtc-tlog [specification](https://github.com/C2SP/C2SP/blob/main/mtc-tlog.md) [TODO: point to final/latest spec before v1.0.0 of this policy]. MTC CA Operators are exempt from the signature algorithm and key size restrictions specified in Section 6.1.5 ("Key Sizes and Algorithms") and Section 7.1.3 ("Algorithm Identifiers") of the Baseline Requirements when using the ML-DSA ([RFC 9881](https://www.rfc-editor.org/rfc/rfc9881.html)) keys permitted by this policy. + +In addition to the above listed specifications, these certificates MUST adhere to the following cryptographic constraints: + +
| Field | +Description | +
|---|---|
subjectPublicKeyInfo |
+
+ The MTC CA MUST indicate an ML-DSA key using the following algorithm identifier: +
The parameters for ML-DSA keys MUST be absent. To reduce complexity, minimize the attack surface, and ensure a single, consistent signature verification implementation is required across all Chrome clients, the MTC CA MUST NOT use HashML-DSA; only "pure" ML-DSA is permitted. +When encoded, the
|
+
| Field | +Description | +
|---|---|
serialNumber |
+
+ MUST be defined in accordance with the MTC specification [TODO: point to final/latest spec before v1.0.0 of this policy]. +In addition to the algorithms and key sizes permitted by the Baseline Requirements, MTC CA Operators MAY issue Subscriber certificates using ML-DSA keys. When an ML-DSA key is used, the CA MUST indicate the algorithm using one of the following identifiers: +
Consistent with Section 2.4.3.1. (“MTC CA Cosigner Certificate Profile”), the parameters for ML-DSA keys MUST be absent, and HashML-DSA MUST NOT be used. +When encoded, the
|
+
issuer |
+ |
signatureAlgorithm |
+ |
subjectPublicKeyInfo |
+ |
subject |
+ MUST be empty if certificatePolicies asserts {joint-iso-itu-t(2) international-organizations(23) ca-browser-forum(140) certificate-policies(1) baseline-requirements(2) domain-validated(1)} (2.23.140.1.2.1) as defined in the Baseline Requirements. |
+