主题
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 算法。" 来自 MathWorld-- 资源,由 Eric W. Weisstein 创建。 https://mathworld.net.cn/Cayley-PurserAlgorithm.html

主题分类