怎样加密才能保证通信安全?

这篇具有很好参考价值的文章主要介绍了怎样加密才能保证通信安全?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

整理自通俗大白话,彻底弄懂 https 原理本质

场景

众所周知,咱们军工行业越来越牛,对应的各个研究所之间的通信保密程度越来越高对吧!!
现在有研究所A(以下简称A)和研究所B(以下简称B)之间进行通信交流,有如下几个问题:

问题一:怎么保证通信安全呢?

将通信的内容进行加密。

问题二:使用哪种加密方式呢?
  • 单向加密:不行,A将通信内容加密后,B收到的是密文,无法获取原本的内容
  • 对称加密:可以,A通过密钥s将通信内容加密后,只要B拥有密钥s,就可以解密获取原本的内容
  • 非对称加密:可以,A通过自己的私钥将通信内容加密后,B通过A的公钥进行解密,同样可以获取原本的内容
问题三:对称加密和非对称加密,如何选择呢?

由于通信往往会交流频繁,数据交互多,所以加密解密要看重速度。

  • 对称加密:速度快
  • 非对称加密:速度慢

所以,使用对称加密

问题四:如何保证密钥s不泄露呢?

大家也知道,随着咱们的技术越来越牛,国外的间谍对咱们的渗透也越来越强烈。如果,上诉对称加密的密钥s泄露并且被间谍f截取到,那么AB之间的通信内容是不是就被破解泄密了?
那么如何保证密钥s不泄露呢?难道对密钥s也通过密钥s1进行对称加密?那s1泄露了怎么办?再加密再泄露。。。这种方法当然不行!
所以要想保证密钥s不泄露,需要对密钥s进行非对称加密。由于密钥s文本短,所以可以忽略上述的非对称加密性能不好的缺点;并且只需要加密一次,保证安全的传输和获取密钥s后,后续的通信不需要再对密钥s加密解密了。

暂时总结一下(1)
  • 研究所 AB为了通信安全,决定采用加密的方式,对通信内容进行加密传输
  • 比对性能,选用对称加密的方式进行加密
  • 为了防止对称加密的密钥s泄露被间谍f截取,怎么办?
  • 研究所A使用非对称加密,生成一对公钥、私钥,并且把公钥给B
  • B用公钥密钥s加密,传给A,由于需要A的私钥才能正确解密,所以并不怕间谍窃取到
  • 因为用的是A的公钥加密的,所以A用自己配对的私钥对其密文进行解密,获取到了密钥s
  • 此时,A和B就能用经过安全传输的密钥s进行对称加密的通信了
问题五:遇到中间人攻击怎么办?

上述总结中的情况,看起来是一个 安全的通信模式,可是如果研究所B获取到的公钥不是A真正的公钥,而是间谍f公钥呢?B还以为此时的公钥是A传递给自己的公钥!
这是怎么回事呢?

  • B在获取A的公钥过程中,被间谍f掉包成自己的公钥后,发给了B
  • B还以为获取到的公钥是A的,其实此时已经被掉包成间谍f公钥了,就用间谍的公钥对密钥s进行加密,得到密文s0
  • 密文s0发给A的过程中,又被间谍拦截,间谍就用自己的私钥解密,得到了他们的密钥s
  • 间谍得到密钥s后,自己备份一份,再把此密钥s用A的公钥加密,得到密文s1,发给A
  • A得到密文s1后,用自己的私钥解密,得到密钥s
  • 此后,A和B就用对称加密密钥s进行通信了
  • 他们还以为是安全的,其实通信内容早就被间谍获取了。
  • 并不安全!
    这就是中间人攻击
    针对这种情况,为了安全通信,问题转变成了怎么安全的传输A的公钥呢?
问题六:A怎么安全的把自己的公钥传输给B呢?

到此,通过我们解决过的问题,已经知道了:

  • 如何安全的把通信内容传输给对方?
    解决方法:使用对称加密的方式进行通信
  • 如何安全的把密钥s传输给对方?
    解决方法:使用非对称加密方式,A把自己的公钥给B,B用A的公钥密钥s加密后传给A,A用自己的私钥解密,这个过程只有A能解密,所以是安全的

