目录
一、客户端与服务端的通信
二、SSL与TLS
1)SSL(安全套接层协议):
SSL协议提供的服务主要有:
SSL协议的工作流程:
2)TLS(Transport Layer Security Protocol):安全传输层协议
TLS 记录协议提供的连接安全性具有两个基本特性:
TLS 握手协议提供的连接安全具有三个基本属性:
3)协议结构
TLS记录协议
TLS 握手协议
1.TLS与SSL的差异
2.TLS的主要增强内容
3.TLS对于安全性的改进
三、对SSL/TLS的攻击
四、注意
如上图所示,我们在上网时,实际上是通过我们本地的浏览器与想要访问的网站的服务器进行通信。在这之间使用HTTP(超文本传输协议) 进行通信;其中我们使用的浏览器是客户端,网站的服务器为服务端
当我们在点击该网站后就向网站服务器发送了一条”我要浏览这个网页“的请求(request),服务器根据请求做出响应(rresponse)——将网页内容发送给浏览器
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息
为了解决HTTP协议的这一缺陷,需要使用另一种协议:HTTPS(安全套接字层超文本传输协议),为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL或TLS协议,就可对HTTP进行加密,从而防止窃听
之后的URL为“https://”开头而非“http://”
使用SSL/TSL不仅可以保护HTTP通信,也可以保护SMTP(简单邮件协议)和POP3(邮局协议)
为Netscape(网景)所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL(当前版本为3.0)它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL HandshakeProtocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
服务器认证阶段:
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
TLS记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。
TLS的最大优势就在于:TLS是独立于应用协议。高层协议可以透明地分布在TLS协议上面。然而, TLS 标准并没有规定应用程序如何在TLS上增加安全性;它把如何启动 TLS 握手协议以及如何解释交换的认证证书的决定权留给协议的设计者和实施者来判断。
TLS 协议包括两个协议组――TLS记录协议和TLS握手协议――每组具有很多不同格式的信息。
负责消息的压缩、加密和数据的认证
消息被分割成多个较短的片段,分别对每个片段进行压缩(压缩算法需要与通信对象进行协商)
被压缩的片段被加上消息认证码(确保数据完整性,并进行认证),通过附加消息认证码的MAC值,可识别篡改;同时为了防止重放攻击,在计算消息认证码时,加上了片段的编号
单向散列函数的算法,及消息认证码使用的共享密钥需要与通信对象协商决定
经过压缩的片段附加上消息认证码一同被对称密码加密(使用CBC模式),CBC模式的初始化向量(IV)通过主密码生成,对称密码的算法和共享密钥需要与通信对象进行协商
综上所述,经过加密的数据再加上由数据类型、版本号、压缩后的长度组成的报头就是最终的报文数据
由四个子协议组构成,允许对等双方在记录层的安全参数上达成一致、自我认证、例示协商安全参数、互相报告出错条件
1)握手协议
负责在客户端和服务器之间协商并决定密码算法和共享密钥,同时基于证书认证操作;在协商一致后,就会互相发出信号来切换密码;负责发出信号的就是下面的密码规格变更协议
2)密码规格变更协议
负责向通信对象传达变更密码方式的信号,用于密码切换同步;当协议中途发生错误时,会通过下面的告警协议变更规则
在通信开始后,服务端与客户端可以通过重新握手来再次改变密码,并且在最开始时,客户端和服务端并未使用加密进行通信(通信内容未加密)
3)警告协议
负责在发生错误时,将错误传达给对方,当握手协议产生异常,发生消息认证码错误、数据无法压缩时使用该协议;如果没有发生错误,就是用下面的应用数据协议来通信
4)应用数据协议
将TLS上承载的应用数据传达给通信对象
最新版本的TLS(Transport LayerSecurity,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。
主密码:TLS客户端与服务端之间协商出的一个秘密数值;通过预备主密码、客户端随机数、服务端随机数计算出
主密码用途:
1)对称密码的密钥(客户端到服务端)
2)对称密码的密钥(服务端到客户端)
3)消息认证码的密钥(客户端到服务端)
4)消息认证码的密钥(服务端到客户端)
5)对称密码使用CBC模式使用的初始化向量(客户端到服务端)
6)对称密码使用CBC模式使用的初始化向量(服务端到客户端)
1)版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1。
2)报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。
3)伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。
4)报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。
5)密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户证书。
6)certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当。
7)加密计算:TLS与SSLv3.0在计算主密值(master secret)时采用的方式不同。
8)填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS 在SSL v3.0 的基础上,提供了以下增强内容:
1)更安全的MAC算法
2)更严密的警报
3)“灰色区域”规范的更明确的定义
1)对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。
2)增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
3)改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。
4)一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。
5)特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。
1)对各个密码技术的攻击
针对SSL/TLS中使用的各个密码技术的弱点进行攻击
2)对伪随机数生成器的攻击
3)利用证书的时间差攻击
1)即使拥有合法的证书,也不代表可以放心使用
2)在SSL/TSL建立之前,通信链路是不受保护的
3)密码通信后,数据不受保护