【原创】SSL数字证书之一
2012-08-09 09:39 杨新华 阅读(742) 评论(2) 编辑 收藏 举报说到SSL安全通信,大家其实并不陌生,现在的网上银行以及电子商务网站等大都是采用SSL加密认证的方式,在服务器端采用支持SSL认证的服务器,而终端用户则采用支持SSL认证的浏览器来实现安全通信
如下图所示。
请注意上图的2个红色框框,左侧的HTTPS开头的地址表明此时网页传输协议用的就是HTTPS安全协议,右侧的是那把黄色的小锁表明已经启用了SSL链接。
其实SSL安全通信的内容还是比较多的,我大部分还是查询网络上写的比较好的文章,最后自己整理一下,我会用几节的内容说下SSL.
内容如下:
(1)https,SSL,数字证书,加密和认证的定义
(2)SSL如何加密以及它的加密过程
(3)必备技术点
(4)SSL的加解密算法
(5)如何保证公钥的真实性(在客户端和SSL服务器端进行第一次握手时的公钥)
(6)利用非对称密钥算法保证密钥本身的安全(双方用于加密传输数据用的密钥)
(7)消息完整性验证(客户端和SSL服务器端传输的数据是否完整)
开始。。。。
一:https,SSL,数字证书,加密和认证的定义
(1)https定义
HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密套件和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
- 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
- 用户相信证书颁发机构仅信任合法的网站;
- 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
- 该证书正确地验证了被访问的网站(如,访问
https://example
时收到了给“Example Inc.”而不是其它组织的证书); - 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
(2)安全套接层(Secure Sockets Layer,SSL)
是网景公司(Netscape)在推出Web浏览器首版的同时,提出的协议。SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。可在服务器和客户机两端同时实现支持,目前已成为因特网上保密通讯的工业标准,现行Web浏览器亦普遍将Http和SSL相结合,从而实现安全通信。此协议和其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
一个https协议栈大致是这样的:
(3)数字证书
数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构 -----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
(4)加密和认证(客户端与服务器端的认证握手)
加密是指通信双方为了防止铭感信息在信道上被第三方窃听而泄漏,将明文通过加密变成密文,如果第三方无法解密的话,就算他获得密文也无能为力;认证是指通信双方为了确认对方是值得信任的消息发送或接受方,而不是使用假身份的骗子,采取的确认身份的方式。只有同时进行了加密和认真才能保证通信的安全,因此在SSL通信协议中这两者都被应。
二:SSL如何加密以及它的加密过程
证书:用来给客户端验证服务器是否可以信任
简单原理(非对称加密):利用浏览器内置的根证书(这些根证书应该是浏览器开发商事先已经从某些公认合法的认证机构上获得)提供的公钥,对证书中的部分信息进行解密,看是否和提供的未经加密的信息一致,一致则证明该证书合法。
非对称加密的用途:
如果是公钥加密,私钥解密,可以有来保证传输信息不被窃取。
如果是私钥加密,公钥解释密,则发送过程加密前与加密后的信息一起发送,可以用来验证信息的可靠来源。
来源于:http://blog.csdn.net/jinjiang888666/article/details/6325191
可能大家看完这图后会有好多疑问。我就整理一下我的疑问和解决的办法
三:必备技术点
三一:协议安全机制
SSL协议实现的安全机制包括:
(1)数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
(2)身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
(3)消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
三二:SSL的加解密算法
加解密算法分为两类:
(1)对称密钥算法:数据加密和解密时使用相同的密钥。
(2)非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据只能用相应的私钥(或公钥)才能解密。
与非对称密钥算法相比,对称密钥算法具有计算速度快的优点,通常用于对大量信息进行加密(如对所有报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法,目前主要支持的算法有DES、3DES、AES等,这些算法都可以有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥完全一致。因此,利用对称密钥算法加密传输数据之前,需要在通信两端部署相同的密钥。
四:如何保证公钥的真实性(在客户端和SSL服务器端进行第一次握手时的公钥)
PKI通过数字证书来发布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包含用户的公钥及其身份信息的文件,证明了用户与公钥的关联。数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。
SSL客户端把密钥加密传递给SSL服务器之前,SSL服务器需要将从CA获取的证书发送给SSL客户端,SSL客户端通过PKI判断该证书的真实性。如果该证书确实属于SSL服务器,则利用该证书中的公钥加密密钥,发送给SSL服务器。
验证SSL服务器/SSL客户端的身份之前,SSL服务器/SSL客户端需要将从CA获取的证书发送给对端,对端通过PKI判断该证书的真实性。如果该证书确实属于SSL服务器/SSL客户端,则对端利用该证书中的公钥验证SSL服务器/SSL客户端的身份。
五:利用非对称密钥算法保证密钥本身的安全(双方用于加密传输数据用的密钥)
现在公钥已经保证了安全,那么现在需要保证协商出来的密钥的安全了,怎么保证呢。
对称密钥算法和MAC算法要求通信双方具有相同的密钥,否则解密或MAC值验证将失败。因此,要建立加密通道或验证消息完整性,必须先在通信双方部署一致的密钥。
SSL利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如图3所示,SSL客户端(如Web浏览器)利用SSL服务器(如Web服务器)的公钥加密密钥,将加密后的密钥发送给SSL服务器,只有拥有对应私钥的SSL服务器才能从密文中获取原始的密钥。SSL通常采用RSA算法加密传输密钥。
利用非对称密钥算法加密密钥之前,发送者需要获取接收者的公钥,并保证该公钥确实属于接收者,否则,密钥可能会被非法用户窃取。
六:消息完整性验证(客户端和SSL服务器端传输的数据是否完整)
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。
MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如图2所示。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。
图2 MAC算法示意图
MAC算法具有如下特征,使其能够用来验证消息的完整性:
(1)消息的任何改变,都会引起输出的固定长度数据产生变化。通过比较MAC值,可以保证接收者能够发现消息的改变。
(2)MAC算法需要密钥的参与,因此没有密钥的非法用户在改变消息的内容后,无法添加正确的MAC值,从而保证非法用户无法随意修改消息内容。
MAC算法要求通信双方具有相同的密钥,否则MAC值验证将会失败。因此,利用MAC算法验证消息完整性之前,需要在通信两端部署相同的密钥。MAC密钥的部署方法请参见“2.4 利用非对称密钥算法保证密钥本身的安全”。
讲的很好,可以去看一下。
欢迎转载,请标注原创地址http://www.cnblogs.com/yxhblog/archive/2012/08/07/2626996.html