pki建议忍一忍看完深度解读便于透彻理解一、 PKI概述二、信息安全三要素三、哪些IT领域用到PKI四、公钥加密技术深度解读五、实验相关有趣的东东一、 PKI概述1、名称Public Key Infrastructure公钥基础设施2、作用通过加密技术和数字签名保证信息的安全3、组成不懂没关系往后看公钥加密技术、数字证书、CA、RA二、信息安全三要素机密性完整性身份验证/操作的不可否认性三、哪些IT领域用到PKI1、SSL/HTTPS ssl 、https2、IPsecVPN IPsecVPN3、部分远程访问VPN VPN四、公钥加密技术想要深入了解建议自行学习博主能力有限无法全部讲解1、作用实现对信息加密、数字签名等安全保障2、加密算法1对称加密算法 ​ 加解密的密钥一致2非对称加密算法 通信双方各自产生一对公私钥。 双方各自交换公钥 公钥和私钥为互相加解密关系 公私钥不可互相逆推 RSA DH3例如 x5y(对称加密算法 x是原数据/原文 y是密文 5是key/密钥4HASH算法MD5 SHA 验证完整性 HASH值不可逆 HASH值摘要5数字签名 用自己的私钥对摘要加密得出的密文就是数字签名6证书 ①证书用于保证公密的合法性 ②证书格式遵循X.509标准 ③数字证书包含信息 使用者的公钥值 使用者标识信息如名称和电子邮件地址 有效期证书的有效时间 颁发者标识信息 颁发者的数字签名 ④数字证书由权威公正的第三方机构即CA签发 ⑤CA是权威证书颁发机构为了公正“公钥”的合法性 ⑥机密性使用对方的公钥加密 ⑦身份验证/数字签名使用自己的私钥深度解读没有HTTPS的第一个缺点保证不了数据的机密性容易泄密。你们之间的网络通信相当于是高清无码的内容因此我们必须给内容打码打码以后中间人并不是就没有办法知道内容了而是极大的增加了中间人辨认内容的难度稍微具体一些就是你和门户网站之间需要有两把一模一样的私钥你和网站两边各执一把。既然是叫私钥当然不能给任何人这把私钥可以简单理解为某种数学运算比如你要发送一串字符用这把私钥加密就会把字符打出来铭文就变成了密文我们假设中间人很笨看不懂网站收到密文后用同一把私钥解密后就把密文打过来这样就得到铭文了网站发给你也是一样的方法使用道具来加密和解密就是这里的私钥。这种只用同一把私钥的加密叫做对称加密中间人不知道私钥的具体内容就很难进行破解而且这把私钥是有期限的。你和网站之间的每一次会话都需要一把新的私钥这样有期限的私钥统称为会话密钥现在中间人要破解所有绘画就更困难了。听起来很合理是不好像是又好像不是。既然你和网站之间需要不能公开的绘画密钥那你们就需要实打实的见上一面把会话密钥沟通好。再进行网络通信如果真要这样你们还愿意上网吗为了不见面就可以进行远距离网络通信我们需要巧妙的协商或者发送这把会话密钥给对方。现在网上有一把公钥和一把私钥用公钥加密的内容只能用私钥进行解密记住它们是成对的密钥就跟公鸡和母鸡一起才能下蛋的道理。因此在网站把公钥发给你以后你需要生成一串只有你自己知道的神秘字符并且用收到的公钥进行加密得到了加密后的神秘字符接着你需要把加密后的神秘字符发送给网站网站用谁都不晓得的私钥解密得到那串神秘字符于是你们两边都可以用这串神秘字符生成只有你们知道的会话密钥。在通信过程中中间人可以得到公钥以及加密后的神秘字符但是用公钥进行解密是得不到神秘字符的只能用私钥解密。因为用到公钥和私钥。这样的加密叫做非对称加密。这就解决了如何发送和协商汇报密钥的问题了。听起来很合理是否好像是也好像不是我们不妨让时光倒流。当网站要把公钥发送给你的时候中间人拿到了网上的公钥以后不直接发给你因为中间人要加戏中间人此时要生成自己的一对公钥和私钥并且把他自己的公钥发给你于是你就傻乎乎的用中间人的功要加密自己生成的神秘字符中间人再次进行截获并且用自己的私钥破解了你的神秘字符破解以后不直接发送给网站而是修改里面的内容并且用网站给的公钥加密修改后的内容再发送给网站网站收到后用自己的私钥解密收到的信息会发现能够成功解密通信在神不知鬼不觉的情况下被篡改了。如果在这种情况下还要继续生成会话密钥其实会生成不同的会话密钥一边是你和中间人的另一边是中间人和网站的你和网站之间并没有直接生成任何会话密钥中间人可以把通信内容说改就改因此前面非对称和对称加密了个寂寞这就是没有https的第二个缺点保证不了数据的完整有可能被更改。问题就在于这里的公钥我们不能确定收到的这把公钥是网站的还是中间人的这个时候就像西游记里孙悟空与六耳猕猴的争执是两只猴子都说自己才是真正的美丽猴子王直到第三方如来佛祖的出现才有结果我们的网络通信也需要第三方来解决公家的信任问题这个第三方简称CACertificate Authority权威认证机构于是刚才的流程就发生了变化你在发送神秘字符之前网站需要先把用来给你加密的公钥放到大家信任的第三方CA那里CA根据这个公钥以及其他信息生成了数字证书数字证书相当于让这把公钥和该网站绑定起来了如果回到刚才的流程网站再与你进行加密协商之前就可以先把数字证书发给你了你看到数字证书是属于信任的CA于是从数字证书里面取出公钥这样就可以愉快的生成最后的会话密钥了。听起来很合理似乎好像是也好像不是我们如何相信数字证书就是有信任的CA颁发的呢数字证书上有CA的签名就可以了。这和我们真实生活中的签名十分相似比如老师让家长给孩子检查作业为了确保孩子们的作业给家长检查了会要求在作业上签写家长的大名在网络通信中并不是用签字笔来签名而是用数字签名给数字证书签名。我们不妨再次进行时光倒流当CA在收到网站的信息以及公钥以后会对这些信息以及公钥进行哈希运算得到一串较短的哈希**hash≠加密**字符。听到这里你们可能会觉得奇怪为什么要进行哈希运算呢简单来说哈希运算就是把一段内容变成特定的很短的字符这样大大压缩掉需要传输的信息而且这串字符等会还要进行加密和解密如果要计算的字符很大会消耗掉非常多的时间。另外如果内容有哪怕一个字符的修改最终生成的字符都会不一样不一样的内容会生成不一样的哈希字符这串短字符相当于家长检查作业后给出的分数对全部内容进行一个总结回到刚才的步骤在哈希运算以后CA自己也生成一对专门用于数字证书的公钥和私钥然后要用这把私钥给哈希字符加密注意用的是私钥这样后面才可以用公钥解密这时候加密后字符就是数字签名了。注意进行哈希运算并非进行了加密运算因此这里要对哈希字符进行加密。现在CA就可以把含有CA数字签名的证书发给网站了虽然数字证书里的网站信息都是明文的但是核心就在于CA的数字签名了。如果证书里的内容被篡改了或者公钥被修改了生成的哈希值会不一样最终的数字签名就会变成另外的一串字符。当你访问网站的时候网站会把含有CA数字签名的数字证书发给你为了证明没有中间人更改过公钥你需要用到CA签名时候生成的公钥并且用这把CA公钥给数字证书里面的数字签名解密这样会得到一串哈希字符毕竟数字签名加密前就是一串哈希字符这串哈希字符先放着接着你对收到的数字证书内容进行同样的哈希运算也得到一串哈希字符如果前后两串哈希字符一致说明数字证书是靠谱的没有被篡改。我们现在假设中间人修改了数字证书的内容但是由于中间人没有原本生成数字证书的私钥因此你收到的数字签名会和数字证书不匹配除非中间人把数字证书和数字签名同时改的匹配才行这种情况也只能是拥有私钥才行没问题的话就可以继续生成会话密钥的步骤了。看到这里你们可能感到奇怪一下子私钥加密一下子公钥这就和可乐既可以用来喝还可以用来冲马桶是差不多的道理虽然听着反人类但事实就是如此千万不要被一些字面意思给束缚住不管是公钥加密还是私钥加密背后的数学原理就是你用了一把进行加密另一把就只能用来解密由于应用场景的不同导致了他们在用法上的不同前面说的公钥加密私钥解密虽然理论上谁都可以加密但是加密后只能是拥有私钥的人才能解密因此用来加密信息就很好。数字签名则是私钥先加密公钥再解密也就是常说的私钥签名公钥验签只能是拥有私钥的人才能加密但理论上谁都能解密用来验证身份就很好。但是刚才还遗漏了个问题的问题我们如何安全的拿到信任企业的公钥呢我们不妨再次让时光倒流的网站向第三方CA申请证书的时候CA会生成专门给这个网站颁发证书的一对公钥和私钥并且用自己的私钥给证书签名网站公钥和私钥用来生成最终的会话密钥。我们是知道了CA是要用来给证书签名我们也知道了就剩下CA的公钥像孤儿一样被丢在一边了。其实CA也需要数字证书。来证明自己的身份因此会把这把公钥放在自己的数字证书里面按照数字证书的生成原理这份数字证书同样也需要另外一把私钥来进行签名这就需要再加一层了也就是根CA网站申请证书的这个CA则是中间CA根CA同样需要生成一对专用的公钥和私钥并且用这把私钥为中间CA的证书签名根CA竟然有这把公钥也就是说根CA也有自己的证书但是跟CA的证书由谁来签名呢会不会是地球CA呢如果是就没完没了了根CA需要为自己的证书签名然后在用户操作系统和浏览器里面预先安装根CA的证书这样就可以闭合这一整条证书链的这里的核心就是用顶层的私钥给下层的证书签名验证的时候用顶层的公钥来检验下层的签名你们可能觉得奇怪网站可以直接和根CA申请证书的呀没有中间商赚差价多好呀。其实我们只需要把这里的结构想象为一棵树就好如果中间有一根树枝乱了也不至于连根拔起根CA可以避免与广大的网站服务器直接接触直接交给中间CA进行接触如果其中有一家中间CA的私钥被破解了也不至于影响到全局因此根CA私钥的管理十分重要。为了让大家理解这一过程我们来看一看使用了https的网站有什么不同。没错有的网站提供的http和https 2种方式访问网站浏览器在进行加密之前收到网站服务器发过来的证书证书上面有串重要的字段颁发者也就是谁颁发了这份数字证书。这里有个很重要的书写CN不是China的缩写意思是commonname公用名但是我的电脑里面并没有这家CA的证书其实网站是可以把整个证书链发给浏览器的也有可能网站服务器不发送中间证书导致有些浏览器可能需要从缓存中找这些证书或者自行下载中间证书。继续刚才的步骤浏览器查看这份中间证书的颁发者发现这里的公用名是user trust rsa certification authority华盛顿大学的网站此时需要找到一个电脑里面没有它的证书最后成功找到这份根证书并且提取里面的公钥来验证中间证书的签名没问题再用中间证书的那份公钥来验证网站证书的签名都没问题说明网站的证书没有被篡改但是没有被篡改也还是证明不了这份证书就是属于该网站的其实浏览器还会查看背景的公用名是否和域名一致很明显这里是一致的因此证明这份证书是和该域名绑定的这里也说明了没有用https的第三个缺点没有用https你很难确定访问的是不是官网毕竟第三方事业在颁发证书之前是会进行网站信息的检查。当然我们经常会看到网站域名和公用名cn不一致因此浏览器还会查看扩展程序里的证书主题背景的备用名称接着浏览器还需要检查证书的有效期用俗话说就是证书到期了记得续费现实就是这么残酷。这里还有个问题如果网站服务器的私钥泄露了并且已经向CA申请证书的吊销浏览器浏览器如何知道这种事呢其实就要靠CA的证书吊销列表了我们可以在扩展程序的。CRL分发点你查看访问这个网址可以下载这份文件当然我们用命令来查看这份文件内容的时候就可以看到被吊销证书对应的序列号当然有些浏览器不会去检查这个列表导致了安全隐患另外这个证书掉列表可能不是实时的因此就有。在线证书状态协议OCSP作为替补这样浏览器可以向专门的服务器查看某个证书是否被吊销来弥补前面那种方法时效性的问题。不过这个协议也出现了隐私泄露的问题虽然浏览器还会继续为证书进行身体检查但是核心的部分我们已经了解了。五、实验1、实验名称部署HTTPS服务器也叫SSL服务器2、实验环境1win2008作为https服务器10.1.1.2/242win7作为客户机10.1.1.1/243桥接到虚拟网络vmenet13、实验步骤1配置服务器IP地址10.1.1.2/24。2安装IIS服务 并建立一个站点。(必须使用域名)并配置DNS服务器并初步验证访问http://www.flower.com一下。3安装CA组件4打开IIS先生成证书申请文件5向CA申请证书打开网页http://10.1.1.2/certsrv并向CA发送web服务器申请文件6CA颁发证书7在web服务器上下载证书并完成安装8在web服务器上启用SSL4439要求用户必须使用443访问不能使用80访问10在客户端上修改hosts文件并验证相关有趣的东东【毕导】超实用技能教你怎么加密电脑里珍藏的视频