现在,新的问题是公钥如何安全的传输给对方呢?难道再用对称加密或非对称加密?都不行!
试想一下 ,生活中,我们最相信谁呢?谁最能提供最可信的消息或服务呢?当然是政府啊!
如今,我从A那里下载获取的公钥已经不靠谱、不安全 了,那我们应该相信谁呢?到底应该从谁那里获取的公钥才是真正的公钥呢?
所以,我们也搞一个机构,做一个大家都相信的机构,无条件百分百相信这个机构,这是规定。
好,我们把这个机构取名叫做CA机构
然后,我们把最后那个问题抛给这个CA机构,不管是研究所B也好,还是研究所C、研究所D等等,只要是想获取A的公钥,都从CA机构那里获取。
那么,CA机构哪里来的A的公钥呢?当然是A给的啊,对于A来说,反正我已经把我的公钥给你CA了,你CA机构就要保证安全将我的公钥传输给别人。
ok,那CA机构是怎么安全的传输公钥的呢?
答案是数字证书数字证书就是用来解决公钥传输问题的!


在解释数字证书的使用过程之前,我们先看看如下一个问题

问题七:信件内容的传输过程中,如何保证内容不被篡改呢?

结合前面说的加密知识,我们知道可以用单向加密算法,以md5加密算法举例

  • A给B写完信后,用md5算法对信件内容进行一次加密运算,得到一个唯一的字符串,我们把这个字符串起个名字,叫做摘要
  • A在信件的底部某块空处,写上自己用的单向加密算法md5,以及md5对信件内容运算出来的摘要,一块发给B
  • B收到信件后,看到信件底部是md5算法,于是就用md5对信件内容进行加密运算,得到B自己算出来的新的摘要
  • B将自己算出来的新的摘要和信件底部A写的摘要进行对比,如果相等,说明该信件的内容没有被人篡改过
  • 如果不相等,就说明该信件内容被别人篡改了

ok,如上这个过程也会出问题的,如果间谍又出现了呢?如下:

  • 首先间谍截取信件了,把信件改了
  • 间谍用md5算法,重新把内容加密运算一次,得到新的加密字符串
  • 间谍把新的加密串,放在信件底部 ,发给了B
  • 此时B收到信件后,是没有办法判断出来该信件是不是被篡改过的

所以,单纯的使用单向加密算法,生成摘要,是不能保证内容不被篡改的!

问题八:如何保证信件的内容不被篡改呢?

答案是签名!ok,我们用签名修改一下上面的例子,如下:

  • A用md5对信件内容进行运算,得到一个加密字符串 ,我们起名叫摘要
  • A用自己的私钥对摘要进行加密运算,得到另一个字符串,我们起名叫签名
  • A将加密算法md5摘要签名一块发给B
  • B用A的公钥签名进行解密,得到信件摘要1,假如为d1
  • B用md5对信件内容进行运算,得到信件摘要2,假如为d2
  • B对比d1和d2是否相等 ,相等说明信件内容没有被篡改过
  • 如果d1和d2不相等,说明信件内容已经被篡改过了

此时,这个信件传输过程就是安全的了!
ok,我们看看如果间谍截取到信件了呢?间谍可以修改信件内容,再次用md5算出一个新的摘要出来,但是信件上的签名,间谍是修改不了的!因为,签名是用A的私钥加密出来的,间谍是没有A的私钥的,所以即使间谍破解了签名,但是由于没有A的私钥,间谍无法生成新的A的签名
而且 ,B在收到信件后 ,是会用A的公钥进行对签名解密的,如果间谍用自己的私钥摘要进行加密生成新的签名,那B是用A的公钥解密不了的,这个时候B就知道信件内容被截获并且被篡改过了的!

暂时总结一下(2)
摘要

通过单向加密算法(如:md5),对内容进行加密出来的字符串,叫做摘要

签名

A用自己的私钥对摘要进行加密运算,得到的加密字符串,叫做签名

验签

B用A的公钥,对签名进行解密操作,解密出来的摘要和原来的摘要进行对比,这个过程叫做验签

问题九:数字证书是怎么生成的?

数字证书是有CA机构颁发的,首先如果研究所A想要有一个数字证书,就需要像CA机构申请。CA机构会给A颁发一张数字证书,里面包含了如下:

  • 公钥:A的公钥
  • 颁发者:CA(证书认证机构)
  • 有效期:证书的使用期限
  • 摘要算法:指定的摘要算法,用来计算证书的摘要
  • 指纹:也就是证书的摘要,保证证书的完整性
  • 签名算法:用于生成签名,确保证书是由CA签发
  • 序列号:证书的唯一标识

