前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RSA 算法简述

RSA 算法简述

作者头像
IT茂茂
发布2020-03-05 20:05:11
2.4K0
发布2020-03-05 20:05:11
举报
文章被收录于专栏:IT 茂茂

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。

公钥加密

  • 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。
  • 我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用
  • 数字2,就是我的私钥,来解密。这样我就可以保护数据了。
  • 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,
  • 只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。

私钥签名

  • 如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
  • 道我的公钥是1,那么这种加密有什么用处呢?
  • 但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
  • 解密看是不是c。他用我的公钥1解密,发现果然是c。
  • 这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
  • 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。

    总结:公钥和私钥是成对的,它们互相解密。

    公钥加密,私钥解密。

    私钥数字签名,公钥验证。

举例

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

  • Bob将他的公开密钥传送给Alice。
  • Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
  • Bob用他的私人密钥解密Alice的消息。

  上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。

公钥算法与私钥算法

私钥算法

私钥加密算法,又称 对称加密算法,因为这种算法解密密钥和加密密钥是相同的。也正因为同一密钥既用于加密又用于解密,所以这个密钥是不能公开的。

公钥算法

公钥加密算法,也就是非对称加密算法,这种算法加密和解密的密码不一样,一个是公钥,另一个是私钥:

公钥和私钥成对出现

  • 公开的密钥叫公钥,只有自己知道的叫私钥
  • 用公钥加密的数据只有对应的私钥可以解密
  • 用私钥加密的数据只有对应的公钥可以解密
  • 如果可以用公钥解密,则必然是对应的私钥加的密
  • 如果可以用私钥解密,则必然是对应的公钥加的密
  • 公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。

实现数据的安全传输

  • 要实现数据的安全传输,当然就要对数据进行加密了。
  • 如果使用对称加密算法,加解密使用同一个密钥,除了自己保存外,对方也要知道这个密钥,才能对数据进行解密。如果你把密钥也一起传过去,就存在密码泄漏的可能。所以我们使用非对称算法,过程如下:
  • 首先 接收方 生成一对密钥,即私钥和公钥;
  • 然后,接收方 将公钥发送给 发送方;
  • 发送方用收到的公钥对数据加密,再发送给接收方;
  • 接收方收到数据后,使用自己的私钥解密。
  • 由于在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方自己知道,这样就保证了数据传输的安全性。

公钥算法的缺点

现实中,公钥机制也有它的缺点,那就是效率非常低,比常用的私钥算法(如 DES 和 AES)慢上一两个数量级都有可能。所以它不适合为大量的原始信息进行加密。为了同时兼顾安全和效率,我们通常结合使用公钥算法和私钥算法:

  • 首先,发送方使用对称算法对原始信息进行加密。
  • 接收方通过公钥机制生成一对密钥,一个公钥,一个私钥。
  • 接收方 将公钥发送给 发送方。
  • 发送方用公钥对对称算法的密钥进行加密,并发送给接收方。
  • 接收方用私钥进行解密得到对称算法的密钥。
  • 发送方再把已加密的原始信息发送给接收方。

接收方使用对称算法的密钥进行解密。

总结:

  • 每个用户都有一对私钥和公钥。
  • 私钥用来进行解密和签名,是给自己用的。
  • 公钥由本人公开,用于加密和验证签名,是给别人用的。
  • 当该用户发送文件时,用私钥签名,别人用他给的公钥解密,可以保证该信息是由他发送的。即数字签名。
  • 当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他看到。即安全传输。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RSA是什么
  • RSA算法原理
  • RSA算法模拟
  • RSA的应用:数字签名
  • RSA算法的缺点
  • 公钥加密
  • 私钥签名
  • 公钥算法与私钥算法
  • 实现数据的安全传输
  • 公钥算法的缺点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档