•10 min read

Điện toán lượng tử cho kỹ sư phần mềm: Những gì bạn thực sự cần biết vào năm 2026

Điện toán lượng tử cho kỹ sư phần mềm: Những gì bạn thực sự cần biết vào năm 2026

Điện toán lượng tử thường được đề cập như khoa học viễn tưởng. Hầu hết các bài viết tập trung vào qubit, chồng chập và vướng víu một cách trừu tượng, khiến các kỹ sư phần mềm không có định hướng hành động cụ thể.

Bài viết này thì khác. Nó tập trung vào những gì thực sự đang diễn ra vào năm 2026 — đặc biệt là các tác động đến mật mã — và những gì bạn cần làm để đối phó.


Audio Briefing
0:00 / 0:00

Phần Thực Sự Quan Trọng: Mật mã học

Hầu hết các bài viết về điện toán lượng tử đều quá chú trọng vào các ứng dụng lý thuyết (khám phá thuốc, mô hình khí hậu). Tác động ngắn hạn đang buộc chúng ta phải hành động chính là mật mã học.

Mô hình đe dọa rất đơn giản: một máy tính lượng tử đủ mạnh chạy thuật toán Shor có thể phân tích các số nguyên lớn và giải các bài toán logarit rời rạc trong thời gian đa thức. Điều này phá vỡ:

  • RSA (dựa vào phân tích số nguyên)
  • ECDSA / ECDH (dựa vào bài toán logarit rời rạc trên đường cong elliptic)
  • Trao đổi khóa Diffie-Hellman

Mọi thứ bảo mật HTTPS, SSH, ký mã và ký JWT ngày nay đều dễ bị tổn thương — cuối cùng.

Mã hóa đối xứng hầu hết là an toàn. AES-256 được coi là kháng lượng tử. Thuật toán Grover làm giảm một nửa độ dài khóa hiệu quả, vì vậy AES-128 → hiệu quả là AES-64 (bị phá vỡ), nhưng AES-256 → hiệu quả là AES-128 (vẫn ổn).


Advertisement

NIST PQC: Các Tiêu Chuẩn Đã Tồn Tại

Vào tháng 8 năm 2024, NIST đã hoàn thiện các tiêu chuẩn mật mã hậu lượng tử (PQC) đầu tiên của mình:

Thuật toánTiêu chuẩn NISTTrường hợp sử dụngDựa trên
CRYSTALS-KyberFIPS 203 (ML-KEM)Đóng gói khóa (trao đổi khóa TLS)Bài toán mạng lưới mô-đun
CRYSTALS-DilithiumFIPS 204 (ML-DSA)Chữ ký sốBài toán mạng lưới mô-đun
SPHINCS+FIPS 205 (SLH-DSA)Chữ ký số (thận trọng)Hàm băm

Một tiêu chuẩn thứ tư (FALCON / FN-DSA, FIPS 206) dự kiến sẽ sớm ra mắt cho các kích thước chữ ký nhỏ hơn.

Tại sao lại dựa trên mạng lưới? Các bài toán mạng lưới (bài toán vector ngắn nhất, học với lỗi) không có thuật toán lượng tử hiệu quả nào được biết đến. Chúng đã được nghiên cứu hơn 30 năm. Kyber và Dilithium nhanh, có kích thước khóa/mã hóa hợp lý và đã được triển khai trong các thư viện mật mã lớn.


Dòng Thời Gian: "Lưu Trữ Ngay, Giải Mã Sau"

Mối đe dọa không phải là ngay lập tức. Một máy tính lượng tử có liên quan đến mật mã (CRQC) — một máy có hàng nghìn qubit logic chịu lỗi — vẫn chưa tồn tại. Các thiết bị NISQ hiện tại có 1.000–1.400 qubit vật lý nhiễu, còn thiếu rất nhiều.

Các ước tính khác nhau:

  • Lộ trình của IBM: 100.000 qubit vật lý vào năm 2033, nhắm mục tiêu các qubit logic được sửa lỗi
  • Dòng thời gian của NIST: Khuyến nghị di chuyển khỏi RSA/ECDSA vào năm 2030, bắt buộc vào năm 2035
  • NSA: Đã chỉ đạo các cơ quan liên bang bắt đầu di chuyển PQC

