赞
踩
Https的出现:Httos:请求和响应的报文都是明文的,只要有点http基础都能看懂里面的内容。为了给http增加安全性,在后面加了个s,就是https。https不是单独的协议,是在http的基础上用TSL/SSL进行加密,通信不易受到拦截和攻击。
SSL(SSL(Secure Sockets Layer),中文名为“安全套接层协议层”)是TLS的前身,现在大多都用TLS,就证书来说SSL的名气比较大。
TLS是对称和非对称加密都有用到。
虽然我们现在可以对数据进行加密,但我想确定和我在沟通的是否是自己想要沟通的对象,这个时候就用到SSL证书,SSL证书其实就是保存在源服务器的数据文件。
比如B站的域名,很多人容易输入错误,
这个证书除了表明域名是属于谁的,日期等等信息以外。重要的是这个证书里还包括了特定的公钥和私钥。
简单来说,服务器安装了SSL证书以后,用户就可以通过HTTPS来访问服务器了。当然浏览器也会把HTTP的默认端口80改为HTTPS的默认端口443。这样可能就有不法分子伪装域名让你访问。
因此服务端要申请SSL证书,来证明这个域名是B站。
要让SSL证书生效,就要像CA申请,也就是Certificate Authority 证书授权中心。这是第三方机构,大家都能信任。
那现在浏览器通过HTTPS访问服务器具体会有哪些变化呢?
根据不同的TLS版本会有不同的变化
首先正常的TCP三次握手是不变的!
客户端和服务端打招呼,并把支持的TLS版本,加密套件发给服务端,同时还声称了一个随机数给服务端,这里就称为第一个随机数。
接着服务端打招呼,服务端确认支持的TLS版本以及选择的加密套件,并且服务器也随机生成一个随机数发送给客户端,这里就称为第二个随机数。
接着服务端还把证书和公钥发送给客户端,都发送完毕就告知客户端,现在客户端这边生成随机数。我们称为“第三个随机数”预主密钥。
这个预主密钥不会直接发送出去,而是用刚刚收到的公钥进行加密后再发送出去。然后客户端这边的TLS协商已经没问题了。
加密开始:服务端收到加密后的预主密钥以后,会用自己的私钥进行解密,这样服务器就知道预主密钥了,而且只有客户端和服务端知道这预主密钥,
因为没有进行直接传输,没有其他人知道这预主密钥是什么,除非私钥被泄漏了,最后客户端用预主密钥,第1随机数和第2随机数计算出会话密钥。
最后客户端用预主密钥,第1随机数和第2随机数计算出会话密钥。
服务端也用预主密钥,第1随机数和第2随机数计算出会话密钥。各自得到的会话密钥是相同的。
总结:也就是说前面的步骤都是非对称加密,为了得到这个会话密钥,后面的会话大家都只使用这个会话密钥对数据进行加密,也就是后面使用的是对称加密,大家都使用同一个私钥,会话后面不使用非对称加密是因为大家都能看到消耗资源特别大,而且得到会话密钥以后就没人知道密钥是什么了。因此后面使用对称加密,如果与其他服务器沟通就是建立新的会话,会话密钥也不相同。会话密钥只用在当前会话,更加提高了安全性。
理解一:发送方和接收方用同样的规则来为数据进行加密,也可以用同样的钥匙解开密文。这就是对称加密。
存在的问题:如果有第三方知道加密的规则以后,就很容易破解了。
理解二:Alice有一个想要与Bob分享的敏感文件,她使用了一个带有自建密码的加密程序来保护她的文件,然后她将加密后的文件发送给了Bob,然而,Bob由于不知道Alice用来加密的文件密码,而无法打开这个文件,换句话说,他因为没有钥匙而打不开锁。
那么问题来了,Alice如何才能安全的与Bob分享密钥?
存在的问题:通过邮件传送可能是个危险的行为,因为其他人可能会截获密钥。
加密密钥一般是公开的。真是由于加密密钥可以任意公开,因此该密钥被称为公钥(pulickey)。相对地解密密钥是绝对不能公开的,这个密钥只能由你自己来使用,因此称为私钥(privatekey)****。私钥不可以被别人知道,也不可以将它发送给别人。
公钥和私钥是"一一对应的",一对公钥和私钥统称为密钥对(keypair)。由公钥进行加密的密文,必须使用与该公钥配对的私钥才能解密。密钥对中的两个密钥之间具有非常密切的的关系(数学上的关系)。因此公钥和私钥不能分别单独生成。
非对称加密通讯流程
假设A要给B发一条信息,A是发送者,B是接收者,窃听者C可以窃听他们之间的通讯内容。
1.B生成一个包含公钥和私钥的密钥对
私钥由B自行妥善保管
2.B将自己的公钥发送给A
B的公钥被C截获也没关系。
将公钥发给A,表示B请A用这个公钥对消息进行加密并发送给他。
3.A用B的公钥对消息进行加密
加密后的消息只有B的西药才能够解密。
虽然A拥有B的公钥,但用B的公钥是无法对密文进行解密的。
4.A将密文发送给B
密文被C截获也没关系,C可能拥有B的公钥,但是B的公钥是无法进行解密的。
5、B用自己的私钥对密文进行解密。
A和B之间传输的信息有两个,一个是B的公钥,一个是B公钥加密的密文,由于B的私钥没有出现在通信内容中,因此C无法对密文进行解密。
Web技术总体上是去中心化的,但是为了使用域名,就需要依赖一个中心化的DNS机制,但Web上为了实现一个安全的加密通信。又引入了一个可信第三方,那就是:PKI
“ PKI英文全称:Public Key Infrastructure 中文名:公开密钥基础设施 ”
名字上可以看出是和公钥密码学配合完成互联网上的安全通信的基础设施
PKI最核心的功能,就是提供数字证书。
通过提供数字证书,PKI解决的加密问题就是在加密通信过程中,确认对方身份。数字证书中会把公钥和一个人的身份绑定起来。
例如,证书上会注明一个人叫Bob,公钥是某某某。只要通信双方信任PKI,并且看到这个证书,就可以知道这个公钥的确是这个人的。
PKI最常见一种形式CA,也就是Certificate Authority 证书授权中心(发证机构:职责就是发行证书)。
互联网实现安全信息传递,离不开PKI。没有PKIi,上电商网站的时候,我们都没有办法,安全的把信息传递到服务器。
PKI的具体形式有很多种,但目的只有一个:就是构建信任
信任就是通信一方相信对方是他声称的那个人。陌生人之间的信任都是通过可信第三方来达成的。互联网上两个人是很难见面的,很难判断对方是不是他所声称的那个人,解决方式就是找一个可信第三方
PKI就是加密过程中的可信第三方
例:Alice要和Bob通信,BOb把通信内容发过来的同时,也会给ALice发一个证书(这个证书是PKI发出的)过来,而ALice又信任PKI
CA是一个中心化组织(或者说是一个公司),最大的CA公司是Symantec。CA自己也是有一个技术手段去增加自己的一个可信度的,CA会采用一个层级结构。
Root CA会发布一个由自己签署的数字证书,
举个例子(一):我说我是XXX,你问有什么证据吗,我展示给你一个证书,但这个证书是我自己制作和签署的,所以对于root CA用户要有无条件的信任
root CA再去签署终级发展机构的证书,而由终极证书指明身份,绑定关系。
举个例子(二):如果去浏览器中查看j mail的证书,可以看到,点击发证机构可以看到GTS Root R1,终极发证机构呢是GTS CA 1C3。
Root CA有一个很大的特点,就是当代主流浏览器自带Root CA的公钥。所以收到可以去验证顶级证书的签名。而终极机构的证书是被顶级信用机构给保证的,所以就形成了一个信任链。总之,pki的信任来源还是对中心化组织的信任。
典型的PKI是通过CA来颁发证书了,当然除了CA,pki还是有一些其他的实现形式。
比较知名的就是Web Of Trust,是CA的一个替代,是一种去中心化的信任机制。用来进行邮件加密的PJP系统 会采用这套机制。
这个思路我们来用类比说明比较好理解
如果我和陌生人做生意,找一个中间人来引荐,这就是中心化的思路了。
另外一个思路是如果有很多人跟我们双方认识或者间接认识,这样就可以通过一个信任网络(多人签授立的方式构建的信任),**Web of Trust 是让很多人去签授证书,通过这样网络化的信任,就可以替代CA。**总之,pki也可以通过去中心化来完成。
去中心化的PKI还可以通过区块链来达成,区块链上的数据是公开而且不可篡改,非常适合存放公钥。
总结:
PKI是跟公钥密码学配合来完成互联网上的安全通信的相关基础设施。 PKI=CA+WebOfTrust.
PKI的主要目的是构建信任。具体做法,通过发行证书,引用pki,来签署证书。CA是pki最常见的形式。但目前人们也在努力构建去中心化的PKI。web of trust 和区块链的PKI。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。