跳轉到

10.2 Shor 與 Grover 演算法的影響#

概念說明#

對密碼學有直接衝擊的量子演算法只有兩個,但威力截然不同:

  • Shor(1994):多項式時間解因數分解與離散對數(含橢圓曲線版)——摧毀式攻擊。RSA、DH、ECC 全數失效。
  • Grover(1996):對 n 位元搜尋空間提供平方加速——削弱式攻擊。窮舉 2^n 降為約 2^(n/2) 次查詢,對稱密碼金鑰長度「等效減半」。

Shor 演算法的原理(直覺版)#

Shor 把「分解 N」化約為「找函數 f(x) = a^x mod N 的週期 r」(10.1 節的經典側程式已示範)。經典電腦找週期需評估指數多個 x;量子電腦用量子傅立葉變換(QFT):

  1. 把疊加態 Σ|x⟩|f(x)⟩ 準備好(一次評估所有 x 的 f 值)。
  2. QFT 放大量子態中「以 r 為週期」的干涉結構,測量即以高機率得到含 r 資訊的值。
  3. 少數次重測 + 經典後處理(連分數展開)得到 r。

對 DLP 同理:離散對數本質也是找週期(g^x ≡ h),Shor 的變體直接給出 x。橢圓曲線群同樣有 QFT 適用的群結構——ECC 沒有豁免權。

規模需求:分解 RSA-2048 估計需要約 6000 個邏輯 qubit(含錯誤修正即數百萬物理 qubit)——這就是「現在還做不到」的原因,但工程進展是單向的。

Grover 演算法的原理#

在無結構的 n 位元搜尋空間中找目標,Grover 用「疊加 + 振幅放大」:

  1. 初始均勻疊加 Σ|s⟩(所有候選同振幅)。
  2. 每次迭代:Oracle 反相(目標項振幅變號)→ 平均反轉(整體繞平均翻轉)→ 目標振幅放大。
  3. 約 (π/4)·2^(n/2) 次迭代後測量,高機率命中目標。

與窮舉 2^n 相比,這是平方加速:2^128 的 AES-128 金鑰搜尋變為 2^64 次量子查詢——「勉強可行」的邊界。對策便宜得驚人:把金鑰加倍(AES-256 → 2^128 查詢,安全)。

Python:Grover 的經典對照與金鑰長度換算#

import math

def grover_iterations(bits):
    """以位元數估計 Grover 查詢次數(理論值)"""
    n = 2 ** bits
    return round((math.pi / 4) * math.sqrt(n))

def classical_iterations(bits):
    return 2 ** bits

for bits in (56, 80, 128, 256):
    q = grover_iterations(bits)
    c = classical_iterations(bits)
    print(f"{bits:3}-bit: 經典 2^{bits} vs 量子約 2^{bits//2} 次 "
          f"(Grover ≈ {q:.2e})")

# DES(56 位元)在量子下剩 28 位元 → 秒破
# AES-128 → 64 位元 → 危
# AES-256 → 128 位元 → 安全
print("\n對策:對稱金鑰至少 256 位元(AES-256、ChaCha20 金鑰本就是 256 位元)")

# Shor 影響的演示:DLP/分解的經典最佳複雜度 vs 量子
print("\nRSA-2048 分解:經典 GNFS 亞指數 vs Shor 多項式 ~O(n^3 log n) 位元運算")
print("ECDLP-256:經典 Pollard rho 2^128 vs Shor 多項式")

安全性分析#

  • 影響的不對稱:Shor 殺的是「數學結構」(群上的指數/對數),Grover 削的是「暴力空間」。結構可被特化演算法命中,空間只能平方縮——故後量子密碼刻意選擇「無好量子演算法」的結構:格(lattice)、雜湊、編碼、多變數(10.3 節)。
  • Grover 的實務折扣:量子查詢的平行化並不像經典那樣線性疊加(可逆計算、Oracle 序列化),實際成本還要再乘上錯誤修正開銷;學界普遍認為 AES-256 在量子時代綽綽有餘。
  • 雜湊的碰撞:Grover 給前像 2^(n/2);BHT 演算法對碰撞約 2^(n/3)——SHA-256 的碰撞安全 128 位元 → 量子下約 85 位元,仍可接受,但簽章應用傾向 SHA-384/512 以留餘裕。

練習#

  1. 計算:以 Grover 破解 80 位元金鑰需多少次量子查詢?換算成「每秒 10^6 次查詢的量子機器」需多少年?
  2. 說明為什麼「AES-GCM 用 256 位元金鑰」就能完整應對量子時代,而「RSA-4096」不能?(對比 Grover 的平方加速與 Shor 的多項式破解)
  3. 用 10.1 節的週期法程式,對 N=77、a=5 找週期並分解;解釋 QFT 如何把「逐項試探找週期」變成「一次疊加測量」。