上文介绍了数字签名,它能够(1)确认发送方身份(2)保证发送数据完整性
但是存在一定漏洞,这个漏洞不在数字签名技术本身,而在于它所以来的密钥,只有密钥真是可靠,使用数字签名才是安全有效的。
考虑这种可能的情况:在上述发送方向接收方传送报文的例子中,如果发送方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的冒充接受方就有可能接收到发送方发送的报文。这里的问题就是:对于请求方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?亦或者请求的目标主机本本身就从事窃取用户信息的不正当行为呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。
数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用,IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。 基本原理:先非对称加密传递对称加密所要用的钥匙,然后双方用该钥匙对称加密和解密往来的数据
工作过程:
浏览器向服务器发出请求,询问对方支持的对称加密算法和非对称加密算法;服务器回应自己支持的算法。 浏览器选择双方都支持的加密算法,并请求服务器出示自己的证书;服务器回应自己的证书。
浏览器随机产生一个用于本次会话的对称加密的钥匙,并使用服务器证书中附带的公钥对该钥匙进行加密后传递给服务器;
可以看到是 对 对称加密的钥匙进行 非对称加密,而这个对称加密的钥匙用于给报文加密,服务器用私钥解密对称加密的钥匙,这个速度很快,而用这个钥匙解密报文,因为是对称加密的,所以速度也会很快
服务器为本次会话保持该对称加密的钥匙。第三方不知道服务器的私钥,即使截获了数据也无法解密。非对称加密让任何浏览器都可以与服务器进行加密会话。 浏览器使用对称加密的钥匙对请求消息加密后传送给服务器,服务器使用该对称加密的钥匙进行解密;服务器使用对称加密的钥匙对响应消息加密后传送给浏览器,浏览器使用该对称加密的钥匙进行解密。第三方不知道对称加密的钥匙,即使截获了数据也无法解密。对称加密提高了加密速度。
上面讲了这么多,只是介绍了SSL的机制,但是这种机制似乎是出于内容加密考虑的,而不是出于数字签名考虑的。那么 https 提供了数字认证吗?
来源:https://www.cnblogs.com/43726581Gavin/p/9043968.html