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: 53%

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 a lattice-based digital signature (CRYSTALS-Dilithium3 or FALCON-512) can be securely composed with a pulsar-timing-array (PTA) derived time-lock mechanism such that: (1) ephemeral session keys are encrypted under a time-dependent commitment derived from pulsar timing residuals observable only within a target window T_target (±δt, where δt ≤ 10 seconds), (2) the composed protocol achieves IND-CCA2 security against quantum adversaries under the Module Learning With Errors (MLWE) hardness assumption, (3) an adversary possessing a cryptographically relevant quantum computer (CRQC) and full observation of the pulsar timing channel cannot recover the session key outside T_target with probability greater than 2^(-128), and (4) pre-authorised parties with valid Dilithium3 credentials can reliably decrypt the session key within T_target with success probability ≥ 0.999 under realistic pulsar timing noise conditions (RMS timing residual σ_t ≤ 100 ns for millisecond pulsars such as PSR J0437-4715).

Disproof criteria:
  1. SECURITY BREAK: A polynomial-time quantum algorithm is demonstrated that recovers the session key from observed ciphertext with probability > 2^(-64) without knowledge of the pulsar timing secret, constituting a practical break of the composed protocol.
  2. TIMING CHANNEL ATTACK: An adversary observing only the public pulsar timing channel can predict the time-lock commitment value with probability > 2^(-64) outside T_target, demonstrated via simulation with real PTA data (IPTA DR2 or PPTA DR3).
  3. COMPOSITION FAILURE: A formal proof (in the UC framework or game-based model) demonstrates that the sequential composition of Kyber KEM + Dilithium signature + PTA time-lock is not IND-CCA2 secure, i.e., a distinguishing advantage > 1/poly(λ) exists for a QPT adversary.
  4. TIMING RELIABILITY FAILURE: Authorised parties fail to recover the session key within T_target with probability > 0.01 (i.e., success rate < 0.999) under realistic MSP timing noise drawn from published PPTA/IPTA residual distributions.
  5. PARAMETER DEGRADATION: If NIST formally reduces Kyber-768 security estimate below 128-bit post-quantum security (e.g., due to new lattice attacks such as improved BKZ variants), the protocol's claimed security level is falsified.
  6. EPHEMERIS PREDICTABILITY: Demonstration that a quantum-enhanced adversary can predict pulsar timing residuals 10+ seconds ahead with RMS error < 10 ns using publicly available ephemeris data, eliminating the time-lock's unpredictability.

Experimental Protocol

PHASE 1 — Formal Security Analysis (Weeks 1–8): Construct a game-based security proof for the composed protocol in the Quantum Random Oracle Model (QROM). Verify that the time-lock commitment scheme based on PTA residuals satisfies hiding and binding properties. Use ProVerif or Tamarin Prover for automated protocol verification.

PHASE 2 — Simulation with Real PTA Data (Weeks 5–16): Implement the full protocol stack in Python/Rust using liboqs (Open Quantum Safe) for Kyber-768 and Dilithium3. Replay IPTA DR2 timing residuals to simulate the time-lock mechanism. Measure key recovery success rate across 10,000 simulated T_target windows.

PHASE 3 — Adversarial Simulation (Weeks 10–20): Simulate a quantum adversary attempting to break the time-lock using classical approximations of quantum attacks (BKZ-β lattice reduction, dual attacks). Measure distinguishing advantage as a function of adversary compute budget (up to 2^80 classical operations as proxy).

PHASE 4 — Performance Benchmarking (Weeks 16–24): Benchmark end-to-end protocol latency, key generation time, and communication overhead on commodity hardware (x86-64, ARM Cortex-A72). Target: total handshake < 500 ms on 1 Gbps link.

PHASE 5 — Red Team / Penetration Analysis (Weeks 20–28): Independent security team attempts protocol breaks via timing attacks, replay attacks, and ephemeris manipulation. Document all findings.

