1 什么是后量子密碼?
后量子密碼是能夠抵抗量子計算機對現有密碼算法攻擊的 新一代密碼算法。所謂“后”,是因為量子計算機的出現,現有的絕大多數公鑰密碼算法(RSA、Diffie-Hellman、橢圓曲線等)能被足夠大和穩定的量子計算機攻破,所以可以抵抗這種攻擊的密碼算法可以在量子計算和其之后時代存活下來,所以被稱為“后量子密碼”或“抗量子密碼”。
2 主要構造技術
實現后量子密碼算法主要有以下 4 種途徑 :
(1)基於哈希 (Hash-based):最早出現於 1979 年,主要用於構造數字簽名。代表算法:Merkle 哈希樹簽名、XMSS、Lamport 簽名等。基於哈希的簽名算法由 Ralph Merkel 提出,被認為是傳統數字簽名 (RSA、DSA、ECDSA 等 ) 的可行代替算法之一。基於哈希的簽名算法由一次性簽名方案演變而來,並使用 Merkle 的哈希樹認證機制。哈希樹的根是公鑰,一次性的認證密鑰是樹中的葉子節點。基於哈希的簽名算法的安全性依賴哈希函數的抗碰撞性。由於沒有有效的量子算法能快速找到哈希函數的碰撞,因此(輸出長度足夠長的)基於哈希的構造可以抵抗量子計算機攻擊。此外,基於哈希的數字簽名算法的安全性不依賴某一個特定的哈希函數。即使目前使用的某些哈希函數被攻破,則可以用更安全的哈希函數直接代替被攻破的哈希函數。
(2)基於編碼 (Code-based):最早出現於 1978 年,主要用於構造加密算法。代表算法:McEliece。基於編碼的算法使用錯誤糾正碼對加入的隨機性錯誤進行糾正和計算。一個著名的基於編碼的加密算法是 McEliece。McEliece 使用隨機二進制的不可約 Goppa 碼作為私鑰,公鑰是對私鑰進行變換后的一般線性碼。Courtois、Finiasz 和Sendrier 使用 Niederreiter 公鑰加密算法構造了基於編碼的簽名方案。基於編碼的算法(例如 McEliece)的主要問題是公鑰尺寸過大。基於編碼的算法包括加密、密鑰交換等。
(3)基於多變量 (Multivariate-based):最早出現於 1988 年,主要用於構造數字簽名、加密、密鑰交換等。代表方法/算法:HFE (Hidden Field Equations)、Rainbow (Unbalanced Oil and Vinegar (UOV) 方法)、HFEv- 等。基於多變量的算法使用有限域上具有多個變量的二次多項式組構造加密、簽名、密鑰交換等算法。多變量密碼的安全性依賴於求解非線性方程組的困難程度,即多變量二次多項式問題。該問題被證明為非確定性多項式時間困難。目前沒有已知的經典和量子算法可以快速求解有限域上的多變量方程組。與經典的基於數論問題的密碼算法相比,基於多變量的算法的計算速度快,但公鑰尺寸較大,因此適用於無需頻繁進行公鑰傳輸的應用場景,例如物聯網設備等。
(4)基於格(Lattice-based):最早出現於 1996 年,主要用於構造加密、數字簽名、密鑰交換,以及眾多高級密碼學應用,如:屬性加密 (Attribute-based encryption)、陷門函數 (Trapdoor functions)、偽隨機函數 (Pseudorandom functions)、同態加密 (Homomorphic Encryption) 等。代表算法:NTRU 系列、NewHope (Google 測試過的)、一系列同態加密算法 (BGV、GSW、FV 等)。由於其計算速度快、通信開銷較小,且能被用於構造各類密碼學算法和應用,因此被認為是最有希望的后量子密碼技術。