SSL协议

来源:互联网 发布:欧莱雅男士 知乎 编辑:程序博客网 时间:2024/04/30 12:03

一、SSL功能

       SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

      SSL提供的服务主要有:

      1)认证用户和服务器,确保数据发送到正确的客户机和服务器;

  2)加密数据以防止数据中途被窃取;

  3)维护数据的完整性,确保数据在传输过程中不被改变。

--------------------------------------------------------------------------------------------------

二、SSL相关加密知识

         要了解SSL协议,首先要了解:加密算法、消息摘要算法(又称为哈希算法Hash),数字签名等概念。这些技术每个都可以写出一整本的书,它们结合在一起,提供了保密性、完整性和身份验证的功能。

1、加密算法 

        设想:ALICE想发消息给她的银行要汇出一笔款。ALICE希望这些消息是保密的,因为这里面包括她的帐户资料和汇款金额。一种办法是使用加密算法,这种技术将她要传递的消息变成经过加密的密文,直接银行解密才可以被读取。 如果采用这种形式,消息只能被一个密钥所加密。没有这个密钥,消息就是无用的。一个良好的加密算法,可以使入侵者面临无法克服困难来解密原文。 

        有两种加密算法系列:传统加密算法(对称加密)和公钥加密算法(非对称加密) 

        传统加密算法---对称加密,需要发送者和接收者共享一个密钥:同时用于加密和解密的信息。 只要密钥是保密的,除了收件人和发件人外没有人可以阅读该消息。如果Alice和银行知道这个密钥,那么他们可以给对方发送的经过此密钥加密的消息。这种算法的主要任务在于发送者和接收者如何共享一个密钥,同时确保没有第三方知道这个密钥,如果多人之间传递消息,如何保证这么多密钥的安全,就是一个棘手的问题。 

        公钥加密算法---为非对称加密技术,通过使用2个密钥(其中一个可以解密另外一个加密的消息),解决了加密密钥交换的问题。 如果用其中的一个密钥用于加密信息,必须使用另外一个密钥来解密。这样就有可能获得简单地发布一个密钥(公钥),并使用未发布的密钥(私钥)来接受经过公钥加密的消息。 

        任何人都可以使用公共密钥加密消息,但只有私钥拥有者将能够读取它。这样,ALICE可以在发送需要保密的汇款消息给银行的时候,可以使用银行的密钥对中的公钥来对这个消息进行加密,而只有银行可以使用他们自己保管的私钥来进行解密。

2、消息摘要算法 

        虽然ALICE可以加密她的消息,但仍然有一个问题,就是有人可能会修改她发给银行的消息,并将ALICE的钱转移到自己的帐户上。为了保证ALICE消息在传递过程中没有被人篡改,可以让她创建一个消息的摘要和加密的消息一起寄到银行,银行收到消息后,将消息和消息的摘要做一个比较,如果消息内容和摘要匹配,则就可以证明消息传递过程中,没有别人篡改。 

        像这样的摘要被称为消息摘要, 单向函数或哈希函数 。消息摘要用于创建一个简短的固定长度,或可变长度的消息。消息摘要算法被设计成为每个消息产生一条独立的信息摘要。消息摘要算法的目的,就是让人无法为两条不同的消息找到相同的消息摘要,从而消除了使用一条摘要相同的消息替换另外一条消息的可能性。 

        另一个爱丽丝面临的挑战是找到一种方法,即使安全地将消息摘要发送到银行;如果消息摘要发送过程不安全,银行将无法判断消息是否就是来自ALICE。只有在消息摘要能安全地发送,才能够使消息的完整性被确定。 

        一个安全发送消息摘要的方式是使用数字签名。 

3、数字签名 

当Alice将消息发送给银行,银行需要确保消息真正地是从她这里发出的,以确保入侵者不能使用她的帐户进行交易。 签名就是由ALICE为实现这一目的而创建的一个专门消息。 

数字签名主要使用私钥来加密消息摘要和其他信息,譬如一个序列号,虽然任何人都可以使用公钥解密数字签名,只有发送方知道私钥。这意味着,只有发件人可以签署了该消息。包含了信息摘要的签名表示这个签名只对这个消息有效,而且它确保了消息的完整性,即这个消息的发送过程中没人可以改变摘要并另外对它做签名。 

为了防止入侵者拦截,并在以后再次使用这个签名,签名包含一个唯一的序列号。 这样可以保证ALICE无法否认她曾经发送过这条消息,因为只有她可以签名这条消息(不可抵赖性)。 

4、证书  

       虽然ALICE给银行发出一条经过她个人私钥签名的消息,并且可以确保她发送的消息是真实可靠的,但她依然要确保她的确是和银行在通信。这意味着她必须确保她使用的公钥是银行密钥对中的公钥,而不是入侵者的。同样道理,银行业也需要核实用于签名该消息的私钥是属于ALICE的。如何使银行和ALICE能否核实对方的身份呢? 

       如果每个人的证书都由一个大家都信任的机构签名,那么每个人都可以验证其他有该证书的人的身份。这种被大家都信任的机构,称为认证中心(CA),他们负责认证证书。 

证书的内容 

       证书内容包括:公钥和真实身份识别信息,包括个人,服务器或其他实体。如表1所示,主题信息包括身份识别信息(DN)和公钥。它还包括认证和签发的CA签发这个证书的有效期,还可能有一些其他的信息(或者成为扩展信息),一般由CA自行定义使用的管理信息,譬如序列号等。 

       证书具体介绍见尾部
----------------------------------------------------------------------

三、SSL协议

     SSL协议可分为两层:

     SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

     SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,包括握手协议、协商加密算法协议、报警协议。用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

 

 

四、SSL会话建立过程(基本过程)

     待补充....

 

五、HTTPS连接建立过程

     待补充....


 

原创粉丝点击