计算机网络——PKI与Hashmap

PKI:公钥基础设施(Public Key Infrastructure),组成部分:公钥加密技术、数字证书、CA、RA

0x00 安全三要素

机密性 (防止破解)

我给你发一封信,别人拿到也好,拿不到也好,都看不懂这句话。破不开,防止被泄密。

完整性(防止拦截破坏)

如果我给你写一封信,旁边一个男孩看不懂没关系,他可以改啊,破坏数据,就不完整了。所以PKI要保证数据不能被破坏,其实保证不了,但是我们能够保证我通讯的对方那个人知道这个被篡改了,没办法总有人剪掉你的网线,所以我可以保证对方不收取这个信件。

身份验证性(防止伪造)

接下来的这两个都是次要的,一般是一起的。接着上面的案例:第三方发现无法破解也无法篡改,他就开始模仿我,伪造成我给对方发信息。第三方加了密,也保证了完整性,也是“我”发的,所以来源一个问题就是身份验证。身份验证也有另外一个意思,就是操作的不可否认性。无论是真是假,都是我或者“我”发的。

那么这三个要素,我们的PKI是可以做到的,通过加密技术和数字签名。

0x01 使用领域:

  • SSL/HTTPS(这个S的全程就是SSL),SSL的本身就是引用的PKI技术来完成的加密。

  • IPsecVPN,目前大部分公司都在用的技术,都跟加密有关系,加个隧道。FQ所用到的VPN其实只是众多VPN技术中的一种而已,也是最low的那种。其他种类不管哪种类型,都用到了PKI。所以PKI也可以说是个公共的基础设施。

  • 部分远程访问VPN

以上三个领域其实已经涵盖了绝大部分行业了

0x02 如何保证机密性?

对称加密算法

加解密的密钥一致!所以双方需要一个密钥就可以。

密钥:加密/解密时使用的钥匙。一般都是DES,3DES,AES (这三种第一种最low,第二种的破解难度比第一种高三倍,所以称为3DES;第三种最高级,A代表advanced;E代表encryption加密; S代表标准。高级加密标准。)

双方使用同一个算法进行数据加密,这样就导致不安全,很危险,因为第三方完全可以将数据和加密的方法监听到,从而破解。

非对称加密算法

加密或解密使用不同密钥。双方互换公钥,用对方的公钥加密,接收数据之后再用自己的私钥进行解密。如RSA、DSA、DH等等(HTTPS那个S就是用的RSA;Diffie-hellman一个数学家,为了纪念他。IPsecVPN经常用的就是这个算法。)

只有非对称算法才有公私钥这一说,所以PKI用的大多也是非对称加密算法。

但是PKI不能直接说成非对称加密算法,因为非对称算法就像数学一样,可以用到很多领域。

非对称加密算法也不是天衣无缝的:传输过程中可能数据丢失了。如果真的是转账等操作,总不能再转一遍吧。。这样一来,双方就产生了裂隙。所以我们需要一台机器来帮我们确认完整性。

数据经过机器时,校验完整性,不完整不收。

0x03 如何保证完整性?hash值算法,验证完整性

hash值算法常见的:MD5、SHA

image-20210914013942684

中间人使坏的方法有很多:监听、截获、篡改。

监听我们已经用加密算法解决了,但是截获和篡改,怎么防?

比方A和B在进行交流,中间有个C将B传给A的公钥截获,自己生成一对儿公私钥,将自己的公钥给了A,就出问题了。

所以要验证身份

举个例子来认识hashmap

假设你开了一家超市,超市里面有许多的商品,有人前来买瓜,你希望自己第一时间回答出来,还是希望自己在一张特别长的清单上找出来呢?

image-20220302150540304

在编程中,可以认为上述的所有商品名称与价格,都是一一对应的数组。每次需要调用这个数组去搜索查询,这样就十分地耗时耗力,效率十分低。

这时我们需要一个函数,这个函数能够帮助我们实现两个功能。

image-20220302150821239

