通信加密原理

通信加密原理一、历史:消息通信时都需要加密,如果不加密,在请求和响应的过程中,如果消息中途被黑客劫持或篡改后果不堪设想。如图所示: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS 暂时性死区

    JS 暂时性死区JS暂时性死区ES6暂时性死区引用ES6暂时性死区只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。vartmp=123;if(true){tmp=’abc’;//ReferenceErrorlettmp;}上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后…

    2022年6月30日
    24
  • Kali Linux 系统安装详细教程(VMware14)「建议收藏」

    Kali Linux 系统安装详细教程(VMware14)「建议收藏」文章出自个人博客https://knightyun.github.io/2018/04/15/kali-linux-install,转载目录一、KaliLinux介绍 1、Linux2、Kali二、虚拟机安装与配置 1、下载2、安装配置三、Kali系统安装与配置一、KaliLinux介绍1、Linux引用一下百度百科: Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于PO…

    2022年6月5日
    31
  • ssm框架过时了吗_tomcat和maven的区别

    ssm框架过时了吗_tomcat和maven的区别日志如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的助手曾经:sout,debug现在:日志工厂掌握STDOUT_LOGGINGLOG4Jlog4j什么是Log4j?我们可以控制日志信息输送的目的地是控制台我们也可以控制每一条日志的输出格式通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。分页减少数据量selsect * from user limit startIndex,pageS

    2022年8月8日
    8
  • 目标跟踪之Lukas-Kanade光流法

    目标跟踪之Lukas-Kanade光流法光流是图像亮度的运动信息描述。光流法计算最初是由Horn和Schunck于1981年提出的,创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提出了2个假设:①运动物体的灰度在很短的间隔时间内保持不变;②给定邻域内的速度向量场变化是缓慢的。算法原理假设图像上一个像素点(x,y),在t时刻的亮度为E(x+Δx,y+Δy,t+

    2022年7月23日
    10
  • Springboot+netty实现Web聊天室

    Springboot+netty实现Web聊天室Web聊天室的实现一、项目的创建一、项目的创建新建Spring项目:选择JDK版本:选择SpringWeb:项目名称和位置的设置:

    2022年6月22日
    24

发表回复

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

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