Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

How to Design a Hybrid Classical-Quantum Signature Architecture

This guide provides a technical blueprint for implementing a transitional cryptographic architecture that combines classical signatures (ECDSA/EdDSA) with post-quantum cryptography (PQC). It covers serialization formats, fallback verification logic, and strategies for managing the transition's overhead.
Chainscore © 2026
introduction
GUIDE

How to Design a Hybrid Classical-Quantum Signature Architecture

A practical guide to building cryptographic systems that combine classical and quantum-resistant algorithms for secure, future-proof digital signatures.

A hybrid signature architecture combines a classical digital signature scheme, like ECDSA or EdDSA, with a post-quantum cryptography (PQC) algorithm. The primary goal is cryptographic agility: maintaining security against current classical attacks while preparing for the future threat of quantum computers capable of breaking today's widely-used public-key cryptography. In this design, a single message is signed by both algorithms independently, and the verifier must validate both signatures. This approach, often called a dual-signature or composite signature, ensures that the system remains secure if either algorithm is compromised.

The core design involves generating and managing two separate key pairs. For example, you might pair an Ed25519 key (classical) with a Dilithium key (post-quantum). The signing process is straightforward: signature = sign_ed25519(message) || sign_dilithium(message). The resulting signature is a concatenation of both components. Verification requires parsing this concatenated signature and running both verification algorithms. If either verification fails, the entire signature is considered invalid. This provides a strong security guarantee but increases signature size and verification time.

Implementation requires careful serialization and protocol design. You must define a standard format for the composite public key and the concatenated signature. For interoperability, consider adopting emerging standards like the IETF's Composite Signatures draft. A critical decision is whether to use a nested or parallel structure. In a parallel structure, both signatures are computed directly on the original message. In a nested structure, the PQC signature might sign a bundle containing the message and the classical signature, creating a cryptographic dependency.

For developers, integrating hybrid signatures into existing systems like blockchain transactions or TLS handshakes presents challenges. Signature and key sizes can be 5-10x larger than classical ones, impacting bandwidth and storage. Libraries such as Open Quantum Safe (OQS) provide prototypes for PQC algorithms. Here's a conceptual code snippet for a hybrid signing function in a pseudo-API:

python
hybrid_private_key = (ed25519_priv, dilithium_priv)
message = b"Critical transaction data"

sig1 = ed25519_sign(ed25519_priv, message)
sig2 = dilithium_sign(dilithium_priv, message)
composite_signature = sig1 + sig2  # Concatenation

The transition to hybrid signatures is a strategic risk mitigation step. While large-scale quantum computers that break ECC or RSA may be years away, the threat of "harvest now, decrypt later" attacks is real, where adversaries collect encrypted data today to decrypt it later with a quantum computer. By deploying hybrid signatures now, organizations protect long-lived data and systems. Current adoption drivers include NIST's PQC standardization process, with algorithms like CRYSTALS-Dilithium (for signatures) and Kyber (for KEM) leading the way, and mandates from agencies like the NSA (CNSA 2.0) for national security systems.

When designing your architecture, prioritize algorithm selection from NIST's finalized PQC standards, plan for key lifecycle management (generation, storage, rotation), and ensure your system can gracefully algorithm rollover in the future. Testing with hybrid modes in protocols like X.509 certificates and Blockchain transaction formats is essential. The ultimate goal is to create a system that is not only secure against an uncertain future but also practical and performant enough to deploy in production environments today.

prerequisites
ARCHITECTURE FOUNDATION

Prerequisites and Design Goals

Before building a hybrid classical-quantum signature system, you must understand the core cryptographic primitives and the specific threat model it addresses.

A hybrid signature architecture combines a classical digital signature (like ECDSA or EdDSA) with a post-quantum cryptography (PQC) signature. The primary goal is cryptographic agility, ensuring security against both current classical computers and future quantum adversaries. This is not about quantum algorithms for signing, but about using quantum-resistant algorithms as a safety net. The immediate driver is the store-now, decrypt-later threat, where an adversary records classical signatures today to forge them later with a quantum computer.