Required datasets:
  1. IPTA Data Release 2 (IPTA DR2): Timing residuals for 65 MSPs, publicly available at data.ipta.org. Required for realistic time-lock simulation. Size: ~2 GB.
  2. PPTA Data Release 3 (PPTA DR3): High-precision timing for southern-hemisphere MSPs including PSR J0437-4715 (σ_t ≈ 50 ns). Available via CSIRO Data Access Portal. Size: ~500 MB.
  3. TEMPO2/PINT Ephemeris Files: DE440 solar system ephemeris + pulsar parameter files (.par) for target MSPs. Available from ATNF Pulsar Catalogue. Size: ~100 MB.
  4. liboqs v0.8.0+: Open Quantum Safe library implementing Kyber-768 and Dilithium3 reference implementations. Available at github.com/open-quantum-safe/liboqs.
  5. NIST PQC Round 3 Test Vectors: Known-answer tests (KATs) for Kyber-768 and Dilithium3 for implementation validation. Available from NIST PQC project page.
  6. BKZ Simulation Data: Lattice reduction simulation outputs from BKZ-β (β = 20–60) for MLWE instances at Kyber-768 parameters, generated via fpylll or lattice-estimator.
  7. Network Timing Dataset: GPS-disciplined oscillator timing logs (±10 ns accuracy) for clock synchronisation simulation. Can be generated from public NTP pool data or GPS receiver logs.
  8. ProVerif/Tamarin Model Files: Custom-developed protocol specification files for automated verification (generated as part of Phase 1).
Success:
  1. FORMAL VERIFICATION: ProVerif and Tamarin Prover find zero attacks on secrecy and mutual authentication lemmas within 72-hour runtime (binary pass/fail).
  2. SECURITY PROOF: Game-based IND-CCA2 reduction accepted by ≥ 2 independent cryptographers with no fundamental objections (qualitative, binary).
  3. KEY RECOVERY RELIABILITY: Authorised party key recovery success rate ≥ 99.9% (≥ 9,990/10,000 simulated T_target windows) using IPTA DR2 residuals.
  4. TIME-LOCK ENTROPY: Commitment entropy H(C) ≥ 64 bits measured across all simulated windows (Shannon entropy of commitment distribution).
  5. ADVERSARIAL RESISTANCE: BKZ-β simulation confirms ≥ 2^128 classical security and ≥ 2^64 quantum security for Kyber-768 component (per lattice-estimator output).
  6. TIMING UNPREDICTABILITY: LSTM/ARIMA prediction RMS error > 10 ns for all target MSPs at T_target prediction horizon ≥ 10 s.
  7. PERFORMANCE: Total handshake latency < 500 ms on x86-64; < 2,000 ms on ARM Cortex-A72.
  8. NIST KAT COMPLIANCE: Zero failures on all Kyber-768 and Dilithium3 known-answer tests.
  9. RED TEAM: Zero critical security findings from external red team exercise.
  10. COMMUNICATION OVERHEAD: Total protocol message size < 10 KB per session establishment.
Failure:
  1. Key recovery success rate < 99.0% (< 9,900/10,000 windows) — protocol unreliable.
  2. ProVerif or Tamarin finds any attack trace on secrecy or authentication within 72 hours — fundamental security flaw.
  3. BKZ simulation estimates classical security < 2^100 for Kyber-768 component — insufficient security margin.
  4. LSTM prediction achieves RMS error < 5 ns for any target MSP at ≥ 10 s horizon — time-lock predictable.
  5. Any NIST KAT failure in Kyber-768 or Dilithium3 implementation — implementation error.
  6. Total handshake latency > 2,000 ms on x86-64 — protocol impractical.
  7. Red team identifies a critical vulnerability (session key recovery without T_target knowledge) — protocol broken.
  8. Formal security proof contains an unfixable gap identified by peer reviewers — theoretical foundation invalid.
  9. Pulsar ephemeris prediction error > 1 μs within T_target window using public data — time-lock granularity insufficient.
  10. Protocol message size > 50 KB — communication overhead prohibitive for target applications.

420

GPU hours

160d

Time to result

$18,500

Min cost

$87,000

Full cost

ROI Projection

Commercial:
  1. PATENT PORTFOLIO: 3–5 patentable innovations identified: (a) PTA-derived time-lock commitment scheme, (b) composition of KEM + signature + astrophysical time-lock, (c) ephemeris-synchronised key release mechanism. Estimated patent portfolio value: $5M–$25M.
  2. DUAL-USE TECHNOLOGY: Protocol applicable to both civilian (financial, healthcare data release) and military (time-gated weapons system authorisation) contexts, broadening commercial addressable market.
  3. INFRASTRUCTURE COMPATIBILITY: Designed to be backward-compatible with TLS 1.3 handshake structure, reducing deployment friction for enterprise adoption. Estimated 18-month time-to-market for commercial SDK.
  4. RESEARCH TOOL VALUE: Open-source implementation (liboqs-based) would serve as reference implementation for academic community, driving adoption and citation. Estimated 500+ GitHub stars within 2 years.
  5. CONSULTING/SERVICES: Protocol complexity creates demand for specialised implementation consulting — estimated $2M–$10M services market for early adopters in defence and finance sectors.
  6. INSURANCE/RISK REDUCTION: Quantum-safe time-locked protocols reduce cyber insurance premiums for organisations handling time-sensitive classified data — estimated 15–30% premium reduction = $50K–$500K annual savings per large enterprise client.