知道了证书里面包含的内容,我们了解一下证书是如何产生的?

  • 将A的公钥、颁发者、有效期、摘要算法、哈希算法写入证书
  • CA根据证书中的指定的哈希算法,计算出整个证书的摘要,即digest
  • CA根据签名算法以及上一步计算出来的摘要,CA用自己的私钥对摘要进行加密,生成CA的签名, 即signature
  • 最后把摘要,签名以及证书的基本信息,一起发布,就得到了A的证书
问题十:数字证书的作用

从上面我们知道,数字证书就是解决公钥传输问题的,同时我们也知道,数字证书就是一个文件。
那么,数字证书到底是怎么解决传输问题的呢?
现在,A有了自己的证书了,我们就不会公开传输公钥了,只需要传输证书就行了。
那么,A和B现在需要安全的通信,流程是怎么样的呢?如下:

  • A把自己的数字证书发送给B
  • 担心证书被间谍掉包,B需要对证书进行验证,验证什么呢?
  • 其实就是验证此数字证书到底是不是CA机构颁发的,不是CA机构颁发的证书,我们就认为传输是不安全 的
  • 验证数字证书是不是CA颁发的,需要有CA自己的数字证书(因为里面有CA自己的公钥)
  • 那我们去哪里找CA的数字证书呢?其实CA机构的数字证书存在于咱们电脑的操作系统里,不管是windows还是linux、mac,或者你刚买的电脑,里面都已经内置了非常多的CA机构的证书
  • 所以,电脑操作系统内的CA机构数字证书是可信的(除非安装的是盗版系统!!!)
  • 那么,我们就可以对数字证书进行辨别真伪了
问题十一:怎么对数字证书进行验证?

从上面可以知道:
B收到了A的数字证书,首先对数字证书进行验证,验证此数字证书是不是CA机构颁发的
因为我们的操作系统系统内置了所有CA机构的数字证书,所有我们可以对数字证书进行验证
先回顾一下摘要和签名:

摘要: 通过单向加密算法(如:md5),对内容进行加密出来的字符串,叫做摘要
签名:私钥对上一步摘要加密,产生签名

数字证书的验证流程如下:

  • B用内置的CA的数字证书,得到CA的公钥
  • A发过来的数字证书,我们假如叫做C, B用CA的公钥对C证书里的签名进行解密(查看问题九,C证书里的签名是用CA机构的私钥进行加密的,所以用CA的公钥进行解密),得到摘要D
  • B根据C证书里的摘要算法,假如写的是md5,则B用md5对证书证书整个内容进行计算,得到摘要D1
  • B对比摘要D和摘要D1是否相等
  • 如果D==D1,则说明此证书是CA机构颁发的,正版!
  • 如果D!=D1,则说明此证书不是CA机构颁发的,不安全,有风险!

好了,如果证书通过验证了,就说明此证书的确是CA颁发的,B就可以从数字证书中拿到A的公钥了。
至此,解决了问题六:A怎么安全的把自己的公钥传输给B呢?

问题十二:完整的安全通信过程

我们来看看A再次给B进行通信,就和前面不一样了,如下:

  • A把写完的信通过自己的私钥加密,并且在信的底部,附加上摘要算法,假如是md5,以及通过md5算出来的摘要
  • A用自己的私钥,对上一步的摘要进行加密,得到签名
  • A把摘要算法、摘要、签名都附加到信件底部后,再把自己的数字证书一起发给B
  • B收到信后,首先用自己的CA数字证书,拿到CA公钥,再用CA公钥对数字证书进行验证(也就是上面我们讲的流程)
  • 数字证书验证通过后,说明证书确实是CA颁发的,没有被篡改
  • B就从证书中拿到了A的公钥s
  • 有了A的公钥,接下来,就是对信件内容进行验证了

对信件内容的验证流程如下:

  • B用从A的数字证书中获取到的公钥s,对信件的签名进行解密 ,得到摘要D1
  • B用公钥s信件内容进行解密(因为B收到的信件内容是通过A的私钥进行加密过的,所以需要用A的公钥进行解密),得到原始的信件内容m
  • B用摘要算法,对信件的原始内容m进行运算,得到摘要D2
  • B对比摘要D1是否等于摘要D2
  • 如果不相等,说明信件内容被人篡改过,不安全!
  • 如果相等,说明信件内容没有被篡改过,安全!
  • 相等的情况中,B就拿到了经过安全传输的A的通信内容了!
总结

以上内容包括了:加密解密、数字证书、摘要、签名、验签的过程。文章来源地址https://www.toymoban.com/news/detail-408046.html

