SECTION 1: LEARNING OBJECTIVES

By the end of this lesson, you will be able to:

  • Define quantum computing and its potential impact on blockchain.

  • Explain the quantum threat to current cryptographic primitives.

  • Understand post-quantum cryptographic solutions.

  • Describe the timeline for quantum risk and mitigation strategies.

  • Differentiate between quantum-resistant and quantum-safe cryptography.

  • Identify NIST post-quantum standards and their implications.

  • Implement a basic quantum threat assessment framework in Python.

  • Develop a roadmap for post-quantum migration.


SECTION 2: QUANTUM COMPUTING FUNDAMENTALS

2.1 What is Quantum Computing?

Quantum computing harnesses the principles of quantum mechanics to process information in ways that classical computers cannot. Unlike classical bits (0 or 1), quantum bits (qubits) can exist in superposition (both 0 and 1 simultaneously) and entanglement, enabling exponential parallelism.

 
 
Aspect Classical Computing Quantum Computing
Basic Unit Bit (0 or 1) Qubit (0, 1, or superposition)
Processing Sequential Parallel
Speed Limited by Moore’s Law Exponential potential
Algorithms Deterministic Probabilistic
Current State Mature NISQ (Noisy Intermediate-Scale Quantum)

2.2 Quantum Algorithms Relevant to Blockchain

 
 
Algorithm Purpose Impact on Blockchain
Shor’s Algorithm Factor large numbers, solve discrete logarithms Breaks ECDSA, RSA digital signatures
Grover’s Algorithm Search unsorted databases Reduces hash function security (SHA-256)
Simon’s Algorithm Find hidden periods Affects certain cryptographic structures
Bernstein-Vazirani Find hidden strings Less direct relevance

SECTION 3: THE QUANTUM THREAT

3.1 What is Vulnerable?

text
┌─────────────────────────────────────────────────────────────────────────────┐
│                    QUANTUM THREAT TO BLOCKCHAIN                             │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │                    DIGITAL SIGNATURES                                │   │
│  │  • ECDSA (Elliptic Curve Digital Signature Algorithm)               │   │
│  │  • Ed25519 (Edwards-curve Digital Signature Algorithm)              │   │
│  │  • RSA Signatures                                                  │   │
│  │  • Impact: Private keys can be derived from public keys             │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │                    PUBLIC KEY CRYPTOGRAPHY                          │   │
│  │  • ECC (Elliptic Curve Cryptography)                               │   │
│  │  • RSA (Rivest-Shamir-Adleman)                                     │   │
│  │  • Impact: Secure communication can be decrypted                   │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │                    HASH FUNCTIONS                                   │   │
│  │  • SHA-256 (Bitcoin, many blockchains)                             │   │
│  │  • Keccak-256 (Ethereum)                                          │   │
│  │  • Impact: Grover's algorithm reduces security from 2^256 to 2^128 │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │                    KEY EXCHANGE                                     │   │
│  │  • Diffie-Hellman                                                  │   │
│  │  • Impact: Secure key agreement can be broken                       │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

3.2 Timeline and Risk Assessment

 
 
Qubit Count Quantum Capability Threat Level Timeline (Estimate)
< 50 qubits NISQ, limited applications Low Now – 2027
50-1,000 qubits Error-corrected, some algorithms Medium 2027 – 2035
1,000-4,000 qubits Enough for some RSA/ECC High 2030 – 2040
> 4,000 qubits Break RSA-2048, ECDSA-256 Critical 2035 – 2045
> 10,000 qubits Break most current crypto Very High 2040+

3.3 Key Considerations

 
 
Consideration Description
Harvest Now, Decrypt Later Attackers may collect encrypted data now for later decryption
Migration Time Transitioning to post-quantum crypto takes years
Legacy Systems Many systems will still use vulnerable crypto
Urgency The threat is not immediate but requires planning

SECTION 4: POST-QUANTUM CRYPTOGRAPHY

4.1 What is Post-Quantum Cryptography?

Post-quantum cryptography (PQC) refers to cryptographic algorithms that are believed to be secure against attacks by quantum computers. These algorithms are based on mathematical problems that are hard for both classical and quantum computers.

4.2 NIST Post-Quantum Standards

The National Institute of Standards and Technology (NIST) has selected several post-quantum algorithms for standardisation:

 
 
Algorithm Type Key Feature Use Case
CRYSTALS-Kyber Lattice-based (KEM) Key encapsulation Key exchange
CRYSTALS-Dilithium Lattice-based (Signature) Digital signatures Signatures
FALCON Lattice-based (Signature) Digital signatures Signatures
SPHINCS+ Hash-based (Signature) Stateless Signatures
Classic McEliece Code-based (KEM) Key encapsulation Key exchange
BIKE Code-based (KEM) Key encapsulation Key exchange
HQC Code-based (KEM) Key encapsulation Key exchange