🔓 If proven, this unlocks

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

  • 1PQC-SATELLITE-COMMS-PROTOCOL-101
  • 2ASTROPHYSICAL-ENTROPY-SOURCE-CRYPTO-102
  • 3QUANTUM-SAFE-TIME-SENSITIVE-MESSAGING-103
  • 4PTA-BASED-DISTRIBUTED-TIMESTAMP-104
  • 5POST-QUANTUM-TIMED-RELEASE-ENCRYPTION-105
  • 6MULTI-PULSAR-TIME-LOCK-REDUNDANCY-106

Prerequisites

These must be validated before this hypothesis can be confirmed:

  • PQC-AKE-MLWE-SECURITY-001
  • PTA-TIMING-CRYPTOGRAPHY-002
  • KYBER768-IMPLEMENTATION-VALIDATION-003
  • DILITHIUM3-SIGNATURE-VALIDATION-004
  • TIME-LOCK-PUZZLE-COMPOSITION-005
  • QROM-SECURITY-FRAMEWORK-006

Implementation Sketch

# Post-Quantum PTA Time-Lock Authenticated Key Exchange (PQ-PTA-AKE)
# Architecture Overview

## PROTOCOL PARAMETERS
KYBER_LEVEL = 768          # ML-KEM-768 (FIPS 203)
DILITHIUM_LEVEL = 3        # ML-DSA-65 (FIPS 204)
HASH = SHA3_256
T_TARGET_TOLERANCE = 10    # seconds
MIN_PULSAR_TIMING_RMS = 100e-9  # 100 nanoseconds

## DATA STRUCTURES
struct PulsarTimeLock:
    pulsar_id: str          # e.g., "J0437-4715"
    T_target: float         # Unix timestamp (UTC)
    delta_t: float          # window half-width in seconds
    ephemeris_hash: bytes   # SHA3-256 of TEMPO2 .par file
    commitment: bytes       # C = H(residual(T_target) || nonce)
    nonce: bytes            # 32-byte random nonce

struct SessionKeyPackage:
    kem_ciphertext: bytes   # Kyber-768 encapsulation
    signature: bytes        # Dilithium3 signature over (kem_ciphertext || time_lock)
    time_lock: PulsarTimeLock
    sender_pk: bytes        # Dilithium3 public key
    timestamp: float        # message creation time

## PROTOCOL PHASES

### PHASE 1: SETUP (offline, before T_target)
def Setup(security_param: int) -> (pk_A, sk_A, pk_B, sk_B):
    # Party A (sender) key generation
    (kem_pk_A, kem_sk_A) = Kyber768.KeyGen()
    (sig_pk_A, sig_sk_A) = Dilithium3.KeyGen()
    
    # Party B (receiver) key generation  
    (kem_pk_B, kem_sk_B) = Kyber768.KeyGen()
    (sig_pk_B, sig_sk_B) = Dilithium3.KeyGen()
    
    # Exchange public keys via authenticated channel (pre-protocol)
    return (kem_pk_A, sig_pk_A, kem_sk_B, sig_sk_B, ...)

### PHASE 2: TIME-LOCK COMMITMENT GENERATION
def GenerateTimeLock(pulsar_id: str, T_target: float, 
                     ephemeris: TEMPO2Ephemeris) -> PulsarTimeLock:
    # Predict pulsar timing residual at T_target
    predicted_residual = ephemeris.predict_residual(pulsar_id, T_target)
    # residual in nanoseconds, float64
    
    nonce = os.urandom(32)
    
    # Commitment: binding to predicted residual value
    # Hiding: residual unpredictable to adversary before T_target
    commitment = SHA3_256(
        struct.pack('>d', predicted_residual) + nonce
    )
    
    return PulsarTimeLock(
        pulsar_id=pulsar_id,
        T_target=T_target,
        delta_t=T_TARGET_TOLERANCE,
        ephemeris_hash=SHA3_256(ephemeris.serialize()),
        commitment=commitment,
        nonce=nonce  # KEPT SECRET until T_target
    )

