Fork me on GitHub

RSA加密系统

在一个公钥加密系统中,每个参与者都有一把公钥和一把私钥。密钥都是一段信息,在RSA加密系统中,每个密钥由一对整数组成。以Alice和Bob为例,其公钥和私钥分别记为 Pa Sa, Pb Sb。

每个参与者均自己参与创建公钥和私钥。私钥需要保密,公钥可以对任何人透露,甚至可以公之于众。事实上,假设每个参与者的公钥都能在一个公开目录中可查。

假定已知Pa和Sa,可以有效地计算出对应的Pa() Sa()。系统中任何参与者的公钥和私钥都是一个匹配对,它们对应的函数互为反函数。即

M = Sa( Pa(M))   M = Pa( Sa(M))

运用两把密钥 Pa 和 Sa 对 M 相继变换后,最后仍然得到消息M。前者一般用于加密,后者则是签名。在公钥加密系统中,要求除了Alice之外,没有人能在有效时间内计算出私钥 Sa。

 

加密过程:

1、Bob取得Alice的公钥Pa(根据一个公开的目录或直接向Alice索取)

2、Bob计算出相应于M的密文C=Pa(M),并把C发给Alice

3、当Alice收到密文C后,运用自己的私钥Sa恢复原始信息,Sa(C)=Sa(Pa(M))= M。

由于Sa()和Pa()互为反函数,所以Alice能够根据C计算出M。因为只有Alice有Sa,所以确保该密文只有Alice可解,因此当窃密者得到C时无法破解密文。

 

签名过程:

 Alice将数字签名Q=Sa(M')附加到消息M'上,来对消息M'签名。将(消息,签名)即(M',Q)发送给Bob,Bob通过检查等式M'=Pa(Q)来验证。如果等式成立,则接受该签名对。

如果等式不成立,那么Bob得出结论,要么是信息M'或数字签名Q因传输错误或被篡改而损坏,要么是数字签名被伪造。因为数字签名既证明了签署者身份,也证明了签署的信息内容,所以它是对文件

末尾的手写签名的一种模拟。数字签名必须能被任何能取得签署者公钥的人验证,签署的信息未必是加密的,该信息可以是公开的,没有受到保护。

类比区块链中的比特币账本,付款人在公布一起交易中附上自己的数字签名,然后被所有其他节点用付款人的公钥验证,确保确实是本人发起的交易,而不是任何一个陌生人在伪造转账记录。

 

RSA加密系统

 

 

 (该截图来自百度百科)

涉及到相关数论知识,上学期刚学过信息安全数学基础,所以还是比较好理解的。

RSA加密系统的安全性主要来源于对大整数进行因式分解的困难性,如果对方能对公钥中的模n进行分解,就可以根据公钥推导出私钥,因为对方和公钥创建者以同样的方法使用了因子p和q。因此如果能

轻易分解大整数,就能轻易破解RSA。

posted @ 2021-03-02 18:24  Faded828x  阅读(518)  评论(0编辑  收藏  举报