概述HTTPS的全称是安全超文本传输??协议(SecureHypertextTransferProtocol),是客户端计算机和服务器之间交换信息的安全通信通道。它使用安全套接字层进行信息交换。简单的说,它是HTTP的安全版本,是一种使用TLS/SSL加密的HTTP协议。HTTPS=HTTP+TLS/SSLHTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而TLS/SSL协议具有认证、信息加密和完整性验证等功能,可以避免此类问题。.TLS的全称是TransportLayerSecurity(安全传输层协议),前身是SSL,所以现在统称为TLS/SSL。它是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本上不需要对HTTP页面做太多修改。TCP/IP四层模型中应用的结构如下:TLS/SSL原理TLS/SSL的功能实现主要依赖于三类基本算法:散列函数(Hash)、对称加密和非对称加密。它使用非对称加密实现身份认证和密钥协商,对称加密算法使用协商的密钥加密数据,并基于哈希函数验证信息的完整性。TLS/SSL=AsymmetricEncryption+SymmetricEncryption+HashAlgorithm非对称加密加密和解密使用不同的密钥加密算法,也称为公私钥加密。密钥成对出现,一般称为公钥(publickey)和私钥(privatekey)。用公钥加密的信息只能用私钥解密,用私钥加密的信息只能用公钥解密。即服务端持有私钥,客户端持有公钥。客户端要发送的信息经过公钥加密后传给服务器,服务器用私钥解密得到明文信息。特点:可实现一对多通信;保密性比较好,只需要传输公钥,私钥被劫持的概率很低;安全性高,保密性保证了私钥的安全,所以安全性只依赖于算法本身;计算复杂且加密速度慢。在TLS/SSL中,非对称加密只用于“身份认证”和“密钥协商”,不用于后续的文本数据传输,是安全和性能的折衷。对称加密加密和解密使用相同的密钥加密算法。即客户端和服务器持有的密钥相同,客户端要发送的信息经过密钥加密后再传给服务器,服务器用相同的密钥解密得到明文信息。特点:通讯方式为一对一。为了足够安全,服务端在与N个客户端通信时,需要维护N条密码记录;安全不仅取决于加密算法本身,密钥管理的安全性更为重要;计算量小,加密速度快,加密效率高;没有撤销和修改密钥的机制。在TLS/SSL中,对称加密的密钥是通过非对称加密的“密钥协商”生成的,最大程度保证了密钥的安全性。由于其效率高,这种加密方法被用于文本数据传输。哈希函数(Hash)是将任意长度的消息压缩成固定长度的消息摘要的函数,常用于防止信息篡改和验证数据完整性。特点:单向不可逆;对输入非常敏感,即一点点的输入变化都会导致不同的结果;输出长度是固定的。在信息传输过程中,仅靠哈希函数无法实现信息的防篡改,因为明文传输后中间人可以修改信息并重新计算信息摘要,所以需要对传输的信息和信息摘要进行加密.在TLS/SSL中,最后一步“密钥协商”和文本信息的传输,都会携带经过哈希函数计算出的信息摘要,经过对称加密后传输,以验证完整性。PKI体系中非对称加密的隐患如前所述,“认证”和“密钥协商”是TLS/SSL的基本功能,所需前提是合法的服务器持有相应的私钥。但是,非对称加密算法不能保证服务器身份的合法性,因为公钥不包含服务器的信息。假设出现以下情况:客户端C与服务器S通信,中间节点M拦截了它们之间的通信;节点M自己计算生成一对公钥pub_M和私钥pri_M;当C向S请求公钥时,M将自己的公钥pub_M发送给C;C使用公钥pub_M加密的数据可以被M解密,因为M有对应的私钥pri_M,C不能根据公钥信息判断服务器的身份,所以C和M之间的关系是“可信的”"已建立加密连接。如图所示,中间节点M与服务器S之间建立了合法的连接,因此C与S之间的通信完全受控于M,M可以对信息进行窃听、篡改等操作。这种类型的攻击称为“中间人攻击”。.身份验证CA和证书要解决上述隐患,关键是要保证获取公钥的方式是合法的,并且能够验证服务器的身份信息。为此,有必要引入权威的第三方机构CA。CA的全称是CertificateAuthority(证书颁发机构),负责验证公钥所有者的信息,颁发认证“证书”,为用户提供证书验证服务,即PKI系统。证书=公钥+申请者和颁发者信息+有效时间+域名信息+签名CA认证过程如下:客户端会内置可信CA证书信息(包括公钥),如果CA不可信,则不相应CA的证书,该证书也将被判定为非法。也可以这么理解,网站有几万个,浏览器厂商没有办法一一认证,所以就和CA合作,维护一个CA列表。只要该网站经过该列表中CA的认证,该网站的证书就可以信任。TLS/SSL握手过程TLS/SSL握手过程就是所谓的HTTPS四次握手(没有证书验证步骤)。1、客户端发起请求,以明文形式传输请求信息,包括版本信息、密码套件候选列表、压缩算法候选列表、随机数random_C(明文)、扩展字段等信息。2、服务器返回协商信息结果、随机数random_S(明文)、证书链等。3、验证证书,包括证书的可信度和有效性,可能需要联系CA。4.分为四步:client_key_exchange:客户端计算生成一个随机数Pre-master,用证书公钥加密,发送给服务器;客户端计算协商密钥enc_key(即对称加密密钥);change_cipher_spec:客户端通知服务器,后续通信将使用协商好的通信密钥和加密算法进行加密通信;encrypted_handshake_message:结合之前所有通信参数的hash值和其他相关信息生成一条数据,使用协商密钥enc_key加密,然后发送给服务器进行数据和握手验证;5、细分为四步:服务端使用私钥解密Pre-master,根据random_C、random_S和Pre-master计算出协商密钥enc_key;计算之前收到的所有信息的哈希值,然后对客户端发送的encrypted_handshake_message进行解密,验证数据和密钥的正确性;change_cipher_spec:验证通过后,服务端也发送change_cipher_spec通知客户端,后续通信将使用协商好的密钥和算法加密通信;encrypted_handshake_message:服务端也结合当前所有的通信参数信息,生成一条数据,用协商密钥enc_key加密后发送给客户端;6、握手结束后,开始使用协商密钥enc_key进行对称加密通信(包括完成哈希性别验证)。示意图如下:HTTPS使用成本、证书费用、维护更新。正规CA颁发的证书一般需要付费购买,到期后需要续费。在之前的握手过程中增加了访问延迟分析。一次完整的握手需要两端之间至少来回两次通信,这会增加至少2RTT的延迟。会话缓存用于多路复用连接,延迟至少1RTT。大量消耗CPU资源的加密和解密消耗性能。前面也提到了非对称加密的特点,所以会成为性能瓶颈。HTTPS优化TLSFalseStart在TLS/SSL协商的第二阶段,即浏览器生成最后一个随机数并用公钥加密发送给服务器后,立即发送加密后的应用层数据,无需等待服务器的确认。SessionIdentifier(会话标识符)如果一个用户的业务请求中包含多个加密流,客户端和服务器要反复握手,这肯定会导致更多的时间损失。或者一些特殊情况导致会话中断,需要重新握手。服务器为每个会话生成并记录一个sessionId,并将其发送给客户端。客户端重连时只需要提供这个id,不需要重摇。OCSPStaplingOCSP代表在线证书状态协议。Web服务器定期向OCSP服务器查询证书状态,获取带有时间戳和签名的OCSP响应并将其缓存。当客户端发起请求时,Web服务器将在TLS握手期间将响应发送给客户端。(谷歌浏览器默认只使用内置列表检查,所以这个优化对谷歌无效)HSTS(HTTPStrict-Transport-Security)是一个消息头字段,告诉浏览器当前域名(及其子域名))应该强制使用HTTPS直到到期日。如:Strict-Transport-Security:max-age=31536000;includeSubDomains【责任编辑:庞桂玉电话:(010)68476606】
