分享

什么是SSL,实现机制(证书)

 碧海山城 2009-12-26

SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证(客户端证书)。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL安全性

SSL技术提供了身份认证服务,信息加密服务和数据的完整性服务等3项服务以达到高安全性。

1.用户和服务器的合法性认证

2.加密数据以隐藏被传送的数据

SSL协议所采用的加密技术既有对称密钥加密技术,也有非对称密钥加密技术。

3.保护数据的完整性

采用Hash函数和机密共享的方法来提供信息的完整新服务,建立客户机与服务器之间的安全通道,使所有经过SSL协议处理的业务在传输过程中能全部完整准确无误的到达目的地

通过以上叙述,SSL协议提供的安全信道有以下三个特性:

1.数据的保密性 信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙要用一个安全的方法传送。加密过的数据可以公开地传送。

 2.数据的一致性 加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。

3.安全验证 加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。

SSL使用HTTPS协议来对消息进行加密和签名,使用SSL证书来对服务进行身份验证。

实现机制

   SSL安全机制是依靠数字证书来实现的。:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。

  具体过程如下:

1.Client Hello:客户端将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息(如加密算法和能支持的密钥大小)发送到服务器。 

2.Server Hello:服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给客户端

3.Certificate(可选):服务器发一个证书或一个证书链到客户端,证书链开始于服务器公共钥匙并结束于证明权威的根证书该证书用于向客户端确认服务器的身份,该消息是可选的。如果配置服务器的SSL需要验证服务器的身份,会发送该消息。多数电子商务应用都需要服务器端身份验证

4.Certificate Request(可选):如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。 多数电子商务不需要客户端身份验证,不过,在支付过程中经常需要客户端身份验证。

5.Server Key Exchange(可选):如果服务器发送的公共密钥对加密密钥的交换不是很合适,则发送一个服务器密钥交换消息。

6.ServerHelloDone:通知客户端,服务器已经完成了交流过程的初始化。

7.Certificate(可选):客户端发送客户端证书给服务器。仅当服务器请求客户端身份验证的时候会发送客户端证书

8.Client Key Exchange:客户端产生一个会话密钥与服务器共享。在SSL握手协议完成后,客户端与服务器端通信信息的加密就会使用该会话密钥。如果使用RSA加密算法,客户端将使用服务器的公钥将会话密钥之后再发送给服务器。服务器使用自己的私钥对接收的消息进行解密得到共享的会话密钥

9.Certificate Verify:如果服务器请求验证客户端,则这消息允许服务器完成验证过程。

10.Change cipher spec:客户端要求服务器在后续的通信中使用加密模式

11.Finished:客户端告诉服务器已经准备好安全通信了。

12.Change cipher spec:服务器要求客户端在后续的通信中使用加密模式

13.Finished:服务器告诉客户端它已经准备好安全通信了。SSL握手完成的标志

14.Encrypted Data:客户端和服务端在安全信道上进行加密信息的交流

当上述动作完成之后,两者的资料传送就会加密。发送时信息用会话密钥加密形成一个数据包A,对称密钥用非对称算法加密形成另一个数据包B,再把两个包一起发送。接收的过程域发送正好相反,先用非对称算法打开对称密钥的加密包B,获得会话密钥,然后再用会话密钥解密数据包A,获取发送过来的信息原文。 会话密钥还被描述为对称密钥,或“共享秘密”。具有对称密钥很重要,因为它减少了事务双方所需执行的计算量。如果每个消息都要求对 Nonce 和哈希进行新的交换,那么性能将会下降。因此,SSL 的最终目标是使用允许消息在通信双方之间自由流动的对称密钥,同时具有更高程度的安全和效率。

HTTPS

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议

  它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。

  https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL。

  它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

限制

  它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.

  一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者尝试窃听数据于传输中。

  商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。

参考:

SSL

HTTP 传输安全

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多