到了这里,关于怎样加密才能保证通信安全?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux【网络编程】之HTTPS协议,一文了解HTTPS是如何保证通信安全的

    在上篇文章中我们了解到什么事HTTP协议,HTTP协议内容都是按照⽂本的⽅式明⽂传输的.这就导致在传输过程中出现⼀些被篡改的情况,本期我们来探讨一下HTTPS协议。 HTTPS( 超文本传输安全协议 )也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层. HTTPS:默认端口与

    2024年02月08日
    浏览(61)
  • 加密与安全_PGP、OpenPGP和GPG加密通信协议

    PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字签名和压缩技术来确保数据的保密性、完整性和可验证性。 GP最初由麻省理工学院的Nick embrace和Eric Hughes开发,后来由Phil Zimmermann进一步发展。它使用公钥加密和私钥解

    2024年04月13日
    浏览(39)
  • 无线路由器放在什么位置才能保证无线信号全覆盖

    随着智能手机、平板等移动上网设备的普及,人们对于互联网的使用已经由电脑前转变为沙发、床头、卫生间……无线路由器已经成为现代家庭的必备之物。对于一位“小白”用户来说,买什么样的无线路由器,放在什么位置,怎样保证无线信号全覆盖,如何设置才能防止被

    2024年02月07日
    浏览(51)
  • 前后端通信安全RSA+AES混合加密

    前后端安全通信一直是头疼的问题,如何保证前后端安全通信? 读完这篇文章教你学会前后端安全通信。 客户端向服务端获取资源(如:html/css/js/jpg/json/api接口数据)的过程需要通信,常见的通信有TCP/UDP等。 通信安全是指用户在使用登录、注册、用户列表等功能时请求被拦

    2023年04月08日
    浏览(42)
  • 做电商需要注意什么?怎样才能做好云仓?

    物联网的透明度和质量保证 物联网和大数据技术正在推动有效电子商务物流的极限。 即使在客户下订单之前,您也应确保更好的物流质量保证,无论您是将货物从全球各地的制造商运送到您的仓库、第三方仓库或履行伙伴,还是从您的制造设施运送到第三方履行伙伴。 通过

    2024年02月11日
    浏览(53)
  • 搭建怎样的服务体系才能真正帮助到客户?

    市场竞争激烈,想要有长期稳定的发展,稳定的客户是关键,目前不少企业的宗旨都是以客户为中心,其成为大多企业的口号,也成为其奋斗目标。“以客户为中心”需要从多个方面考虑,不仅仅是做一款客户满意的产品,更要在服务上下功夫,建立良好的服务体系是关键,

    2023年04月14日
    浏览(45)
  • 怎样才能回答好面试官的“八股文”?

    前不久一位粉丝听完了我面试别人的模拟面试录音,问了一个问题:“很多‘八股文’,我们工作当中都用不到,还有必要去刷吗?”  我的回答是:“必须得刷,但是要科学的去刷”, 八股文,也称制义、制艺、时文、八比文,是明清科举考试的一种文体。八股文章就“四

    2024年02月03日
    浏览(35)
  • flink的TwoPhaseCommitSinkFunction怎么做才能提供精准一次保证

    TwoPhaseCommitSinkFunction是flink中基于二阶段事务提交和检查点机制配合使用实现的精准一次的输出数据汇,但是想要实现精准一次的输出,实际使用中需要注意几个方面,否则不仅仅达不到精准一次输出,反而可能导致数据丢失,连至少一次的语义都不能达到 TwoPhaseCommitSinkFunc

    2024年02月08日
    浏览(41)
  • 深入理解HTTPS原理:保障通信安全的加密卫士

    标题:深入理解HTTPS原理:保障通信安全的加密卫士 随着网络的不断发展,数据的安全性越来越受到重视。HTTPS(HyperText Transfer Protocol Secure)作为一种安全的HTTP协议,通过加密通信内容,确保数据在传输过程中不被窃取或篡改。本文将深入探讨HTTPS的原理,包括加密过程、证

    2024年01月24日
    浏览(45)
  • 【程序员怎样才能学好算法】《算法秘籍》给出答案

    【文末送书】今天推荐一本优质算法书籍《算法秘籍》,这是一本关于数据结构和算法的书,以Java为描述语言,介绍了计算机编程中常用的数据结构和算法。全书共13章,讲述了常见的数据结构、排序算法、位运算、树、递归、回溯算法、贪心算法、双指针和滑动窗口、BFS和

    2024年02月05日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包