4.3 Post-Quantum Signature Sizes

 
 
Algorithm Public Key Size Signature Size Security
ECDSA (classical) ~33 bytes ~64 bytes 128 bits
Ed25519 (classical) ~32 bytes ~64 bytes 128 bits
CRYSTALS-Dilithium ~1,312 bytes ~2,420 bytes 128+ bits
FALCON ~1,792 bytes ~666 bytes 128+ bits
SPHINCS+ ~32 bytes ~7,856 bytes 128+ bits

4.4 Blockchain Migration Strategies

 
 
Strategy Description Challenges
Hard Fork Upgrade protocol to support PQC Community consensus, coordination
Hybrid Signatures Use both classical and PQC signatures Increased size, complexity
Quantum-Resistant Wallets New wallet formats User migration
Flexible Cryptography Multiple algorithm support Overhead
Gradual Transition Phased migration over years Coordination

SECTION 5: QUANTUM-SAFE BLOCKCHAIN DESIGN

5.1 Design Principles

 
 
Principle Description
Cryptographic Agility Ability to switch algorithms without hard fork
Hybrid Cryptography Use multiple cryptographic schemes
Forward Security Future threats should not compromise past data
Minimal Trust Reduce reliance on any single algorithm
Verifiability Easy verification of cryptographic proofs

5.2 Implementation Considerations

 
 
Consideration Description
Key Sizes Larger keys and signatures affect block size
Verification Speed Some PQC algorithms are slower to verify
Storage Larger data sizes increase storage requirements
Network Bandwidth Larger transactions require more bandwidth
Compatibility Must work with existing infrastructure
Governance Upgrades require community consensus

5.3 Recommended Roadmap

 
 
Phase Timeframe Activities
Research Phase Now – 2026 Monitor developments, assess options
Prototyping 2025 – 2028 Implement hybrid solutions in test environments
Standards Adoption 2027 – 2030 Adopt NIST standards as they mature
Migration 2029 – 2035 Phase in PQC across networks
Full Transition 2035+ All systems using PQC

SECTION 6: IMPLEMENTATION IN PYTHON

python
# ===================================================================
# MODULE 8, LESSON 5: QUANTUM COMPUTING AND POST-QUANTUM CRYPTOGRAPHY
# ===================================================================

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from typing import Dict, List
import warnings
warnings.filterwarnings('ignore')

print("="*70)
print("QUANTUM COMPUTING AND POST-QUANTUM CRYPTOGRAPHY")
print("="*70)

# ----------------------------------------------------------------
# PART A: QUANTUM THREAT ASSESSMENT
# ----------------------------------------------------------------

print("\n" + "-"*60)
print("PART A: Quantum Threat Assessment")
print("-"*60)

class QuantumThreatAssessment:
    """
    Assesses quantum threat to blockchain components.
    """
    def __init__(self):
        self.components = {
            'Digital Signatures': {
                'vulnerability': 'High',
                'affected_algorithms': ['ECDSA', 'Ed25519', 'RSA', 'DSA'],
                'time_to_break': '~4,000 qubits',
                'urgency': 'High'
            },
            'Hash Functions': {
                'vulnerability': 'Medium',
                'affected_algorithms': ['SHA-256', 'SHA-512', 'Keccak-256'],
                'time_to_break': '~Grover (2^128)',
                'urgency': 'Medium'
            },
            'Key Exchange': {
                'vulnerability': 'High',
                'affected_algorithms': ['Diffie-Hellman', 'ECDH'],
                'time_to_break': '~4,000 qubits',
                'urgency': 'High'
            },
            'Symmetric Encryption': {
                'vulnerability': 'Low',
                'affected_algorithms': ['AES-256', 'ChaCha20'],
                'time_to_break': '~2^128 operations',
                'urgency': 'Low'
            }
        }
    
    def get_assessment(self) -> pd.DataFrame:
        data = []
        for component, details in self.components.items():
            data.append({
                'Component': component,
                'Vulnerability': details['vulnerability'],
                'Algorithms': ', '.join(details['affected_algorithms']),
                'Time to Break': details['time_to_break'],
                'Urgency': details['urgency']
            })
        return pd.DataFrame(data)

assessment = QuantumThreatAssessment()
print("Quantum Threat Assessment:")
print(assessment.get_assessment().to_string(index=False))

