通信加密原理

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • GCC编译选项_需要使用安全编译选项的语言

    GCC编译选项_需要使用安全编译选项的语言1、gcc包含的c/c++编译器gcc,cc,c++,g++gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译,c++程序就用g++编译  2、gcc的基本用法gcctest.c这样将编译出一个名为a.out的程序gcctest.c-otest这样将编译出一个名为test的程序,-o参数用来指…

    2022年10月31日
  • Springboot 项目JVM优化「建议收藏」

    Springboot 项目JVM优化「建议收藏」一,SpringBoot扫包优化@SpringBootApplication注解自动获取应用的配置信息,会给应用带来一些副作用。由自动配置(auto-configuration)和组件扫描(componentscanning)组成,这跟使用@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解的作用是一样的。…

  • 使用XSLT转换XML

    使用XSLT转换XMLSLT1.0是W3C标准,主要用于对XML文档的转换,包括将XML转换成HMTL,TEXT或者另外格式的XML文件.XSLT1.0可以与XPATH1.0标准一起使用,XPATH会告诉你要转换的节点而

  • 详解BP神经网络

    BackPropagationNeuronNetWok  BP神经网络学习算法可以说是目前最成功的神经网络学习算法。显示任务中使用神经网络时,大多数是使用BP算法进行训练.  在我看来BP神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。举一个例子:比如某厂商生产一种产品,投放到市场之…

  • idea正则替换小技巧「建议收藏」

    idea正则替换小技巧「建议收藏」相信很多idea开发的人都遇到过要替换某些拷贝的内容然后转换成自己的注释,但是一个一个替换又太麻烦,正则替换这时就是快速解决的办法。如下面图所示这个java类里面的属性就是mybatis的自动生成,带了很多注释,但如果想换成swagger来展示给前端看的时候就需要替换成下面的样子。想要做到这一步只需要执行下面的正则就行。首先点击打开替换窗口,idea原生快捷键按CTRL+R就行,全…

  • 迅雷磁力bt链接下载器_种子搜索

    迅雷磁力bt链接下载器_种子搜索种子文件目录:C:\Users\jifeng\AppData\Local\Temp\magnetex

发表回复

您的电子邮箱地址不会被公开。

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