公钥密码之RSA

1,公钥密码

对称密码,加密和解密采用同一把密钥,如果有n个用户,则需要n(n-1)/2把密钥,肯定存在效率和安全问题。

非对称密码,也即公钥密码的核心思想就是加密解密采用不同的密钥。

公钥密码思想的提出者Diffie and Hellman

公钥密码思想的提出者Diffie and Hellman

image-20201222124541491

公钥密码特点:

1,加密和解密过程必须是计算上容易的;

2,敌手从公钥PKb求解得到私钥SKb,在计算上是不可行的;

3,敌手有密文c和公钥PKb恢复明文m,在计算上是不可行的。

这样我们就解决了如下问题:

密钥分发:公钥可以任意公开,

密钥管理:N个用户的系统中,用户只需维护自己的私钥和别人N-1个公钥。整个系统只需维护N个公钥

开放系统:在没有预先建立关系的系统中也可以建立通信。

为满足上述要求:需要设计一个陷门单向函数:

单向函数:y=f(x),由原像的y简单,而由像得原像困难;

易于计算:指函数值能在其输入长度的多项式时间内求出。即如果输入长n比特,则求函数值的计算时间是 n a n^a na的某个倍数,其中a是一固定的常数。这时称求函数值的算法属于多项式类P。

陷门单向函数:指该函数是易于计算的,但求它的逆是不可行的,除非再已知某些附加信息。当附加信息给定后,求逆可在多项式时间完成。

2,RSA算法

RSA于1977年被Rivest,Shamir,Adleman提出,并在2002年获得图灵奖。

RSA算法描述:

  1. 选两个大素数p和q(保密);
  2. 计算n=p×q, ϕ(n)=(p−1)×(q−1);
  3. 随机选一整数e∈(1, ϕ(n)),满足:gcd(ϕ(n), e) =1(公钥e);
  4. 计算d,满足:d×e ≡ 1 (mod ϕ(n))(私钥d)。
  5. 公钥(n,d);私钥(e,p,q)。

(tips: d的计算,即为de-1 = kϕ(n))

加密过程: c ≡ m e ( m o d n ) c ≡ m^{e} \pmod n cme(modn)

解密过程: m ≡ c d ( m o d n ) m ≡ c^{d} \pmod n mcd(modn)

加解密过程梳理:

  • Alice向Bob发送消息,获得到Bob的公钥(e,n)对自己的消息明文m加密,可以知道这里的明文需要是整数,且m小于n;
  • 加密过程即为计算m的e次方除以n的余数。
  • 然后Bob拿到密文后用自己的私钥(d,n)进行解密,即c的d次方除以n得m。

这里证明如下:


几点说明:RSA本身是基于大素数分解的困难问题而设计的密码算法,因此为了防止敌手通过穷举搜索发现p、q,这两个素数应该足够大,目前一般选取1024比特或更大的p、q。因此如何有效地寻找大素数是第一个需要解决的问题。

寻找大素数时一般是先随机选取一个大的奇数(例如用伪随机数产生器),然后用素性检验算法检验这一奇数是否为素数(如Miller-Rabin算法),如果不是则选取另一大奇数,重复这一过程,直到找到素数为止。
证明参考:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值