注:本文章中内容和图片主要来源于 Oded Regev 的课堂讲义。
初识 RSA
众所周知的
公钥密码体制现在被广泛应用于从网络浏览器到智能卡的各种应用中。 自
年首次发表以来,许多研究人员试图寻找系统中的漏洞。 发现了一些巧妙的攻击。 然而,已知的攻击都不是毁灭性的,
系统仍然被认为是安全的。
在这次课程中,提出了一个这样的攻击,最初源自 Hastad,然后由 Coppersmith 改良。 当
与低公共指数一起使用时,可以开展此攻击。攻击基于一种寻找低次多项式小解的算法,而这种算法又基于
算法。 这种寻根算法本身很有趣,也用于对
系统的其他攻击。
由于很多同学对 RSA 算法不是特别熟悉,我下面简单的介绍下 RSA 算法,还有对加解密算法做一个证明,以帮助大家更好的阅读下面的文章。
让我们描述一个简单版本的RSA密码系统。 设
是两个大小大致相同的大素数的乘积。设
是满足
的两个整数,其中
是乘法群
的阶数。 我们称
为
的模,
为公共指数,
为私有指数。
是公钥。 顾名思义,它是公开的,用于加密消息。
称为私钥,只有加密消息的接收方知道。 私钥可以解密密文。 消息是整数
。 为了加密
,计算
。 为了解密密文,合法接收方计算
。 事实上,
,其中最后一个等式遵循欧拉定理。
首先让我们看一下欧拉定理。在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若为正整数,且互质,则:。
对于密钥的生成和加密阶段,都很好理解,现在我们主要来看下解密过程。
回顾一下,
分别为算法中的公钥和私钥,根据算法性质知
(这里的等号为模等),下同。
证明:
- 因
,所以,;
- 设
- 则解密过程
- 因
为素数,根据欧拉定理有,故
-
可证。
- 同理可证
- 因为
都为素数, 所以, 即
证毕
下面介绍下RSA的低公共指数问题。
Low Public Exponent RSA
在许多实际应用中,加密过程是由一些有限的设备来完成的,例如智能卡。在这种情况下,将
提高到 high power 可能会在电池电量、时间等方面付出相当大的代价。为了简化加密过程,人们可能会尝试修改