# ----------------------------------------------------------------
# PART B: POST-QUANTUM ALGORITHM COMPARISON
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART B: Post-Quantum Algorithm Comparison")
print("-"*60)

pq_data = {
    'Algorithm': ['CRYSTALS-Dilithium', 'FALCON', 'SPHINCS+', 'CRYSTALS-Kyber', 'Classic McEliece'],
    'Type': ['Lattice (Sig)', 'Lattice (Sig)', 'Hash-based (Sig)', 'Lattice (KEM)', 'Code-based (KEM)'],
    'Public Key (bytes)': [1312, 1792, 32, 1184, 261000],
    'Signature/Cipher (bytes)': [2420, 666, 7856, 1088, 128],
    'Speed (relative)': ['Fast', 'Very Fast', 'Slow', 'Fast', 'Slow'],
    'Security Level': ['128+ bits', '128+ bits', '128+ bits', '128+ bits', '128+ bits']
}

pq_df = pd.DataFrame(pq_data)
print(pq_df.to_string(index=False))

# ----------------------------------------------------------------
# PART C: KEY SIZE COMPARISON
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART C: Key and Signature Size Comparison")
print("-"*60)

size_data = {
    'Algorithm': ['ECDSA-256', 'Ed25519', 'Dilithium-2', 'Falcon-512', 'SPHINCS+'],
    'Public Key (bytes)': [33, 32, 1312, 1792, 32],
    'Private Key (bytes)': [32, 32, 2528, 1281, 64],
    'Signature (bytes)': [64, 64, 2420, 666, 7856],
    'Total (bytes)': [129, 128, 6260, 3739, 7952]
}

size_df = pd.DataFrame(size_data)
print(size_df.to_string(index=False))

# Visualise
fig, ax = plt.subplots(figsize=(12, 5))
x = np.arange(len(size_data['Algorithm']))
width = 0.25

ax.bar(x - width, size_data['Public Key (bytes)'], width, label='Public Key', color='blue', alpha=0.7)
ax.bar(x, size_data['Private Key (bytes)'], width, label='Private Key', color='green', alpha=0.7)
ax.bar(x + width, size_data['Signature (bytes)'], width, label='Signature', color='orange', alpha=0.7)

ax.set_xlabel('Algorithm')
ax.set_ylabel('Size (bytes)')
ax.set_title('Cryptographic Key and Signature Sizes')
ax.set_xticks(x)
ax.set_xticklabels(size_data['Algorithm'], rotation=45, ha='right')
ax.legend()
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('pq_key_sizes.png', dpi=300, bbox_inches='tight')
plt.show()
print("Post-quantum key size chart saved as 'pq_key_sizes.png'")

# ----------------------------------------------------------------
# PART D: QUANTUM THREAT TIMELINE
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART D: Quantum Threat Timeline")
print("-"*60)

timeline_data = {
    'Year': ['2024', '2026', '2028', '2030', '2035', '2040'],
    'Qubit Capability': ['<100', '100-500', '500-1000', '1000-2000', '2000-4000', '4000+'],
    'Threat Level': ['Low', 'Low-Medium', 'Medium', 'Medium-High', 'High', 'Critical'],
    'Key Milestone': [
        'NIST standards finalised',
        'Early implementations',
        'Prototype quantum attacks',
        'First RSA/ECC breaks?',
        'Significant breaks likely',
        'All current crypto broken'
    ]
}

timeline_df = pd.DataFrame(timeline_data)
print(timeline_df.to_string(index=False))

# ----------------------------------------------------------------
# PART E: SUMMARY AND RECOMMENDATIONS
# -----------------------------------------------------------------

print("\n" + "="*70)
print("PART E: Summary and Recommendations")
print("="*70)

print("""
Quantum Computing and Post-Quantum Cryptography – Key Takeaways:

1. Quantum computing poses a significant threat to current blockchain cryptography.
2. Vulnerable: ECDSA signatures, ECC public key cryptography, RSA.
3. Shor's algorithm breaks discrete log and factoring-based crypto.
4. Grover's algorithm reduces hash function security (SHA-256 -> 2^128).
5. Post-quantum solutions: NIST standards (Dilithium, Kyber, Falcon, SPHINCS+).
6. Hybrid approach: use both classical and post-quantum crypto during transition.
7. Migration timeline: 2025-2035 for full transition.

Recommendations:
  - Assess quantum risk for your systems.
  - Adopt cryptographic agility (ability to switch algorithms).
  - Plan for post-quantum migration early.
  - Use hybrid signatures during transition.
  - Monitor NIST standards and industry developments.
  - Consider "harvest now, decrypt later" threats.
""")