Rủi ro thực sự ngày nay là các cuộc tấn công "thu hoạch ngay, giải mã sau": kẻ thù đang lưu trữ lưu lượng truy cập được mã hóa ngày nay để giải mã khi máy tính lượng tử xuất hiện. Nếu bạn đang truyền dữ liệu phải được giữ bí mật trong hơn 10 năm (hồ sơ y tế, dữ liệu quốc phòng, thông tin xác thực có tuổi thọ cao), mối đe dọa là ngay bây giờ.


Điều Này Có Ý Nghĩa Gì Đối Với Mã Của Bạn

TLS/HTTPS

Chrome 131 (Tháng 11 năm 2024) đã bật ML-KEM (Kyber) theo mặc định cho trao đổi khóa lai TLS 1.3. Đây là X25519MLKEM768 — sự kết hợp giữa ECDH cổ điển và Kyber. Bạn có được khả năng kháng lượng tử mà không làm mất bảo mật cổ điển.

Nếu bạn kiểm soát máy chủ của mình: OpenSSL 3.x hỗ trợ Kyber ở chế độ lai. Hầu hết các dịch vụ TLS được quản lý (Cloudflare, AWS, GCP) đã xử lý việc này.

Nếu bạn đang ghim chứng chỉ TLS hoặc thực hiện TLS tùy chỉnh: Xem lại logic ghim của bạn để đảm bảo nó chấp nhận trao đổi khóa lai.

Ký JWT

JWT được ký bằng RS256 (RSA) hoặc ES256 (ECDSA) dễ bị tổn thương về lâu dài. Các thư viện python-jwt và PyJWT chưa hỗ trợ các thuật toán chữ ký PQC một cách tự nhiên, nhưng liboqs-python gói Open Quantum Safe và hỗ trợ Dilithium:

# Experimental: PQC JWT signing with liboqs
# Install: pip install pyoqs
import oqs
import json
import base64

def sign_payload_dilithium(payload: dict) -> tuple[str, bytes]:
    """Sign a JSON payload using CRYSTALS-Dilithium (ML-DSA)."""
    signer = oqs.Signature("Dilithium3")
    public_key = signer.generate_keypair()
    
    payload_bytes = json.dumps(payload).encode()
    signature = signer.sign(payload_bytes)
    
    return base64.b64encode(payload_bytes).decode(), signature

def verify_dilithium(payload_b64: str, signature: bytes, public_key: bytes) -> bool:
    """Verify a Dilithium signature."""
    verifier = oqs.Signature("Dilithium3")
    payload_bytes = base64.b64decode(payload_b64)
    return verifier.verify(payload_bytes, signature, public_key)

Đối với việc ký JWT trong sản xuất, hãy theo dõi các bản nháp của IETF cho ML-DSA-65 trong JOSE (JSON Object Signing and Encryption).

Khóa SSH

OpenSSH 9.0+ hỗ trợ trao đổi khóa lai CRYSTALS-Kyber. Nếu máy chủ của bạn cho phép truy cập SSH, việc kiểm tra các loại khóa là quan trọng:

# Check what key exchange algorithms your SSH server supports
ssh -Q kex | grep -i ky
# sntrup761x25519-sha512@openssh.com  (post-quantum hybrid)

# Generate an SSH key using the PQC hybrid algorithm
ssh-keygen -t ed25519  # Still fine — signatures aren't broken yet
# For key exchange, configure in /etc/ssh/sshd_config:
# KexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256

Ký mã

Các khóa GPG được sử dụng để ký mã (PyPI, npm, hình ảnh container) sử dụng RSA hoặc ECDSA. Các lộ trình di chuyển:

  • Hình ảnh container: Sigstore/Cosign đang nghiên cứu hỗ trợ PQC
  • PyPI: Chưa có dòng thời gian, nhưng quy trình PEP đang được tiến hành
  • Ký commit Git: Vấn đề tương tự — gpg --gen-key mặc định là RSA

Đối với các hệ thống nội bộ, các tạo phẩm được ký bằng Dilithium có thể đạt được ngày nay thông qua liboqs.


Advertisement

Kiểm Kê Mật Mã Thực Tế: Những Gì Cần Kiểm Tra

Chạy script này để tìm việc sử dụng RSA và ECDSA trong một dự án Python:

#!/usr/bin/env python3
"""Audit a codebase for quantum-vulnerable cryptographic usage."""
import subprocess
import sys
from pathlib import Path