Key design goals must be established upfront. Backwards compatibility is often critical; the system should interoperate with existing blockchain infrastructure and wallets that only understand classical signatures. Performance must be considered, as PQC algorithms often have larger key and signature sizes, impacting gas costs and block space. The architecture must also define a clear failure mode: what happens if the PQC algorithm is later broken? A robust design might allow for algorithm upgrades without losing control of assets.

From a developer's perspective, prerequisites include familiarity with digital signature schemes and their typical API: KeyGen(), Sign(sk, msg), and Verify(pk, msg, sig). You should understand the transaction serialization format of your target blockchain (e.g., RLP for Ethereum, Protocol Buffers for Cosmos). Knowledge of multi-signature or threshold signature patterns is beneficial, as a hybrid signature can be conceptually similar, combining two independent cryptographic proofs.

The core technical challenge is signature aggregation. A naive approach is concatenation: sig_hybrid = sig_classical || sig_pqc. A more advanced design uses signature of signatures, where one scheme signs the output of the other, or a custom cryptographic commitment that binds both proofs. The choice impacts verification logic, gas efficiency, and the ability for partial verification (e.g., a light client checking only the classical part).

Finally, you must select concrete algorithms. For the classical component, secp256k1 (ECDSA) is standard for Ethereum and Bitcoin, while Ed25519 is common in other chains. For the PQC component, the NIST Post-Quantum Cryptography Standardization Project winners are the reference. CRYSTALS-Dilithium is the primary standard for general digital signatures, offering a balance of size and speed. SPHINCS+ is a conservative, hash-based alternative. Your design must account for their specific parameters and implementation libraries, such as those from Open Quantum Safe.

key-concepts-text
HYBRID SECURITY ARCHITECTURE

Core Concepts: Dual-Signature and Fallback Logic

A hybrid classical-quantum signature system uses a dual-signature scheme where a quantum-resistant algorithm acts as a fallback, ensuring long-term security against cryptographically-relevant quantum computers.

A dual-signature architecture combines a classical digital signature algorithm, like ECDSA or EdDSA, with a post-quantum cryptography (PQC) algorithm. The primary goal is to maintain compatibility with existing blockchain infrastructure while preparing for a future quantum threat. In this model, a single transaction is signed with both algorithms, creating two independent signatures. The network's validation logic is then upgraded to require verification of both signatures, establishing a hybrid verification state. This approach is endorsed by organizations like NIST, which recommends hybrid modes during the transition to PQC standards.

The core innovation lies in the fallback logic. This is a smart contract or protocol-level rule that dictates which signature is considered authoritative under different conditions. Initially, the classical signature is the primary key for transaction validity, ensuring seamless operation. The fallback logic is programmed to activate the PQC signature's authority only upon the detection of a specific trigger condition. This condition could be a pre-agreed-upon block height, a governance vote, or, more dynamically, cryptographic proof that a quantum computer has broken the classical algorithm, rendering it insecure.

Designing the trigger mechanism is critical. A time-based activation (e.g., at block height 20,000,000) is simple but may be premature or too late. A more robust method involves a cryptographic proof-of-break. A user could submit a transaction signed with a forged classical signature, providing evidence of the algorithm's compromise. The network's fallback logic would verify this proof and, if valid, immediately shift authority to the PQC signature for all subsequent blocks. This creates a self-healing security model that responds autonomously to a realized threat.

Implementation requires careful smart contract design. Below is a simplified Solidity interface outlining the core verification and fallback logic:

solidity
interface IHybridVerifier {
    function verifyHybrid(
        bytes32 messageHash,
        bytes memory classicalSig,
        bytes memory pqcSig,
        address signer
    ) external view returns (bool);

    function isFallbackActive() external view returns (bool);
}

The verifyHybrid function would check the classical signature first. If isFallbackActive() returns false, a valid classical signature is sufficient. If the fallback is active, the function must also validate the PQC signature, enforcing the dual-signature requirement.

Key challenges include increased transaction size from carrying two signatures and higher computational overhead for verification. Projects like Ethereum have explored this through EIPs, considering the integration of PQC algorithms like Falcon or Dilithium. The architecture is not just theoretical; it's a necessary roadmap for any blockchain or smart contract system managing high-value, long-lived assets that must remain secure for decades, bridging the gap between today's infrastructure and tomorrow's cryptographic reality.

algorithm-options
ARCHITECTURE DESIGN

Algorithm Pairing Options

Selecting and integrating quantum-resistant algorithms with classical cryptography for a secure, future-proof signature scheme.

02

Hybrid Signature Construction

A hybrid signature combines a classical algorithm (like ECDSA or EdDSA) with a post-quantum algorithm, signing the same message with both. This provides cryptographic agility and maintains security even if one algorithm is broken.

Common Patterns:

  • Concatenation: Sig = Sig_ECDSA || Sig_Dilithium. Verify both independently.
  • Nested (X.509): Encode the PQ signature within the classical signature's parameters.
  • Key Encapsulation: Use Kyber to agree on a key, then sign the transcript with ECDSA.

This approach ensures backward compatibility with existing systems while deploying quantum resistance.

04

Performance & Implementation Trade-offs

Choosing an algorithm involves balancing signature size, key size, and computational speed, which impact gas costs on-chain and user experience.

Benchmark Comparison (Approx.):

  • Dilithium2: ~2.5KB signature, ~1.3KB public key. Moderate verification speed.
  • Falcon-512: ~0.7KB signature, ~0.9KB public key. Slower signing (requires floating-point).
  • SPHINCS+-SHAKE-256s: ~8KB signature, ~1KB public key. Fast verification, very large signatures.

Test in your target environment (e.g., EVM, Solana, Cosmos SDK) to measure real-world overhead for signature verification, which is the critical on-chain operation.

06

Security Audits & Threat Modeling

A hybrid architecture introduces new attack vectors. Conduct formal security audits and cryptographic threat modeling before mainnet deployment.

Critical Areas to Audit:

  • Side-channel resistance: Ensure implementations are constant-time and protected against timing/power analysis.
  • State management: For stateful schemes, audit the secure storage and update of the private key state.
  • Protocol-level interactions: Ensure the hybrid signature is correctly parsed and validated by all network participants.
  • Failure modes: Plan for graceful degradation if one component (classical or PQ) is compromised.

Engage specialized firms with expertise in both classical and post-quantum cryptography.

CRYPTOGRAPHIC COMPARISON

Classical vs. PQC Signature Characteristics

Key technical and operational differences between established classical digital signatures and emerging Post-Quantum Cryptography (PQC) alternatives.

CharacteristicClassical (ECDSA/EdDSA)PQC (Dilithium/SPHINCS+)Hybrid Approach

Cryptographic Assumption

Discrete Logarithm / Elliptic Curves

Lattice / Hash-Based Problems

Both Classical & PQC Assumptions

Quantum Resistance

Signature Size

64-96 bytes

~2-41 KB

Combined size of both

Verification Speed

< 1 ms

1-10 ms

Slightly slower than PQC alone

Key Generation Time

< 100 ms

10-1000 ms

Sum of both keygen times

Standardization Status

NIST FIPS 186-5 / RFC 8032

NIST FIPS 203/204/205 (Draft)

Emerging IETF & NIST Guidance

Library Maturity

Ubiquitous (OpenSSL, libsodium)

Early Adoption (liboqs, PQClean)

Custom integration required

Primary Security Threat

Large-scale Quantum Computer (Shor's Algorithm)

Cryptanalytic Advances / Side-channels

Implementation flaws & protocol errors

serialization-design
ARCHITECTURE FOUNDATION

Step 1: Designing the Serialization Format

The serialization format defines how classical and quantum data are structured and encoded for signing and verification, forming the backbone of the hybrid protocol.

A hybrid classical-quantum signature architecture requires a deterministic data structure that can be processed by both classical algorithms and quantum circuits. The primary goal is to create a canonical byte representation of the message to be signed, ensuring that both the classical ECDSA component and the quantum Lamport component sign the exact same data. This prevents signature forgery attacks where discrepancies between the two signed payloads could be exploited. Common approaches involve using a cryptographic hash function like SHA-256 to create a fixed-size digest, which then serves as the input for subsequent signing steps.

The serialization must account for the different key structures. For the classical part, you serialize the message for ECDSA. For the quantum-resistant part, you typically serialize the SHA-256 hash of the message for use with a stateful hash-based signature scheme like SPHINCS+ or a one-time signature like Lamport. A practical design is a two-layer hash: H_msg = SHA-256(message), where H_msg is signed by ECDSA, and H_q = SHA-256(H_msg || "quantum_context") is signed by the quantum-safe algorithm. This chaining ensures binding and domain separation. The "quantum_context" string is a domain separation tag to prevent cross-protocol attacks.

Implementation requires careful byte-order specification (typically big-endian) and the exclusion of mutable metadata. For example, when serializing a transaction for a blockchain, you must define a canonical order for fields (nonce, to, value, data, etc.) and RLP or SSZ encoding before hashing. In code, this often looks like:

python
import hashlib
# Canonical serialization of message
serialized_msg = rlp.encode([nonce, to, value, data])
# Hash for classical ECDSA
msg_digest = hashlib.sha256(serialized_msg).digest()
# Domain-separated hash for quantum component
quantum_digest = hashlib.sha256(msg_digest + b'\x01').digest()  # Context byte

The format must also define how the combined signature is serialized for transmission and verification. A simple concatenation is sig_combined = sig_ecdsa || sig_quantum, where sig_ecdsa is the standard 64-byte (r,s) ECDSA signature and sig_quantum is the potentially larger hash-based signature (e.g., ~41KB for SPHINCS+-SHA256-128f-simple). A verifier must know how to split this byte array. Including a short header with version and algorithm identifiers makes the system future-proof and interoperable, allowing for upgrades to the quantum component without breaking existing verifiers.

Finally, consider state management for stateful hash-based signatures. If using a one-time key like in the Lamport scheme, the serialized public key must include or be linked to a key index or nonce to track usage and prevent reuse. This state must be synchronized between the signer and verifier, often requiring a distributed keystore or blockchain to record used key indices. The serialization format is not just about data encoding; it's the protocol specification that ensures all parties have a shared, unambiguous understanding of the data being cryptographically committed.

verification-logic
ARCHITECTURE DESIGN

Step 2: Implementing Verification Logic

This section details the core verification logic for a hybrid signature, outlining the specific checks and cryptographic operations required to validate a signature that combines classical and quantum-resistant components.

The verification logic for a hybrid signature must sequentially validate both the classical and post-quantum components. A successful verification requires both parts to be independently valid. The process begins by parsing the composite signature sig_hybrid = sig_classical || sig_pqc, where || denotes concatenation. The verifier extracts the corresponding public keys pk_classical (e.g., a secp256k1 point) and pk_pqc (e.g., a Dilithium or Falcon public matrix) from the signer's credentials. The message m that was signed must be identical for both algorithms; any discrepancy constitutes a forgery attempt.

First, verify the classical component (e.g., ECDSA or EdDSA) using its standard algorithm. For ECDSA on Ethereum, this involves recovering the signer's address from (v, r, s) and the message hash, and checking it matches the expected pk_classical. This step ensures backward compatibility with existing wallets and smart contracts. If this check fails, verification halts immediately—the signature is invalid. This design prioritizes security and efficiency, as the classical verification is typically faster than PQC verification.

Next, verify the post-quantum component using its specific algorithm. For a lattice-based scheme like Dilithium, this involves using pk_pqc to verify that sig_pqc is a valid signature on the same message hash H(m). This step is computationally more intensive but provides the quantum resistance. The choice of PQC algorithm (ML-DSA, SLH-DSA, etc.) dictates the exact verification routine, which should be implemented using audited libraries like liboqs or PQClean.

A critical implementation detail is strong domain separation between the two signature schemes. The same raw message m must be prepared (hashed) independently for each algorithm according to its own specification. Relying on a single hash output for both can introduce vulnerabilities. Furthermore, the verification logic should enforce strict bounds on signature sizes and public key formats to prevent parsing attacks or malleability issues that could bypass one of the checks.

For on-chain verification in a smart contract, the PQC component presents a challenge due to gas costs. A practical architecture might use a verification abstraction layer: the classical part is verified on-chain (e.g., via ecrecover), while the PQC part's validity is attested to by a trusted off-chain verifier or a zk-SNARK proof. Alternatively, specialized precompiles or layer-2 solutions may be required for direct, gas-efficient PQC verification in the future.

Finally, the system must have a clear failure mode. If either component is invalid, the entire hybrid signature is rejected. Audit logs should record which component failed to aid in debugging and threat analysis. This strict, sequential logic ensures the hybrid signature inherits the security guarantees of both constituent algorithms, creating a robust defense against both classical and quantum adversaries.

key-management
ARCHITECTURE DESIGN

Key Generation and Management

This section details the cryptographic key lifecycle for a hybrid classical-quantum signature scheme, focusing on the generation, storage, and distribution of both classical and quantum-resistant keys.

The foundation of a hybrid signature architecture is the secure generation of two independent key pairs: a classical key pair (e.g., ECDSA secp256k1) and a post-quantum cryptography (PQC) key pair (e.g., CRYSTALS-Dilithium). These keys are generated in parallel but must be cryptographically bound together. The public keys are often concatenated or hashed to form a single composite public key, while the private keys are stored separately. This dual-key approach ensures that the system remains secure against both current classical attacks and future quantum computer attacks.

Key management presents significant challenges, particularly for PQC keys which are often larger. A Dilithium3 private key can be ~2.5KB, compared to a 32-byte ECDSA key. Secure storage solutions like Hardware Security Modules (HSMs) or Trusted Execution Environments (TEEs) are critical. The architecture must define a clear key lifecycle: generation, activation, rotation, and revocation. For blockchain applications, key generation is typically performed off-chain by the user's client, with the composite public key then registered on-chain as an address or account identifier.

A practical implementation involves using a Key Derivation Function (KDF) from a single strong entropy source to seed both key generation algorithms, ensuring a cryptographically secure link. Below is a simplified conceptual outline in pseudocode:

python
# Generate master seed from secure entropy
master_seed = generate_secure_random(48)

# Derive seeds for each algorithm using a KDF
seed_classical = HKDF(master_seed, salt, info="CLASSICAL")
seed_pqc = HKDF(master_seed, salt, info="PQC")

# Generate key pairs
classical_sk, classical_pk = generate_ecdsa_key(seed_classical)
pqc_sk, pqc_pk = generate_dilithium_key(seed_pqc)

# Create composite public key (e.g., concatenation)
composite_pk = classical_pk || pqc_pk

The architecture must also plan for key rotation and migration. Unlike classical keys which may remain static for years, PQC algorithms are newer and may require more frequent updates due to standardization tweaks or improved parameter sets. A hybrid design should allow for the PQC component to be re-generated and re-bound to the existing classical key without changing the user's on-chain composite address, if possible. This requires careful design of the key binding mechanism, often involving a deterministic commitment to the PQC public key within a smart contract or account record.

Finally, consider the operational trade-offs. Using two signatures increases transaction size and verification cost. Schemes like X3DH for key exchange or SPHINCS+ for stateless hash-based signatures offer different size/performance profiles than lattice-based Dilithium. The chosen PQC algorithm should align with the network's constraints. The management system must also handle edge cases, such as the loss of one private key, potentially through a multi-signature or social recovery scheme that uses the remaining secure key as a recovery mechanism.

SIGNATURE MIGRATION STRATEGIES

Transition Phase Policy Matrix

Comparison of policy approaches for migrating from classical to quantum-resistant signatures in a hybrid architecture.

Policy DimensionConservative (Sequential)Aggressive (Parallel)Progressive (Threshold)

Initial Quantum Signature Adoption

0%

100% for new accounts

33% multi-sig weight

Classical Signature Deprecation Timeline

5+ years

< 2 years

3-4 years

Key Management Overhead

Low

High

Medium

Transaction Finality Latency Impact

None

< 100 ms increase

< 50 ms increase

Gas/Cost Increase Estimate

0%

15-30%

5-15%

Backward Compatibility Guarantee

Requires Hard Fork

Recommended for High-Value Assets (>$1M)

overhead-mitigation
MITIGATING COMPUTATIONAL AND STORAGE OVERHEAD

How to Design a Hybrid Classical-Quantum Signature Architecture

A practical guide to building efficient, quantum-resistant digital signatures by combining classical and post-quantum cryptography to reduce computational load and signature size.

A hybrid classical-quantum signature architecture combines a traditional algorithm like ECDSA or EdDSA with a post-quantum cryptography (PQC) algorithm, such as CRYSTALS-Dilithium or SPHINCS+. The primary goal is to hedge against the risk that one of the underlying algorithms is broken, either by a classical attack on the PQC scheme or by the advent of a large-scale quantum computer that can break the classical one. This dual-signature approach, however, introduces significant overhead: you must compute, transmit, and verify two signatures, and store two public keys. For blockchain applications where gas costs and on-chain storage are critical, this naive duplication is often prohibitive.

To mitigate this overhead, the architecture must be designed for efficiency from the ground up. A core strategy is to use a single, combined verification operation. Instead of running two independent verification routines, you design a logical construct where both signatures are verified in a single, optimized step. This can be achieved by having the signer produce a single, aggregated proof that validates both the classical and PQC components simultaneously. The verification logic then checks this combined proof, which is computationally cheaper than the sum of its parts. This requires careful cryptographic engineering to ensure the security properties of both algorithms are preserved in the combined structure.

Storage overhead is addressed by public key aggregation. Rather than storing two full public keys (e.g., a 32-byte Ed25519 key and a 1.3KB Dilithium2 key), you can derive them from a single master seed or use key encapsulation. One method is to generate the PQC key pair, then use a hash of the PQC public key as the randomness or seed for generating the classical key pair. The verifier can then recompute the classical public key on-demand, needing to store only the PQC public key. This technique can cut the combined public key size by nearly 50%, a critical saving for on-chain smart contracts and transaction formats.

For computational efficiency in signing, leverage precomputation and batch verification. Many PQC algorithms have a computationally expensive key generation phase. In a system where keys are long-lived (like a blockchain wallet), this one-time cost is acceptable. Furthermore, if your application verifies multiple signatures at once (e.g., a block validator), implement batch verification for the hybrid scheme. This allows verifying a batch of n hybrid signatures in significantly less time than n times the cost of a single verification. Libraries like liboqs provide integrations that can be adapted for such batched hybrid operations.

Implementing this requires a concrete protocol. Here is a conceptual outline for a hybrid EdDSA-Dilithium signature using key derivation:

python
# Key Generation (Signer)
pqc_sk, pqc_pk = dilithium2.keygen()  # Post-quantum key pair
seed = hash(pqc_pk)                    # Derive seed from PQ public key
classic_sk, classic_pk = ed25519.keygen(seed)  # Classical key pair
# Combined public key is (pqc_pk, classic_pk) but classic_pk can be derived.

# Signing
msg = "Transaction data"
sig_pqc = dilithium2.sign(pqc_sk, msg)
sig_classic = ed25519.sign(classic_sk, msg)
# Combine or concatenate sig_pqc and sig_classic into a single hybrid_sig.

# Verification (Verifier)
# 1. Recover classic_pk from pqc_pk via the same hash derivation.
# 2. Verify both signatures: dilithium2.verify(pqc_pk, msg, sig_pqc) AND ed25519.verify(classic_pk, msg, sig_classic).
# 3. Use a single smart contract function or routine to perform both checks.

This design ensures quantum resistance while optimizing for the constraints of decentralized systems.

Finally, continuously monitor the cryptographic landscape and plan for agility. The NIST PQC standardization process is ongoing, and algorithms may be updated or replaced. Your hybrid architecture should use modular, upgradeable components, allowing the PQC algorithm to be swapped without changing the classical layer or the overall system logic. This approach, focused on combined verification, key derivation, and modularity, provides a practical path to quantum-safe signatures without incurring unsustainable computational and storage costs in production environments.

DEVELOPER FAQ

Frequently Asked Questions on Hybrid Signatures

Answers to common technical questions about designing and implementing hybrid classical-quantum signature architectures for post-quantum security.

A hybrid signature scheme combines a classical digital signature (like ECDSA or EdDSA) with a post-quantum cryptography (PQC) algorithm (like Dilithium or Falcon) into a single signature. The primary goal is cryptographic agility and defense against quantum attacks.

How it works: The signer generates two independent signatures for the same message: one classical and one PQC. The verifier must validate both signatures for the combined signature to be accepted. This provides a safety net: the system remains secure even if one of the underlying algorithms is broken, whether by a quantum computer (breaking the classical one) or by a classical cryptanalysis advance (breaking the PQC one). This approach is recommended by standards bodies like NIST and IETF during the transition to a post-quantum future.