solver.press

A post-quantum authenticated key exchange protocol (CRYSTALS-Kyber combined with a lattice-based digital signature) can be securely composed with a pulsar-timing-derived time-lock to authenticate ephemeral session key transmission during the T_target window, ensuring only pre-authorised parties can receive the session key even if the pulsar timing channel is observed by an adversary with a quantum computer.

CryptographyApr 12, 2026Evaluation Score: 60%

Adversarial Debate Score

53% survival rate under critique

Model Critiques

openai: The hypothesis is falsifiable and technically plausible, but the provided papers only tangentially support post-quantum cryptography and do not directly address the security of composing pulsar-timing channels with lattice-based schemes. The security guarantees against quantum adversaries in the ...
mistral: The hypothesis is falsifiable and aligns with post-quantum cryptography principles, but its reliance on pulsar timing as a secure channel lacks robust empirical validation, and quantum adversary assumptions may be overly optimistic.
grok: The hypothesis is falsifiable through testing the security of the composed protocol against quantum adversaries, but it lacks direct support from the provided papers, which focus on unrelated quantum and cryptographic topics. A significant counterargument is the practical feasibility and synchron...
anthropic: The hypothesis is technically elaborate and touches on real cryptographic concepts (CRYSTALS-Kyber, lattice-based signatures), but none of the provided papers are even remotely relevant to post-quantum cryptography, pulsar timing, or authenticated key exchange — the closest paper (post-quantum ne...

Supporting Research Papers

Formal Verification

Z3 logical consistency:✅ Consistent

Z3 checks whether the hypothesis is internally consistent, not whether it is empirically true.

Experimental Validation Package

This discovery has a Claude-generated validation package with a full experimental design.

Precise Hypothesis

A cryptographic protocol combining CRYSTALS-Kyber (NIST PQC KEM, security level 3, ~AES-192 equivalent) with CRYSTALS-Dilithium (lattice-based digital signature) can be securely composed with a pulsar-timing-array (PTA)-derived time-lock mechanism such that: (1) ephemeral session keys are encapsulated and released only within a deterministic time window T_target (±δ seconds, where δ ≤ 10s) derived from pulsar timing residuals; (2) the composition is IND-CCA2 secure against a quantum adversary with access to a fault-tolerant quantum computer running Shor's algorithm; (3) a pre-authorised party holding a valid Dilithium keypair can authenticate and decrypt the session key within T_target; and (4) an adversary observing the full pulsar timing channel and possessing quantum computational resources cannot recover the session key outside T_target with probability greater than 2^(-128).

Disproof criteria:
  1. CRYPTOGRAPHIC BREAK: A polynomial-time quantum algorithm (or classical algorithm with complexity ≤ 2^128 operations) is demonstrated that recovers the session key from observed ciphertext without knowledge of the Kyber private key, invalidating the IND-CCA2 claim.
  2. TIMING CHANNEL ATTACK: An adversary can predict T_target with precision ≤ δ/10 using only publicly available pulsar ephemeris data and quantum-enhanced signal processing, eliminating the time-lock security guarantee.
  3. COMPOSITION FAILURE: A formal proof or concrete attack demonstrates that the sequential composition of Kyber KEM + Dilithium signature + PTA time-lock is not IND-CCA2 secure even when each component individually satisfies its security definition (i.e., a composition attack exists with advantage ≥ 2^(-64)).
  4. TIMING PRECISION FAILURE: Empirical measurement shows that PTA timing residuals exceed 1 microsecond RMS under realistic observing conditions for ≥ 50% of target pulsars, making T_target windows unreliable.
  5. SIDE-CHANNEL BREAK: A timing or power side-channel attack on the Kyber/Dilithium implementation recovers the private key in ≤ 10^6 measurements on commodity hardware, bypassing the quantum-resistance claim.
  6. PROTOCOL LIVENESS FAILURE: The protocol fails to complete key exchange within T_target for ≥ 5% of sessions under realistic network conditions (RTT ≤ 200 ms, packet loss ≤ 1%), making it operationally unusable.
  7. PULSAR TIMING MANIPULATION: A demonstrated physical or signal-processing attack allows an adversary to shift the apparent T_target by > δ without detection by the legitimate parties.

Experimental Protocol

Phase 1 — Formal Security Analysis (Weeks 1–6): Conduct a machine-checked security proof of the composed protocol using the EasyCrypt or CryptoVerif proof assistant. Model the PTA time-lock as a timed commitment scheme and prove the composition theorem under MLWE hardness. Target: produce a formal proof or identify a composition gap.

Phase 2 — Pulsar Timing Simulation (Weeks 4–10): Use TEMPO2/PINT pulsar timing software with real archival PTA data (NANOGrav 15-year dataset) to simulate T_target window generation. Measure timing residual distributions, window reliability, and susceptibility to adversarial timing prediction. Target: characterise δ achievable with ≥ 3 pulsars.

Phase 3 — Protocol Implementation and Benchmarking (Weeks 8–16): Implement the full protocol stack using liboqs (Open Quantum Safe) for Kyber-768/Dilithium3, integrated with a PTA timing oracle. Benchmark on commodity x86-64 hardware and ARM Cortex-A72. Measure: key generation time, encapsulation/decapsulation latency, signature generation/verification latency, end-to-end session establishment time within T_target.

Phase 4 — Adversarial Simulation (Weeks 12–20): Simulate quantum adversary capabilities using classical worst-case lattice reduction (BKZ-2.0 with block size β=40–60) as a proxy for quantum attacks. Attempt timing prediction attacks using full NANOGrav dataset. Measure attack success probability and compare against 2^(-128) threshold.

Phase 5 — Integration and Red-Team Testing (Weeks 18–24): Deploy prototype on a testbed with 2 geographically separated nodes. Conduct red-team exercises including replay attacks, timing manipulation, and side-channel probing. Measure protocol failure rate and security margin.

Required datasets:
  1. NANOGrav 15-Year Data Set (publicly available, ~50 GB): Timing residuals for 68 millisecond pulsars; used for T_target window simulation and adversarial timing prediction experiments. URL: https://nanograv.org/science/data
  2. IPTA (International Pulsar Timing Array) Data Release 2 (~30 GB): Cross-telescope timing data for validation of multi-site timing consistency.
  3. NIST PQC Reference Implementations: CRYSTALS-Kyber and CRYSTALS-Dilithium reference code (C and Python), available from NIST PQC project and pq-crystals.org.
  4. liboqs v0.8.0+: Open Quantum Safe library providing production-quality implementations of Kyber-768, Kyber-1024, Dilithium3, Dilithium5.
  5. TEMPO2 pulsar timing package (open source) + PINT v0.9+: For pulsar timing residual analysis and T_target window computation.
  6. BKZ-2.0 / fpylll lattice reduction library: For simulating classical/quantum lattice attacks on Kyber parameters.
  7. EasyCrypt v2023+ or CryptoVerif v2.07+: For machine-checked formal security proofs.
  8. Network emulation environment: ns-3 or Mininet with configurable RTT (10–500 ms) and packet loss (0–5%) for protocol liveness testing.
  9. Side-channel measurement hardware: ChipWhisperer Lite or equivalent (~$500) for power analysis of Kyber/Dilithium implementations.
  10. Archival ephemeris data: JPL DE440 solar system ephemeris (required by TEMPO2 for barycentric corrections).
Success:
  1. FORMAL SECURITY: EasyCrypt/CryptoVerif proof completes without gaps for the composition theorem, establishing IND-CCA2 security under MLWE hardness assumption with security parameter λ=192 bits. Probability of success: proof either succeeds or identifies a specific fixable gap.
  2. TIMING PRECISION: T_target window generation achieves δ ≤ 300 seconds with timing prediction error ≤ 1 second (99th percentile) using ≥ 3 NANOGrav pulsars. Window availability ≥ 99% over any 24-hour period.
  3. PERFORMANCE: End-to-end session establishment latency ≤ 500 ms (mean) and ≤ 1000 ms (99th percentile) on commodity x86-64 hardware. Kyber-768 encapsulation ≤ 1 ms, Dilithium3 signing ≤ 3 ms.
  4. QUANTUM SECURITY MARGIN: Estimated quantum attack cost on Kyber-768 ≥ 2^128 operations (confirmed by BKZ extrapolation with quantum sieving speedup). Timing prediction adversarial advantage ≤ 2^(-64).
  5. LIVENESS: Session success rate ≥ 95% for RTT ≤ 200 ms and packet loss ≤ 1%. Session success rate ≥ 80% for RTT ≤ 500 ms and packet loss ≤ 5%.
  6. SIDE-CHANNEL RESISTANCE: CPA attack requires ≥ 10^6 traces to recover any key byte using liboqs constant-time implementation (confirming constant-time guarantees hold empirically).
  7. RED-TEAM RESILIENCE: All 4 structured red-team attack categories fail to recover session key or forge authentication with probability ≥ 1 - 2^(-64).
  8. REPRODUCIBILITY: All experiments reproducible by independent team within ±10% of reported metrics using provided artefacts.
Failure:
  1. Formal proof reveals an unfixable composition gap (e.g., the time-lock binding is not compatible with Kyber's IND-CCA2 reduction), with no known repair within 30 days of discovery.
  2. T_target window prediction error exceeds 10 seconds for ≥ 10% of windows using public ephemeris data, making the time-lock trivially bypassable.
  3. End-to-end session establishment latency exceeds 5000 ms (mean) on commodity hardware, making the protocol operationally impractical.
  4. BKZ extrapolation estimates quantum attack cost ≤ 2^100 operations for Kyber-768, indicating insufficient security margin.
  5. CPA side-channel attack recovers a full Kyber private key in ≤ 10^4 traces on the reference liboqs implementation, indicating a critical implementation vulnerability.
  6. Session success rate falls below 70% for RTT ≤ 200 ms and packet loss ≤ 1%, indicating fundamental liveness problems.
  7. A replay or timing manipulation attack succeeds in recovering the session key or bypassing authentication in any red-team exercise, indicating a protocol design flaw.
  8. Pulsar timing data shows ≥ 3 of 10 selected pulsars have timing residual RMS > 1 microsecond, making the time-lock precision insufficient for the claimed δ.

120

GPU hours

130d

Time to result

$8,500

Min cost

$47,000

Full cost

ROI Projection

Commercial:
  1. PRODUCT OPPORTUNITIES: HSM (Hardware Security Module) vendors (Thales, Entrust, nCipher) could integrate PTA time-lock as a premium feature for government/defence customers. Estimated product premium: $5,000–$50,000 per HSM unit.
  2. CLOUD SECURITY SERVICES: AWS, Azure, GCP could offer "quantum-resistant timed key release" as a managed service. Estimated TAM: $800M by 2028 (subset of cloud HSM market).
  3. SATELLITE COMMUNICATIONS: Inmarsat, SES, Viasat require post-quantum key exchange for satellite ground station authentication. PTA time-lock adds a physical layer of security. Estimated contract value: $10–50M per major satellite operator.
  4. BLOCKCHAIN/WEB3: Smart contract time-lock mechanisms currently rely on block timestamps (manipulable). PTA-based time-locks provide a quantum-resistant, physically grounded alternative. Estimated market: $200M in smart contract security tooling by 2026.
  5. ACADEMIC LICENSING: University technology transfer offices could license the protocol implementation. Estimated licensing revenue: $1–5M over 5 years.
  6. CONSULTING AND INTEGRATION: Specialised cybersecurity firms (Booz Allen, MITRE, Leidos) would pay for protocol integration expertise. Estimated consulting market: $20–100M over 5 years.
  7. OPEN-SOURCE ECOSYSTEM VALUE: Contributing to liboqs/OpenSSL would accelerate PQC adoption globally, with indirect economic value estimated at $500M–$1B in avoided breach costs.

🔓 If proven, this unlocks

Proving this hypothesis is a prerequisite for the following downstream discoveries and applications:

  • 1PQC-TIMELOCK-SATELLITE-COMMS-006
  • 2QUANTUM-RESISTANT-TIMED-RELEASE-ENCRYPTION-007
  • 3PTA-BASED-DISTRIBUTED-TIMESTAMPING-008
  • 4POST-QUANTUM-SECURE-MULTIPARTY-TIMED-PROTOCOLS-009
  • 5PULSAR-CLOCK-AUTHENTICATED-FINANCIAL-SETTLEMENT-010

Prerequisites

These must be validated before this hypothesis can be confirmed:

  • PQC-KYBER-FORMAL-PROOF-001
  • PTA-TIMING-ORACLE-IMPL-002
  • DILITHIUM-COMPOSITION-SECURITY-003
  • MLWE-HARDNESS-PARAMETER-ANALYSIS-004
  • NANOGRAV-15YR-TIMING-RESIDUAL-CHARACTERISATION-005

Implementation Sketch

# ============================================================
# POST-QUANTUM PTA TIME-LOCK AUTHENTICATED KEY EXCHANGE
# Architecture Sketch (Python pseudocode)
# ============================================================

# --- DEPENDENCIES ---
# liboqs-python >= 0.8.0 (Kyber-768, Dilithium3)
# pint >= 0.9 (pulsar timing)
# tempo2 (pulsar ephemeris)
# numpy, scipy (timing analysis)

import oqs  # liboqs Python bindings
import pint_pulsar  # PINT pulsar timing
import hashlib, time, struct

# ============================================================
# COMPONENT 1: PTA TIME-LOCK ORACLE
# ============================================================

class PTATimeLockOracle:
    """
    Derives T_target windows from pulsar timing residuals.
    Uses ≥3 millisecond pulsars for robustness.
    """
    def __init__(self, pulsar_list, ephemeris_path, delta_seconds=120):
        self.pulsars = pulsar_list  # e.g., ['J0437-4715', 'J1713+0747', 'J1909-3744']
        self.ephemeris = load_ephemeris(ephemeris_path)  # TEMPO2/PINT ephemeris
        self.delta = delta_seconds  # window width in seconds

    def get_timing_residuals(self, utc_now):
        """
        Query current timing residuals for all pulsars.
        Returns: dict {pulsar_name: residual_ns}
        Precision target: ≤100 ns RMS
        """
        residuals = {}
        for psr in self.pulsars:
            toa = pint_pulsar.get_toa(psr, utc_now, self.ephemeris)
            predicted_toa = pint_pulsar.predict_toa(psr, utc_now, self.ephemeris)
            residuals[psr] = (toa - predicted_toa).to('ns').value
        return residuals

    def derive_window_seed(self, residuals):
        """
        Deterministically derive a window seed from timing residuals.
        Uses SHA3-256 over sorted residual vector.
        Both parties must observe same pulsars to agree on seed.
        """
        residual_bytes = b''.join(
            struct.pack('>d', residuals[psr]) for psr in sorted(self.pulsars)
        )
        return hashlib.sha3_256(residual_bytes).digest()  # 32 bytes

    def compute_T_target(self, utc_now):
        """
        Returns (t_open, t_close) as UTC timestamps.
        t_open = next pulse arrival time rounded to nearest δ boundary
        t_close = t_open + delta
        """
        residuals = self.get_timing_residuals(utc_now)
        seed = self.derive_window_seed(residuals)
        # Derive window offset from seed (0 to delta seconds)
        offset = int.from_bytes(seed[:4], 'big') % self.delta
        t_open = utc_now - (utc_now % self.delta) + offset
        if t_open <= utc_now:
            t_open += self.delta
        t_close = t_open + self.delta
        return (t_open, t_close, seed)

# ============================================================
# COMPONENT 2: KEY GENERATION
# ============================================================

class PartyKeyMaterial:
    """
    Generates and stores Kyber + Dilithium keypairs.
    """
    def __init__(self):
        # Kyber-768: KEM for session key encapsulation
        self.kem = oqs.KeyEncapsulation('Kyber768')
        self.kyber_pk = self.kem.generate_keypair()  # returns public key
        # kyber_sk stored internally in self.kem

        # Dilithium3: Digital signature for authentication
        self.sig = oqs.Signature('Dilithium3')
        self.dilithium_pk = self.sig.generate_keypair()  # returns public key
        # dilithium_sk stored internally in self.sig

    def export_public_keys(self):
        return {
            'kyber_pk': self.kyber_pk,      # 1184 bytes (Kyber-768)
            'dilithium_pk': self.dilithium_pk  # 1952 bytes (Dilithium3)
        }

# ============================================================
# COMPONENT 3: TIME-LOCKED ENCAPSULATION (SENDER/INITIATOR)
# ============================================================

def time_locked_encapsulate(
    recipient_kyber_pk,    # recipient's Kyber-768 public key
    sender_dilithium_sk,   # sender's Dilithium3 signing key (via oqs.Signature object)
    sender_dilithium_pk,   # sender's Dilithium3 public key (for verification)
    pta_oracle,            # PTATimeLockOracle instance
    sender_id,             # bytes: authenticated sender identifier
    recipient_id           # bytes: authenticated recipient identifier
):
    """
    Encapsulates a session key bound to T_target.
    Returns: (ciphertext_bundle, T_target_window)
    """
    # Step 1: Get current T_target window
    utc_now = time.time()
    t_open, t_close, window_seed = pta_oracle.compute_T_target(utc_now)

    # Step 2: Kyber encapsulation — generates session key + ciphertext
    kem_instance = oqs.KeyEncapsulation('Kyber768', secret_key=None)
    kyber_ciphertext, session_key = kem_instance.encap_secret(recipient_kyber_pk)
    # session_key: 32 bytes (256-bit shared secret)
    # kyber_ciphertext: 1088 bytes (Kyber-768)

    # Step 3: Bind ciphertext to T_target window
    # Commitment: H(kyber_ciphertext || t_open || t_close || sender_id || recipient_id)
    binding_data = (
        kyber_ciphertext +
        struct.pack('>QQ', int(t_open), int(t_close)) +
        sender_id + recipient_id
    )
    time_binding_hash = hashlib.sha3_256(binding_data).digest()

    # Step 4: Dilithium signature over binding
    # Signs: (kyber_ciphertext || time_binding_hash || window_seed)
    message_to_sign = kyber_ciphertext + time_binding_hash + window_seed
    signature = sender_dilithium_sk.sign(message_to_sign)
    # signature: 3293 bytes (Dilithium3)

    # Step 5: Assemble ciphertext bundle
    ciphertext_bundle = {
        'kyber_ciphertext': kyber_ciphertext,    # 1088 bytes
        'time_binding_hash': time_binding_hash,  # 32 bytes
        'window_seed': window_seed,              # 32 bytes
        't_open': t_open,                        # 8 bytes
        't_close': t_close,                      # 8 bytes
        'dilithium_signature': signature,        # 3293 bytes
        'sender_dilithium_pk': sender_dilithium_pk,  # 1952 bytes
        'sender_id': sender_id,
        'recipient_id': recipient_id
    }
    # Total bundle size: ~7.5 KB

    return ciphertext_bundle, (t_open, t_close)

# ============================================================
# COMPONENT 4: TIME-LOCKED DECAPSULATION (RECIPIENT)
# ============================================================

def time_locked_decapsulate(
    ciphertext_bundle,     # bundle from time_locked_encapsulate
    recipient_kem,         # oqs.KeyEncapsulation with recipient's Kyber-768 secret key
    pta_oracle,            # PTATimeLockOracle instance
    expected_sender_pk,    # pre-registered sender Dilithium3 public key
    recipient_id           # bytes: recipient's own identifier

Source

AegisMind Research
Need AI to work rigorously on your problems? AegisMind uses the same multi-model engine for personal and professional use. Get started