VULNERABLE_PATTERNS = [
    # RSA
    ("rsa.generate_private_key", "RSA key generation"),
    ("RSA.generate", "RSA key generation (PyCryptodome)"),
    ("rsa.verify", "RSA signature verification"),
    # ECDSA / ECDH
    ("ec.generate_private_key", "ECDSA/ECDH key generation"),
    ("SECP256R1", "NIST P-256 curve (ECDH/ECDSA)"),
    ("SECP384R1", "NIST P-384 curve"),
    # JWT
    ('algorithm="RS256"', "RSA-signed JWT"),
    ('algorithm="ES256"', "ECDSA-signed JWT"),
    ('algorithms=["RS256"', "RSA JWT verification"),
    # TLS
    ('ssl.PROTOCOL_TLS', "TLS connection (verify key exchange)"),
    ("paramiko", "SSH library (review key exchange config)"),
]

def audit_directory(path: str) -> None:
    root = Path(path)
    findings = []
    
    for py_file in root.rglob("*.py"):
        content = py_file.read_text(errors="ignore")
        for pattern, description in VULNERABLE_PATTERNS:
            if pattern in content:
                # Find line numbers
                for i, line in enumerate(content.splitlines(), 1):
                    if pattern in line:
                        findings.append({
                            "file": str(py_file.relative_to(root)),
                            "line": i,
                            "pattern": pattern,
                            "description": description,
                            "code": line.strip(),
                        })
    
    if findings:
        print(f"Found {len(findings)} potentially quantum-vulnerable cryptography usages:\n")
        for f in findings:
            print(f"  {f['file']}:{f['line']}")
            print(f"    → {f['description']}")
            print(f"    → {f['code']}\n")
    else:
        print("No quantum-vulnerable patterns found.")

if __name__ == "__main__":
    audit_directory(sys.argv[1] if len(sys.argv) > 1 else ".")

Phần Qubit (Tóm tắt)

Vì nó ở khắp mọi nơi: qubit là các bit lượng tử khai thác chồng chập (tồn tại ở cả 0 và 1 đồng thời) và vướng víu (các trạng thái tương quan giữa các qubit). Điều này cho phép các thuật toán lượng tử đánh giá số lượng khả năng theo cấp số nhân cùng một lúc — nhưng chỉ đối với các bài toán toán học cụ thể ánh xạ tới các mạch lượng tử.

Không phải mọi thứ đều có lợi. Các bài toán như tìm kiếm cơ sở dữ liệu (Grover's: tăng tốc căn bậc hai) và phân tích thừa số (Shor's: thời gian đa thức) đều có thể được tăng tốc lượng tử. Hầu hết các tác vụ tính toán hàng ngày (sắp xếp, kết xuất, HTTP) không thấy lợi thế lượng tử nào.

Các thiết bị NISQ (Noisy Intermediate-Scale Quantum) hiện tại tại IBM, Google và IonQ có 400–1.400 qubit vật lý nhưng tỷ lệ lỗi cao. Để đạt được hàng nghìn qubit logic (được sửa lỗi) cần thiết cho thuật toán Shor đòi hỏi hàng triệu qubit vật lý. Chúng ta chưa đạt được điều đó — nhưng các chính phủ và doanh nghiệp lớn đang lên kế hoạch cho giai đoạn 2030–2035.


Danh Sách Kiểm Tra Di Chuyển

Ưu tiênMụcHành động
🔴 Quan trọngNgăn xếp TLSĐảm bảo CDN/proxy của bạn hỗ trợ Kyber lai (Cloudflare, AWS mặc định hỗ trợ)
🔴 Quan trọngBí mật có tuổi thọ caoKiểm tra bất kỳ thứ gì được mã hóa phải được giữ bí mật trong hơn 10 năm
🟡 CaoTrao đổi khóa SSHThêm sntrup761x25519-sha512 vào KexAlgorithms
🟡 CaoThuật toán ký JWTLên kế hoạch di chuyển từ RS256/ES256 sang tiêu chuẩn ML-DSA trong tương lai
🟢 Trung bìnhKý mãTheo dõi lộ trình PQC của Sigstore
🟢 Trung bìnhPKI nội bộLên kế hoạch di chuyển CA sang chứng chỉ lai
⚪ ThấpMã hóa đối xứngAES-256 vẫn ổn; không cần thay đổi

Đọc Thêm

Bạn Cũng Có Thể Thích

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement