找回密码
 立即注册
查看: 31036|回复: 100

用数学的方式解释非对称加密算法

    [复制链接]
  • TA的每日心情

    2023-10-27 00:45
  • 签到天数: 490 天

    连续签到: 1 天

    [LV.9]妙领天机

    402

    主题

    3130

    回帖

    4594

    积分

    如雷贯耳

    积分
    4594
    发表于 2018-7-23 00:28:37 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

      阅读过<<互联网项目架构之安全的账号系统设计,即使被拖库撞库,也可以保证密码绝不泄露>>和<<互联网项目架构之账号系统安全设计的正确姿势>>这两篇文章的朋友应该知道了加密的重要性,加密也是为了防止用户信息被泄露,今天我们继续研究加密,但今天主要研究非对称加密。
      我们设计用户表的时候采用的是不可逆的对称加密算法,也就是理论上一个原文对应一个密文,但一个密文可能对应多个原文,所以在数学上不可逆。
      而今天我们研究的非对称加密,却是数学上可逆的加密算法,既然是可逆的,那为什么又能保证原文的安全?不管对称加密还是非对称加密,其加密算法都是公开的,为什么也不能被爆破?为什么自己实现的加密算法却不推荐使用?
      接下来我们就针对这些问题,进行一个深入的探讨和研究。
      首先我们还是:
      从对称加密说起
      什么是对称加密?所谓对称加密就是加密算法和解密算法互为相反过程的加密算法,比如我想把一句“我爱你”通过网络传给远方的女朋友,如果直接以原文传输,那么在传输的过程中可能就会被黑客劫持,黑客一看,哎呀,这小子还挺肉麻,给你改成了“我恨你”再继续传输,等到远方的女朋友收到“我恨你”,这下好了,这关系黄了。为什么明明发的是“我爱你”,却变成了“我恨你”,这很纳闷啊。
      所以有人发明了对称加密,比如A和B私下约定好,我们之间的所有消息都通过了一个函数进行加密,收到消息之后再按这个函数来进行解密,过程就成了这样:
    87c01ec7gy1fsq68a0z9ij20g70awdfw.jpg

      A和B约定函数f(x)就是将原文“我爱你”转换成一些看不懂的乱码,通过网络传输,黑客即使劫持到消息,他也看不懂这是什么意思,当B收到消息的时候,按照约定通过函数f(x)进行求解得到原文“我爱你”,这样就保证了A和B之间发消息不会被篡改。
      在这之间,“我爱你”就是原文,f(x)就是密钥,乱码就是密文,这样的一个加密通信过程是互为相反过程,所以叫对称加密。
      那么问题来了,如果黑客劫持到了消息,他知道这段消息是通过某种固定的算法得到的,那么他完全可以劫持大量的消息之后,通过不断的尝试,最终拿到你的加密过程,即密钥,这样一来,黑客同样破解了你的加密过程,那么你不得不重新约定加密算法。
      但A和B可以约定每发一条消息就换一个密钥,这完全可以,但A和B又不是面对面交流,那么密钥的重新约定又成了一个问题,你说A可以打电话告诉B新的密钥,这又不排除电话被监听的可能性。
      所以,后来才有数学家和信息安全专家发明了MD5、SHA1等加密算法,让原文加密之后得到一个密文,而这个密文可以对应多个原文的加密算法,这样一来即使加密算法是公开的,但过程是不可逆的,所以没办法进行爆破,而我们也并不是什么信息安全专家,我们不应该尝试自己实现的加密算法。
      非对称加密
      但显然这样的不可逆算法不适用于A和B进行通信,所以,非对称加密算法就该出场了,A和B通过某种新的算法来得到密钥,这个算法同时产生一个公钥和一个私钥,而公钥和私钥又存在着某种关系,那么,A和B的通信就变成了这样:
    87c01ec7gy1fsq68acxebj20fs0dhdfy.jpg

      B通过密钥生成器得到公钥e和私钥d,B可以通过任何方式将公钥e传给A,然后B跟A约定好:你发消息通过e进行加密,我拿到消息之后就知道你表达的是什么意思。这样一来,即使黑客劫持了密文和公钥e,而e只能进行加密,不能解密,只要d没有被泄露,是没办法爆破的。
      RSA非对称加密
      而RSA非对称加密就是实现了这样的一个过程,RSA其实是由麻省理工的三位数学家发明的,分别叫罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman),他们名字的缩写就是RSA了。
      那RSA为什么安全?我们不妨来研究一下它的数学过程:
      其基本原理就是质因数分解,以刚才A和B通信的例子,密钥生成器的过程是这样的:
      1.先找出两个素数p和q;
      2.求出p和q的乘积x;
      3.有一个函数f(x)=(p-1)(q-1),欧拉函数;
      4.求公钥e:在1到f(x)之间找出一个整数并且e和f(x)互为质数;
      5.求私钥d:e和d的乘积再模以f(x)等于1,假设f(x)=20,e=3,那么d=7;
      假设现在A和B之间传输一个数字m,那么加密则是:me%n=c;得到密文c,则解密过程则是:cd%n=m,由此还原出原文m。
      RSA的安全性
      根据上面的推导,如果要加密的话,需要已知n、公钥e得到密文c,如果要解密的话,需要已知n、私钥d和密文c得到原文。
      但由于黑客劫持,知道n、e、c,但不知道d,所以,不能还原到原文,即使要通过计算得到d,那就需要知道f(x),而f(x)又是由p和q决定的,需要进行质因数分解,但是,RSA的加密是非常大的两个质因数得到的f(x),通常是1024位长度的二进制数,目前普通的计算机还没有这样的能力,计算机能乘出这样大的数字是一瞬间的事,但如果要分解这么大的数字,就比较难了,所以认为这样的加密是安全的,即使是量子计算机,也需要很多天才能破解。
      不过为了安全起见,像银行系统、支付宝这样的金融项目,通常也需要定期的更换密钥能保证数据的安全性。
    楼主热帖
    [!luckypost!]: 一个袋子砸在了 xiaoyu2520 头上,xiaoyu2520 赚了 5 金钱. !lucky_goodrank! / !lucky_badrank!
  • TA的每日心情
    无聊
    2019-8-30 10:21
  • 签到天数: 473 天

    连续签到: 1 天

    [LV.9]妙领天机

    4

    主题

    3050

    回帖

    3052

    积分

    声名显赫

    积分
    3052
    发表于 2018-7-23 00:35:11 | 显示全部楼层
    支持楼主,用户楼主,楼主英明呀!!!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-8-29 11:51
  • 签到天数: 474 天

    连续签到: 1 天

    [LV.9]妙领天机

    10

    主题

    3106

    回帖

    3126

    积分

    声名显赫

    积分
    3126
    发表于 2018-7-23 17:07:22 | 显示全部楼层
    支持你哈...................................
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-29 13:38
  • 签到天数: 467 天

    连续签到: 1 天

    [LV.9]妙领天机

    0

    主题

    2990

    回帖

    2987

    积分

    声名显赫

    积分
    2987
    发表于 2018-7-23 19:33:57 | 显示全部楼层
    LZ是天才,坚定完毕
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-8-30 15:35
  • 签到天数: 461 天

    连续签到: 1 天

    [LV.9]妙领天机

    2

    主题

    3112

    回帖

    3115

    积分

    声名显赫

    积分
    3115
    发表于 2018-7-24 07:57:14 | 显示全部楼层
    支持你哈...................................
    回复

    使用道具 举报

  • TA的每日心情

    2023-10-27 00:45
  • 签到天数: 490 天

    连续签到: 1 天

    [LV.9]妙领天机

    402

    主题

    3130

    回帖

    4594

    积分

    如雷贯耳

    积分
    4594
     楼主| 发表于 2018-7-24 15:53:01 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-29 15:54
  • 签到天数: 474 天

    连续签到: 1 天

    [LV.9]妙领天机

    7

    主题

    3044

    回帖

    3055

    积分

    声名显赫

    积分
    3055
    发表于 2018-7-29 09:24:46 | 显示全部楼层
    我只是路过,不发表意见
    回复

    使用道具 举报

  • TA的每日心情

    2019-8-30 10:43
  • 签到天数: 473 天

    连续签到: 2 天

    [LV.9]妙领天机

    1

    主题

    3023

    回帖

    3022

    积分

    声名显赫

    积分
    3022
    发表于 2018-7-29 10:34:15 | 显示全部楼层
    确实不错,顶先
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2019-8-30 17:27
  • 签到天数: 473 天

    连续签到: 2 天

    [LV.9]妙领天机

    8

    主题

    3051

    回帖

    3067

    积分

    声名显赫

    积分
    3067
    发表于 2018-7-30 12:46:44 | 显示全部楼层
    报告!别开枪,我就是路过来看看的。。。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-8-30 06:43
  • 签到天数: 479 天

    连续签到: 1 天

    [LV.9]妙领天机

    14

    主题

    3048

    回帖

    3074

    积分

    声名显赫

    积分
    3074
    发表于 2018-7-31 11:31:03 | 显示全部楼层
    好,很好,非常好!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|任逍遥

    GMT+8, 2024-11-22 18:44 , Processed in 0.094344 second(s), 49 queries .

    Powered by 任逍遥 X3.5

    Copyright © 2001-2024, Rxiaoyao Cloud.

    快速回复 返回顶部 返回列表