主題
Search

Cayley-Purser 演算法


Cayley-Purser 演算法是一種 公鑰密碼學 演算法,它依賴於 矩陣乘法 不滿足交換律這一事實。它由 Sarah Flannery(當時 16 歲)受到 Michael Purser 的想法啟發而設計,用於 1998 年的青年科學家競賽。Flannery 以 Purser 和 Arthur Cayley(矩陣 的發明者)的名字命名了該演算法。

Cayley-Purser 演算法僅使用模矩陣乘法,而不是模冪運算,並且對於大模數而言,速度比其他公鑰演算法快得多(例如,對於 200 位模數,速度比 RSA 加密 快約 20 倍)。雖然該演算法起初看起來與 RSA 一樣安全,但隨後表明,僅通過了解公共資料即可輕鬆解密使用該演算法加密的訊息。

Cayley-Purser 演算法的設定過程如下。

1. 選擇兩個大素數 pq,並令 n=pq。素數 pq 都應為 2p_1+1 的形式,其中 p_1 也是素數。

2. 從 GL_2(Z_n)2×2 可逆矩陣的一般線性群,其條目是模 n 的整數)中隨機選擇矩陣 CA,使得 CA!=AC

3. 選擇 r in N 並令 G=C^r

4. 令 B=C^(-1)A^(-1)C

5. 釋出 ABGn。保密矩陣 C,解密時需要用到它。

要加密,請使用以下步驟。

1. 將訊息表示為 2×2 矩陣 mu,其條目在 Z_n 中。

2. 隨機選擇 s in N

3. 令 E=G^(-s)AG^s

4. 令 K=G^(-s)BG^s

5. 將 mu 加密為 gamma=KmuK

6. 傳輸對 (gamma,E)

解密按如下步驟執行。

1. 令 L=C^(-1)EC

2. 那麼 mu=LgammaL。由於 GC 可交換,我們有

LgammaL=(C^(-1)EC)gamma(C^(-1)EC)
(1)
=(C^(-1)G^(-s)AG^sC)(G^(-s)C^(-1)A^(-1)CG^s)×mu(C^(-1)G^(-s)AG^sC)(G^(-s)C^(-1)A^(-1)CG^s)
(2)
=mu.
(3)

由於 n 是兩個大的、未知的素數的乘積,因此透過 G=C^r 計算確定原始矩陣 C 是非常困難的。此外,求解

 B=C^(-1)A^(-1)C
(4)

對於 C 也是棘手的,因為由於選擇 pq 的方式,AGL(Z_n) 中心的階數將至少為 (p-1)(q-1)/4,機率為 1-(p-1)/2-(q-1)/2+(p-1)(q-1)/4

然而,沒有必要知道 C 即可解密訊息;知道 C 的倍數就足夠了,因為如果 H=aC,則有

 H^(-1)EH=(aC)^(-1)E(aC)=L.
(5)

如果矩陣 G 是降秩的(也就是說,如果 G 約簡模 p 或模 q,結果是單位矩陣的標量倍數),那麼 n 可以分解為 GCD(g_(11)-g_(22),g_(12),g_(21),n)。有了 n 的因式分解,確定 C=G^rGL_2(Z_n) 中的解並不困難。

如果 G 是非降秩的,那麼可以按如下方式確定 HC 的倍數。由於 G=C^r,那麼根據 Cayley-Hamilton 定理,存在整數 uv,使得 C=uI+vG。因此,存在矩陣 H=v^(-1)C=hI+G,對於某個尚未知曉的值 h

另請注意

 B=C^(-1)A^(-1)C=H^(-1)A^(-1)H,
(6)

所以

 HB=A^(-1)H.
(7)

因此,

(hI+G)B=A^(-1)(hI+G)
(8)
hB+GB=hA^(-1)+A^(-1)G
(9)
h(B-A^(-1))=A^(-1)G-GB.
(10)

這允許確定 h,從而確定 H。矩陣 H 可以在解密步驟中代替 C 使用。


另請參閱

公鑰密碼學, RSA 加密

此條目由 Scott Sutherland 貢獻

使用 探索

參考文獻

Flannery, S. 和 Flannery, D. In Code: A Mathematical Journey. London: Profile Books, 2000.

在 上被引用

Cayley-Purser 演算法

請引用本文為

Sutherland, Scott. "Cayley-Purser 演算法。" 來自 Web 資源,由 Eric W. Weisstein 建立。 https://mathworld.tw/Cayley-PurserAlgorithm.html

主題分類