RSA公钥秘钥算法

RSA公钥密钥算法总结

RSA算法既能用于数据加密也能用于数字签名,它是素数的典型应用。

RSA是什么?

计算机的加密技术分为对称加密和非对称加密两类。在对称加密中,信息的加解密使用同一秘钥key,其可简化加解密的过程,较为简单,但不足之处在于由于加解密使用同一个key,信息传送双方都要接触这个key,密钥key更容易泄露。在公开密钥加密即非对称加密中,密钥分为公钥PK(发送方通过PK对数据加密,然后发送给接收方,PK可公开),私钥SK(SK解密方保存,接收方通过SK对密文解密,SK不公开)。RSA公钥密码体制是最具代表性的非对称加密方式。

RSA算法原理

RSA定理:若P和Q是两个相异质数,另有正整数D和E,其中E的值与
(P-1)(Q-1)的值互质,并使得DE%(P-1)(Q-1)=1,有正整数M,且M<PQ,设:
C=ME%PQ,B=CD%PQ,则有M=B。

  • 生成公钥和密钥
    • 随意选择两个大的素数P和Q,且P不等于Q
    • 令N=PQ
    • 令T=(P-1)(Q-1)
    • 选择一个整数E,作为一个密钥,使E与T互质(即E与T的最大公约数为1),且E必须小于T
    • 由公式DE%T=1,计算得到D的值,作为另一密钥
    • 将(N,E)作为公钥,(N,D)作为私钥,当然也可互换。
  • 用公钥加密信息
    发送方收到公钥(N,E)后,通过公钥对数据进行加密,操作如下:
    • 明文:M
    • 加密:ME%N=C
    • 密文:C
  • 用私钥解密信息
    接收方收到密文C后,通过私钥(N,D)进行解密,得到明文M,操作如下:
    • 密文:C
    • 解密:CD%N=M
    • 明文:M

RSA算法模拟

为了计算方便,选取较小素数

  • 生成公钥和密钥
    • 取P=11,Q=13
    • 令N=PQ=11*13=143
    • 令T=(P-1)(Q-1)=10*12=120
    • 取E=7
    • 由公式DE%T=1,D*7%120=1得:D=103
    • (143,103)作为公钥,将(143,7)作为私钥。
  • 用公钥加密信息
    • 明文:取M=2
    • 加密:ME%N=C,2103%143=63
    • 密文:C=63
  • 用私钥解密信息
    • 密文:C=63
    • 解密:CD%N=M,637%143=2
    • 明文:M=2

RSA的应用:数字签名

数字签名是实现安全的核心技术之一,它的实现基础就是RSA加密技术,它是RSA的典型应用。
以往的书信或文件是通过亲笔签名或印章证明其真实性的,但在计算机网络中,要解决报文的验证问题,就要使用数字签名,其必须保证以下几点:

  • 接受者能够核实发送者对报文的签名
  • 发送者事后不能抵赖对报文的签名
  • 接受者不能伪造对报文的签名
    在现有的多种实现数字签名的方法中,采用公开秘钥算法比常规算法更容易实现。
    采用RSA实现数字签名的过程:
    发送者A用其私钥SKA对报文M进行运算,将结果DSKA(M)发送给接受者B。
    接受者B用已知的A的公钥得出EPKA(DSKA(M))=M。
    因为除了A没人有A的私钥SKA,所以除了A没有人能产生密文DSKA(M),这样,报文M就被签名了。用私钥加密的报文发给对方,对方只能用持有的公钥解密,这样就实现了核实发送者对报文的报文的签名。
    如果发送者A要抵赖曾经发送过报文M给用户B,则用户B可将M和DSKA(M)出示给第三方监管机构,第三方很容易用公钥PKA去证实A确实发送报文M给用户B。反之,若用户B将M伪造为M,则用户B就不能在第三方面前出示DSKA(M),这样就证明了用户B伪造了对报文M的签名。由此,可看出,实现数字签名的同时也实现了对报文来源的鉴别。

RSA算法的缺点

再强的加密算法,也有被破解的一天。RSA算法是被研究得最广泛的公钥算法,从提出到现在经历了各种攻击,被普遍认为是目前最优秀的公钥方案之一。
RSA的缺点主要有两点:

  • 产生密钥很麻烦,由于素数产生技术的限制,难以做到一次一密。
  • 分组长度太大,为保证安全性,N至少要600bit二进制位以上,运算代价高,速度慢。RSA算法的安全性依赖于大数分解,对于一个大数N,没有有效的方法能够将其分解,从而在已知(N,D)的情况下,无法获得E,同样在已知(N,E)的情况下无法求得D。目前,SET协议中要求CA采用2048bit二进制位长的密钥,其他实体使用1024比特的密钥。现在小于1024比特的N已被证明是不安全的,因此不应使用小于1024比特的RSA,最好使用2048位的N。
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值