通信加密原理

通信加密原理一、历史:消息通信时都需要加密,如果不加密,在请求和响应的过程中,如果消息中途被黑客劫持或篡改后果不堪设想。如图所示:1976年以前,所有的加密方法都是同一种模式:对称加密1、客户端C选择某一种加密规则K,对信息进行加密,然后将加密的信息传递给服务端S;2、服务端S接收到加密的信息后…

大家好,又见面了,我是你们的朋友全栈君。

一、历史:

        消息通信时都需要加密,如果不加密,在请求和响应的过程中,如果消息中途被黑客劫持或篡改后果不堪设想。如图所示:

通信加密原理

        1976年以前,所有的加密方法都是同一种模式:对称加密

                1、客户端C选择某一种加密规则K,对信息进行加密,然后将加密的信息传递给服务端S;

                2、服务端S接收到加密的信息后,使用同一种规则K,对加密的信息进行解密。

通信加密原理

        由于加密和解密使用同样规则(简称”密钥”),所以被称为”对称加密算法”(Symmetric-key algorithm)。这种加密模式有一个最大弱点:客户端必须把加密规则K告诉服务端,否则无法解密。传递和保存这个密钥K,就成了最头疼的问题,因为密钥K在传输过程中一旦被泄露,就可以被黑客解密所有的信息。

       现实情况更复杂,一般服务端会有多个客户端,如果服务端和这几个客户端都是用的同一个加密规则,也就是说虽然加密了,但所有人都知道是怎么加密的,那加密是没有意义的。所以一般不会只用同一个密钥,而是不同的客户端采用不同的密钥加解密。但这个密钥也只能使用非对称加密算法加密后传递,因为如果使用对称加密算法加密,永远都需要传递加密规则。

        1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为”Diffie-Hellman密钥交换算法”。

通信加密原理

        这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为”非对称加密算法”,有如下特点:

        1、密钥是两个,一个是公钥,一个是私钥;

        2、公钥是对任何人开放的,但私钥只有服务端才知道;

        3、公钥加密的信息,不能被公钥解密,只能被私钥解密;

通信加密原理

        1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的”非对称加密算法”。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

通信加密原理

        这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。如果想深入了解RSA算法细节请移步阮一峰大神的博客:http://www.ruanyifeng.com/blog/,本文参考目录有他具体对RSA算法的实现细节的文章地址。

        如果公钥加密的信息只有私钥解得开,公钥虽然谁都可以获取,但私钥不用传递也就不会泄漏,通信就是安全的。这样虽然只保证了单向的客户端传递给服务端的信息被安全加密,但已经足够了。唯一的问题是如何保证服务端传递给客户端的公钥就是服务端真正的公钥而不是被篡改的公钥呢?众所周知,在https中可以通过CA来进行公证,而ssh的公钥和私钥都是服务端自己生成的,没法公证,只能通过客户端自己对公钥进行确认。

二、对称加密算法

        也叫私钥加密算法,是最快速、最简单的一种加密方式。加密(encryption)与解密(decryption)用的是同样的密钥(secret key),对称加密通常使用相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。

        缺点是密钥的管理与分配,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

        常见的算法有:DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。

三、非对称加密算法

        也叫公钥加密算法,虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去,唯一要注意的是如何确保公钥没有被篡改。

        常见的算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

 

参考:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

           http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140777.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RT-Thread FinSH控制台添加自定义msh命令原理「建议收藏」

    RT-Thread FinSH控制台添加自定义msh命令原理「建议收藏」FinSH是RT-Thread的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口/以太网/USB等与PC机进行通信。FinSH提供了多个宏接口来导出自定义命令,导出的命令可以直接在FinSH中执行。自定义的msh命令,可以在msh模式下被运行,将一个命令导出到msh模式可以使用如下宏接口:MSH_CMD_EXPORT(name,desc);示例如下:voidhellort(void){rt_kpr

    2022年5月21日
    69
  • nginx静态资源服务器简单配置[通俗易懂]

    nginx静态资源服务器简单配置[通俗易懂]nginx静态资源服务器配置

    2022年7月14日
    47
  • gdfgd_gdaebfc

    gdfgd_gdaebfc@TOC欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全…

    2022年4月20日
    56
  • QStringList 使用

    QStringList 使用创建QStringList获取QStringList里面的元素QStringListstrList=item.split(‘#’);QStringstr1=strList.at(0);QStringstr2=strList.at(1);

    2022年4月27日
    65
  • 对贝叶斯理解以及解释贝叶斯函数「建议收藏」

    对贝叶斯理解以及解释贝叶斯函数「建议收藏」贝叶斯

    2022年5月7日
    66
  • anaconda和pycharm安装哪个版本好_pycharm专业版激活成功教程安装教程

    anaconda和pycharm安装哪个版本好_pycharm专业版激活成功教程安装教程文章目录Pycharm中嵌入AnacondaAnaconda下载Pycharm下载Anaconda安装Pycharm安装将Anaconda配置到Pycharm中添加一个python文件到工程Pycharm中嵌入AnacondaAnaconda下载关于这两个软件的介绍,相信不用我多说,大家都知道,Pycharm是一款很好用的Python的IDE支持很多牛逼的骚操作,而Anaconda则是一款集…

    2022年8月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号