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。