TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。
解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,为此需要引入权威的第三方机构CA。CA 负责核实公钥的拥有者的信息,并颁发认证"证书",同时能够为使用者提供证书验证服务,即PKI体系。
基本的原理为,CA负责审核信息,然后对关键信息利用私钥进行"签名",公开对应的公钥,客户端可以利用公钥验证签名。CA也可以吊销已经签发的证书,基本的方式包括两类 CRL 文件和 OCSP。CA使用具体的流程如下:
SSL证书的工作原理:
客户端向服务器请求HTTPS连接
客户端向服务器传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
服务器确认并返回证书
服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
客户端验证服务器发来的证书
客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开如果验证通过,将继续进行。
信息验证通过,客户端生成随机密钥A,用公钥加密后发给服务器
从第③步验证过的证书里面可以拿到服务器的公钥,客户端生成的随机密钥就使用这个公钥来加密,加密之后,只有拥有该服务器(持有私钥)才能解密出来,保证安全。
服务器用私钥解密出随机密钥A,以后通信就用这个随机密钥A来对通信进行加密
这个握手过程并没有将验证客户端身份的逻辑加进去。因为在大多数的情况下,HTTPS只是验证服务器的身份而已。如果要验证客户端的身份,需要客户端拥有证书,在握手时发送证书,而这个证书是需要成本的。
HTTP(Hyper Text Transfer Protocol),超文本传输协议。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件、图片文件、查询结果等。
HTTP的安全缺陷:
非对称加密可以为网络数据传输安全性提供保障。
MAC(Message Authentication Code):消息验证码
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的摘要数据,这串摘要值与原数据存在对应关系,就是原数据会生成这个摘要,但是,这个摘要是不能还原成原数据的。也就是说,发送者使用共享密钥通过MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。
MAC消息验证码摘要算法为网络数据传输的完整性提供保障。
CA(Certificate Authority):证书授权认证中心
CA中心是被认可的权威、可信、公正的第三方机构,专门负责发放并管理所有参与网上业务的实体所需的数字证书。数字证书是网络世界中的身份证。因为数字证书是CA颁发的所以也叫CA证书。国内外有很多权威CA机构,如:DigiCert、GeoTrust等。
如上图所示,CA证书申请者向CA机构提交公钥、域名和申请者信息,CA机构经线上或线下审核后颁发CA证书。CA证书文件包含了公钥、公钥拥有者名称、CA的数字签名、有效期、授权中心名称、证书序列号等信息。下图是cn.bing.com的CA证书(浏览器查看):
X.509是一种 数字证书 的 格式标准 。SSL/TLS使用的证书就是x.509格式的。
CA证书为身份认证提供了保障。
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
SSL/TLS发展史:
SSL/TLS认证过程:
从上图可见SSL/TLS解决了HTTP的安全问题,握手建立SSL连接通过CA证书认证服务器身份,使用非对称公私钥加密保证共享密钥(对称加密密钥)协商的安全性,握手完成后双方使用共享了的会话密钥加解密传输数据保证数据不被窃取和篡改。
另外,如果服务器需认证客户端身份可使用SSL/TLS双向认证,客户端需将它的证书发送服务器以验证其身份。如银行网银账号登录使用的U盾。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)