This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
securitycritical PriorityID: mlkem768-hybrid-tls-downgrade-protection

ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant

Enforces post-quantum hybrid key exchange (X25519MLKEM768 / SecP256r1MLKEM768) over TLS 1.3 to permanently neutralize Harvest-Now-Decrypt-Later (HNDL) threats. Strictly proscribes unauthenticated fallback mechanisms, legacy TLS protocols (<1.3), and classical-only ECDHE groups in cryptographic configurations.

Prohibited Anti-Pattern: Permitting Classical-Only TLS Fallback or Omission of ML-KEM-768 Hybrid Key Encapsulation

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant - Enforces post-quantum hybrid key exchange (X25519MLKEM768 / SecP256r1MLKEM768) over TLS 1.3 to permanently neutralize Harvest-Now-Decrypt-Later (HNDL) threats. Strictly proscribes unauthenticated fallback mechanisms, legacy TLS protocols (<1.3), and classical-only ECDHE groups in cryptographic configurations.
globs: src/security/**/*.{ts,js,go,rs}, src/network/**/*.{ts,js,go,rs}, src/infra/**/*.{ts,js,go,rs}, infra/**/*.tf, nginx.conf, envoy.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/mlkem768-hybrid-tls-downgrade-protection"
---

# ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: Permitting Classical-Only TLS Fallback or Omission of ML-KEM-768 Hybrid Key Encapsulation

## System Constraints
You are a Principal Security Architect enforcing post-quantum resilience against Harvest-Now-Decrypt-Later (HNDL) attacks. You must enforce TLS 1.3 minimum versions with mandatory hybrid ML-KEM-768 key encapsulation (e.g., X25519MLKEM768, SecP256r1MLKEM768) across all network listeners, clients, reverse proxies, and crypto configs. You MUST reject any configuration allowing classical-only ECDHE/DHE fallback, TLS 1.2 or lower, or cipher suites lacking post-quantum forward secrecy.

## Strict Guidelines
- Engineers MUST ALWAYS enforce TLS 1.3 as both the minimum and maximum protocol version when terminating internal or external high-assurance services.
- Engineers MUST configure cryptographic groups to prioritize and restrict key exchange exclusively to NIST-standardized hybrid ML-KEM groups (e.g., X25519MLKEM768 or SecP256r1MLKEM768).
- Engineers MUST NOT implement conditional fallback logic that downgrades connection handshakes to classical-only curves (e.g., raw X25519, P-256) upon handshake failure.
- Services MUST hard-fail the handshake with an explicit TLS alert (handshake_failure / illegal_parameter) if the peer does not advertise support for ML-KEM-768 hybrid groups.
- Components NEVER accept TLS versions <= 1.2 or non-AEAD cipher suites (e.g., CBC mode, static RSA, non-ephemeral Diffie-Hellman).

## Bad vs Good Implementations
### Node.js TLS/HTTPS Server Configuration with Hybrid ML-KEM-768

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Configuring minVersion to TLSv1.2 and setting ecdhCurve to 'auto' allows peers to negotiate classical ECDH, exposing traffic to Harvest-Now-Decrypt-Later (HNDL) attacks via quantum adversaries.
```typescript
import tls from 'node:tls';

// INSECURE: Allows classical TLS 1.2, broad classical curves, and fallbacks
export const serverOptions: tls.TlsOptions = {
  minVersion: 'TLSv1.2',
  maxVersion: 'TLSv1.3',
  ciphers: 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384',
  ecdhCurve: 'auto', // Defaults to classical X25519 or P-256 without ML-KEM
  honorCipherOrder: false
};
```

#### Production Standard (Correct)
> **Standard**: Restricts negotiation to TLS 1.3 and explicitly limits key exchange groups to ML-KEM-768 hybrid variants. Rejects non-PQ clients without negotiating classical fallbacks.
```typescript
import tls from 'node:tls';

// SECURE: Strict TLS 1.3 with mandatory ML-KEM-768 hybrid key agreement
export const serverOptions: tls.TlsOptions = {
  minVersion: 'TLSv1.3',
  maxVersion: 'TLSv1.3',
  // Enforce OpenSSL 3.4+ / BoringSSL hybrid PQ group identifiers
  ecdhCurve: 'X25519MLKEM768:SecP256r1MLKEM768',
  honorCipherOrder: true,
  // TLS 1.3 AEAD cipher suites only
  ciphers: 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256'
};
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant

ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant defines an industrial-grade behavioral standard for security engineering. Enforces post-quantum hybrid key exchange (X25519MLKEM768 / SecP256r1MLKEM768) over TLS 1.3 to permanently neutralize Harvest-Now-Decrypt-Later (HNDL) threats. Strictly proscribes unauthenticated fallback mechanisms, legacy TLS protocols (<1.3), and classical-only ECDHE groups in cryptographic configurations. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Permitting Classical-Only TLS Fallback or Omission of ML-KEM-768 Hybrid Key Encapsulation Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftPermitting Classical-Only TLS Fallback or Omission of ML-KEM-768 Hybrid Key EncapsulationCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS enforce TLS 1.3 as both the minimum and maximum protocol version when terminating internal or external high-assurance services.

Engineers MUST ALWAYS enforce TLS 1.3 as both the minimum and maximum protocol version when terminating internal or external high-assurance services.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST configure cryptographic groups to prioritize and restrict key exchange exclusively to NIST-standardized hybrid ML-KEM groups (e.g., X25519MLKEM768 or SecP256r1MLKEM768).

Engineers MUST configure cryptographic groups to prioritize and restrict key exchange exclusively to NIST-standardized hybrid ML-KEM groups (e.g., X25519MLKEM768 or SecP256r1MLKEM768).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Engineers MUST NOT implement conditional fallback logic that downgrades connection handshakes to classical-only curves (e.g., raw X25519, P-256) upon handshake failure.

Engineers MUST NOT implement conditional fallback logic that downgrades connection handshakes to classical-only curves (e.g., raw X25519, P-256) upon handshake failure.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Services MUST hard-fail the handshake with an explicit TLS alert (handshake_failure / illegal_parameter) if the peer does not advertise support for ML-KEM-768 hybrid groups.

Services MUST hard-fail the handshake with an explicit TLS alert (handshake_failure / illegal_parameter) if the peer does not advertise support for ML-KEM-768 hybrid groups.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER accept TLS versions <= 1.2 or non-AEAD cipher suites (e.g., CBC mode, static RSA, non-ephemeral Diffie-Hellman).

Components NEVER accept TLS versions <= 1.2 or non-AEAD cipher suites (e.g., CBC mode, static RSA, non-ephemeral Diffie-Hellman).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is ML-KEM-768 Hybrid TLS 1.3 Downgrade Protection Invariant critical for AI coding assistants?

Enforces post-quantum hybrid key exchange (X25519MLKEM768 / SecP256r1MLKEM768) over TLS 1.3 to permanently neutralize Harvest-Now-Decrypt-Later (HNDL) threats. Strictly proscribes unauthenticated fallback mechanisms, legacy TLS protocols (<1.3), and classical-only ECDHE groups in cryptographic configurations. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Permitting Classical-Only TLS Fallback or Omission of ML-KEM-768 Hybrid Key Encapsulation) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

ML-KEM-768