### PHASE 3: SESSION KEY ENCAPSULATION (at time T_send < T_target)
def Encapsulate(kem_pk_B: bytes, sig_sk_A: bytes, 
                time_lock: PulsarTimeLock) -> SessionKeyPackage:
    # KEM encapsulation: generates shared secret K and ciphertext C
    (kem_ciphertext, shared_secret_K) = Kyber768.Encap(kem_pk_B)
    
    # Derive session key: bind to time-lock commitment
    session_key = HKDF(
        ikm=shared_secret_K,
        salt=time_lock.commitment,
        info=b"PQ-PTA-AKE-v1",
        length=32
    )
    
    # Sign the package: authenticate sender, bind to time-lock
    message_to_sign = kem_ciphertext + time_lock.serialize()
    signature = Dilithium3.Sign(sig_sk_A, message_to_sign)
    
    return SessionKeyPackage(
        kem_ciphertext=kem_ciphertext,
        signature=signature,
        time_lock=time_lock,  # commitment included, nonce withheld
        sender_pk=Dilithium3.GetPublicKey(sig_sk_A),
        timestamp=time.time()
    )

### PHASE 4: TIME-LOCK OPENING (at time T_open, T_target - delta_t <= T_open <= T_target + delta_t)
def OpenTimeLock(time_lock: PulsarTimeLock, 
                 observed_residual: float) -> (bool, bytes):
    # Verify we are within T_target window
    current_time = get_gps_disciplined_time()  # GPS-disciplined clock
    if abs(current_time - time_lock.T_target) > time_lock.delta_t:
        return (False, None)  # Outside window
    
    # Reconstruct commitment from observed pulsar residual
    # Receiver observes actual residual from radio telescope / PTA network
    reconstructed_commitment = SHA3_256(
        struct.pack('>d', observed_residual) + time_lock.nonce
        # NOTE: nonce revealed by sender at T_target via authenticated channel
    )
    
    # Verify commitment matches
    if not constant_time_compare(reconstructed_commitment, time_lock.commitment):
        return (False, None)  # Timing mismatch or wrong residual
    
    return (True, reconstructed_commitment)

### PHASE 5: SESSION KEY DECAPSULATION
def Decapsulate(package: SessionKeyPackage, kem_sk_B: bytes,
                sig_pk_A: bytes, observed_residual: float) -> bytes:
    # Step 1: Verify signature (authentication)
    message_to_verify = package.kem_ciphertext + package.time_lock.serialize()
    if not Dilithium3.Verify(sig_pk_A, message_to_verify, package.signature):
        raise AuthenticationError("Invalid sender signature")
    
    # Step 2: Open time-lock (timing verification)
    (lock_valid, verified_commitment) = OpenTimeLock(
        package.time_lock, observed_residual
    )
    if not lock_valid:
        raise TimeLockError("Outside T_target window or commitment mismatch")
    
    # Step 3: KEM decapsulation
    shared_secret_K = Kyber768.Decap(kem_sk_B, package.kem_ciphertext)
    
    # Step 4: Derive session key (must match sender's derivation)
    session_key = HKDF(
        ikm=shared_secret_K,
        salt=verified_commitment,
        info=b"PQ-PTA-AKE-v1",
        length=32
    )
    
    return session_key  # 256-bit post-quantum session key

## SECURITY PROPERTIES (to be formally verified)
# 1. IND-CCA2: session_key indistinguishable from random under MLWE
# 2. Mutual Authentication: both parties authenticated via Dilithium3
# 3. Time-Lock Binding: session_key derivation requires verified_commitment
# 4. Forward Secrecy: ephemeral Kyber keys; compromise of long-term keys
#    does not reveal past session keys
# 5. Quantum Resistance: all hardness assumptions are MLWE-based

## VERIFICATION HARNESS
def run_validation(n_trials: int = 10000) -> dict:
    results = {'success': 0, 'timing_fail': 0, 'auth_fail': 0, 'other': 0}
    
    for trial in range(n_trials):
        # Sample realistic pulsar residual from IPTA DR2 distribution
        true_residual = sample_ipta_residual("J0437-4715")
        
        # Simulate T_target window (±10s)
        T_target = time.time() + 3600  # 1 hour ahead
        
        # Run full protocol
        try:
            time_lock = GenerateTimeLock("J0437-4715", T_target, ephemeris)
            package = Encapsulate(kem_pk_B, sig_sk_A, time_lock)
            
            # Simulate time passing to T_target
            # Inject realistic timing noise
            observed = true_residual + np.random.normal(0, 50e-9)  # 50ns noise
            
            session_key = Decapsulate(package, kem_sk_B, sig_pk_A, observed)
            results['success'] += 1
        except TimeLockError:
            results['timing_fail'] += 1
        except AuthenticationError:
            results['auth_fail'] += 1
        except Exception:
            results['other'] += 1
    
    results['success_rate'] = results['success'] / n_trials
    return results

# TARGET: results['success_rate'] >= 0.999

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