密码学RSA学习笔记

RSA简介

已知大数n=pq。p和q为素数。 ϕ \phi ϕ(n) = (p-1)(q-1)。选择一个小于 ϕ \phi ϕ(n)并互素的数字e。公钥为{e,n}。ed ≡ \equiv 1 mod ϕ \phi ϕ(n)。d是e关于 ϕ \phi ϕ(n)的逆元。得出私钥{d,n}。
设明文为M,密文为C。使用公钥加密,则有
C ≡ M e C \equiv M^e CMe mod n。
传输到达接收方后,使用私钥解密,有
M ≡ C d M \equiv C^d MCd mod n。 即 M ≡ ( M e ) d M \equiv (M^e)^d M(Me)d mod n。

用公钥进行有效运算

公钥是公开的,因此可以选定特定的值来加快RSA在使用公钥时的速度。大多数选择e为65537=216 + 1。另外两个常用值为3和17。这些数字的二进制含1的位只有两位,方便计算。但如果指数太小了,如e=3,RSA会遭受到简单的攻击。
假设有三个用户都选择e=3,他们三个的公钥为{e=3, n 1 n_1 n1},
{e=3, n 2 n_2 n2},{e=3, n 3 n_3 n3}。刚好凑巧, n 1 , n 2 , n 3 n_1,n_2,n_3 n1,n2,n3两两互素,这是很有可能发生的。这时一个用户A,使用公钥加密的方式给他们三个人发送了相同的消息M。三个密文分别是
C 1 ≡ M 3 C_1 \equiv M^3 C1M3 mod n 1 n_1 n1, C 2 ≡ M 3 C_2 \equiv M^3 C2M3 mod n 2 n_2 n2, C 3 ≡ M 3 C_3 \equiv M^3 C3M3 mod n 3 n_3 n3。这时,我们使用中国剩余定理,就可以将 M 3 M^3 M3 mod ( n 1 n 2 n 3 n_1n_2n_3 n1n2n3)算出。由RSA可知,M比模数小,因此 M 3 < n 1 n 2 n 3 M^3 < n_1n_2n_3 M3<n1n2n3,那么攻击者只需计算M的三次方根。

用私钥进行有效运算

私钥{d,n},选取数值较小的d,容易遭受穷举攻击;选取数值较大的d,会影响计算效率。那么如何改进计算过程,就成为了提高解密效率的关键。运用中国剩余定理是个不错的方法。

我们可以知道解密过程是 M ≡   C d M \equiv\ C^d M Cd mod n。我们先定义一些中间结果。 V p = C d V_p = C^d Vp=Cd mod p和 V q = C d V_q = C^d Vq=Cd mod p。
定义 X p = X_p = Xp=q × \times ×(q-1 mod p) 和 X q = X_q= Xq=p × \times ×(p-1 mod q)。由CRT得 M = ( V p X p + V q X q ) M=(V_pX_p +V_qX_q) M=(VpXp+VqXq) mod n。虽然加快了一些,但注意到 V p 和 V q V_p和V_q VpVq,还是要计算Cd
我们可以使用费马定理加快这一步。我们知道有式子
ap ≡ \equiv a mod p。
在式子 V p V_p Vp中,我们知道有[Cd]p ≡ \equiv Cd mod p。有dp = d(p-1)+d,故dp ≡ \equiv d mod (p-1)。从而 V p V_p Vp=Cdmod(p-1) mod p。同理 V q V_q Vq=Cdmod(q-1) mod q。并且d mod (p-1)与d mod (q-1)可以预先计算出来。与直接计算 M ≡ C d M \equiv C^d MCd mod n相比,这个方法快得多。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值