当我们输入商品名称时,经过这个函数处理,返回的是一串字符串,这一串字符串与原先名称无任何关系,但是这串字符串也不是乱来的,而是当我们输入不同的商品参数,返回不同的字符串;我们输入相同的商品参数,返回的是相同的参数。

这个函数其实就是哈希函数(hash)

image-20220302151113696

哈希函数

功能:输入数据,生成整数

主要特点:

1、不同的参数——>不同的整数

2、同样的参数——>同样的整数

技术是为现实需要服务的,抛开需求谈技术方案都是耍流氓。

思考

哈希函数所输出的,就一定是独一无二的吗?不能保证。参数不同,结果却相同=冲突(collision)。所谓天塌下来,个子高的顶着。

用什么算法才能降低冲突的概率和频率,这是顶级科学家要做的。

Hashmap应用

我们经常可以看到下载一个文件,网页上写好了这个文件的MD5值,那么这个MD5值我们如何生成????

利用系统自带的命令即可!

certutil -hashfile C:\users\xxx\Desktop\1.jpg md5

image-20220302152230107

0x04 如何验证身份?

找一家权威机构,类似于银行。A和B都将钱存到银行。

找一个机构,叫做CA(公安局或者政府啥的),数字证书颁发机构。(RA是证书颁发机构的分支...一般用不到,就像公安局和派出所的关系,分局)

首先双方可以互不信任,但是都要信任CA,如果连CA都不信任,就别发信息了。

*再者,大飞到CA注册证书,填写个人信息(如IP地址,公钥),跟派出所似的。同时CA会生成自己的公钥和私钥。等大飞注册好了之后CA会发一个数字证书给大飞,并将自己的私钥将这个证书加密,也就是生成了数字签名signature,并且写一句话,颁发者:CA啥的。(但是不会显示着大飞的公钥)之后大飞会将这个数字签名和之前加密摘要的数字签名一起发给小飞:你不是不相信我吗,给,我是有证书的人!这时候小飞看了证书,上面都有大飞的各种信息,包括大飞的公钥,这时候小飞有两个选择:第一就是相信这个证书,也不管证书下面写的CA是不是真的了,直接就与“大飞”聊天,这时候就是小飞浏览器看到的:您访问的网站证书可能存在安全隐患,您要继续吗?继续的话也可以,但是不能保证是不是大飞。如果小飞不相信,去验证这个证书的真假,就会去这个签名,去对应的CA,选择相信CA了,会把证书下的CA地址添加到自己的电脑里面,说以后我谁都不信,我就信这个CA地址。这时候CA觉着小飞有诚意,就会将自己的公钥给小飞。小飞用这个打开了大飞给的这个数字签名,发现大飞的公钥是123,发现和之前交换的正确,那么就没问题了,并且验证了大飞的服务正确性。*

image-20210914014147179

银行的U盾,就有这个CA发的公钥。

image-20210914014129111

其实就是公式等。最简单的例子:X+5=y(算法)。x是原数据/原文,明文数据(就是我要传输的数据)。那么Y就是密文。所以网上传输的东西并不是X,而是Y,所以对方要进行解密。X用的算法不能变,否则Y就解密不了。所以X和Y所用的算法必须要提前商量好。那么这里的5就是key/密钥,相当于一把钥匙(真实的密钥可不是只有5,都是好几百个字节的)。算法是公用的,你知我知黑客知,世界上就这么几种算法,所以只有算法还是不行的,必须得有个钥匙。那么X+5=Y,这种加密算法叫做对称加密算法。

0x05 总结

1)证书用于保证公密的合法性

2)证书格式全球和所有系统都一致遵循X.509标准

3)数字证书包含的信息:使用者的公钥值;使用者标识信息(如名称和电子邮件地址);有效期(证书的有效时间);颁发者标识信息;颁发者的数字签名

4)数字证书由权威公正的第三方机构即CA或者大型公司还可能下分两个RA签发。

PKI是个庞大的加密技术架构,包含了公钥加密技术(已经可以保证信息安全的三要素了,机密性;完整性;身份验证),还有数字证书来保障护航,CA来弥补唯一漏洞:公钥交换。

posted @   谨言慎行啊  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示