1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议。这种协议在WESERVER上获得了广泛的应用。
SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果。
SSL协议分为两部分:Hclientndshclientke Protocol和Record Protocol,。
其中Hclientndshclientke Protocol用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。
Record Protocol则定义了传输的格式。
SSL缺省只进行server端的认证,客户端的认证是可选的。
密钥协商过程
为什么要协商一份密约?
由于对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥算法协商出一份密钥(公钥,私钥),然后通过对称加密来通信,对称加密是在传输时用。
简单的说便是:
1.SSL客户端(也是TCP的客户端)在TCP链接建立之后,发出一个Clienth*llo来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息。
2.SSL的服务器端会回应一个Serverh*llo,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。
3.Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去。
4.SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
问题:如何知道证书的真实性?是由证书中心发的。
因为有CA的公钥,CA用自己的私钥加密证书,C用CA的公约解密,如果解密成功,既证明了证书的真实性。
形象化比喻
CLIENT与SERVER通信,CLIENT是SSL客户端,SERVER是SSL服务器端,加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括号()括起。
CLIENT:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSCLIENT和DH,摘要算法有MD5和SHCLIENT。
(注:这里有三种算法:
1 密约交换算法RSA非对称-----交换密文
2 摘要算法—保证消息的完整性
3 对称加密算法----数据加密)
SERVER:我们用DES-RSCLIENT-SHCLIENT这对组合好了。
这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给CLIENT)。
目前没有别的可说的了。
CLIENT:(查看证书上SERVER的名字是否无误,并通过手头早已有的CCLIENT的证书验证了SERVER的证书的真实性[如果是单向的,第一次客户端无证书,所以会提问你],如果其中一项有误,发出警告并断开连接,这一步保证了SERVER的公钥的真实性)
(产生一份秘密消息,这份秘密消息处理后将用作加密密钥,加密初始化向量和hmclientc的密钥。将这份秘密消息-协议中称为per_mclientster_secret-用SERVER的公钥加密,封装成称作ClientKeyExchclientnge的消息。由于用了SERVER的公钥,保证了第三方无法窃~听)
我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchclientnge发给SERVER)[此时他人获取秘密消息也无用,因为只有server才能解开]
注意,下面我就要用加密的办法给你发消息了!
(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmclientc的密钥)
[此时他人获取公钥也无用,因为她不知道秘密消息内容]
[我说完了]
SERVER:(用自己的私钥将ClientKeyExchclientnge中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmclientc的密钥,这时双方已经安全的协商出一套加密办法了)
注意,我也要开始用加密的办法给你发消息了!
[我说完了]
CLIENT: [我的秘密是...]
SERVER: [其它人不会听到的...]
双向认证 SSL 协议的具体过程
① 浏览器发送一个连接请求给安全服务器。
② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。
③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。
⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。
⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。
⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。
⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。
⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。
⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。
单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。 这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。
数字证书
什么是数字证书?
是由证书签证机关(CA)签发的对用户的公钥的认证。
证书的内容应包括CA的信息、用户信息、用户公钥及CA签发时间及有效期等内容。目前国际上对证书的格式及认证方法遵从X.509体系标准。
数字证书又称为数字标识(Digital Certificate,Digital ID)。它提供了一种在Internet上身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件,与司机驾照或日常生活中的身份证相似。在网上进行电子商务活动时,交易双方需要使用数字证书来表明自己的身份,并使用数字证书来进行有关的交易操作。通俗地讲,数字证书就是个人或单位在Internet的身份证。数字证书主要包括三方面的内容:证书所有者的信息、证书所有者的公开密钥和证书颁发机构的签名。
证书里包含了什么?
一个标准的X.509数字证书包含以下一些内容:
证书的版本信息;
证书的序列号,每个证书都有一个唯一的证书序列号;
证书所使用的签名算法;
证书的发行机构名称,命名规则一般采用X.500格式;
证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950-2049;
证书所有人的名称,命名规则一般采用X.500格式;
证书所有人的公开密钥;
证书发行者对证书的签名。
数字证书能解决什么问题?
在使用数字证书的过程中应用公开密钥加密技术,建立起一套严密的身份认证系统,它能够保证:
保密性:通过使用发件人的数字证书对电子邮件加密,只有收件人才能阅读加密的邮件,这样保证在Internet上传递的电子邮件信息不会被他人窃取,即使发错邮件,收件人由于无法解密而不能够看到邮件内容。
完整性:利用发件人数字证书在传送前对电子邮件进行数字签名不仅可确定发件人身份,而且可以判断发送的信息在传递的过程中是否被篡改过。
身份认证:在Internet上传递电子邮件的双方互相不能见面,所以必须有方法确定对方的身份。利用发件人数字证书在传送前对电子邮件进行数字签名即可确定发件人身份,而不是他人冒充的。
不可否认性:发件人的数字证书只有发件人唯一拥有,故发件人利用其数字证书在传送前对电子邮件进行数字签名后,发件人就无法否认发送过此电子邮件。
数字证书的原理是什么?
数字证书采用PKI(Public Key Infrastructure)公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密。
A 加密和认证
首先我们需要区分加密和认证这两个基本概念。
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。
身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的
B 公钥和私钥
其次我们还要了解公钥和私钥的概念和作用。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
C 基于公开密钥的加密过程(加密)
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
- Bob将他的公开密钥传送给Alice。
- Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
- Bob用他的私人密钥解密Alice的消息。
发送方使用接受方的公钥进行加密,接受方用自己的私钥进行解密――实现通信的保密。
D 基于公开密钥的认证过程(身份鉴别)
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
- Alice用她的私人密钥对文件加密,从而对文件签名。
- Alice将签名的文件传送给Bob。
- Bob用Alice的公钥解密文件,从而验证签名。
发送方使用自己的私钥加密,接受方用发送方的公钥进行解密。
E 身份鉴别与加密
发送方使用自己的私钥对明文加密,然后用接受方的公钥进行加密。
接受方使用自己的私钥解密,然后使用发送方的公钥解密。
两次加密,两次解密。
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用 自己的私钥解密,这样信息就可以安全无误地到达目的地了。
数字证书的应用
现有持证人甲向持证人乙传送数字信息,为了保证信息传送的真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名,其传送过程如下:
(1) 甲准备好要传送的数字信息(明文)。
(2) 甲对数字信息进行哈希(hash)运算,得到一个信息摘要。
(3) 甲用自己的私钥(SK)对信息摘要进行加密得到甲的数字签名,并将其附在数字信息上。
(4) 甲随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。
(5) 甲用乙的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。
(6) 乙收到甲传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。
(7) 乙然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。
(8) 乙用甲的公钥(PK)对甲的数字签名进行解密,得到信息摘要(附件)。
(9) 乙用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。
(10)乙将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
在(5)处用到的PK,是否来自乙所持有的的数字证书?若是,从何处得到该数字证书?关于此过程的加密解密,是怎样实现?
A 如何获得通讯对方的公钥并且相信此公钥是由某个身份确定的人拥有的,这就要用到电子证书。电子证书是由大家共同信任的第三方---认证中心(Certificate Authority,CA)来颁发的,有某人的身份信息、公钥和CA的数字签名。任何一个信任CA的通讯一方,都可以通过验证对方电子证书上的CA数字签名来建立起和对方的信任,并且获得对方的公钥以备使用。
数字证书的使用
每一个用户有一个各不相同的名字,一个可信的证书认证中心(CA)给每个用户分配一个唯一的名字并签发一个包含名字和用户公开密钥的证书。
如果甲想和乙通信,他首先必须从数据库中取得乙的证书,然后对它进行验证。如果他们使用相同的CA,事情就很简单。甲只需验证乙证书上CA的签名;如果他们使用不同的CA,问题就复杂了。甲必须从CA的树形结构底部开始,从底层CA往上层CA查询,一直追踪到同一个CA为止,找出共同的信任CA。
证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,它将从证书目录中删除,然而签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。
如果用户的密钥或CA的密钥被破坏,从而导致证书的撤销。每一个CA必须保留一个已经撤销但还没有过期的证书废止列表(CRL)。当甲收到一个新证书时,首先应该从证书废止列表(CRL)中检查证书是否已经被撤销。
数字证书由谁来颁发,如何颁发?
数字证书是由认证中心颁发的。
认证中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。
数字证书颁发过程如下:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。
消息摘要
某些人可能会篡改或替换其原始消息,一种保证消息完整性的方法是同时发一个其消息的简单摘要与消息本身比对,如果相符则消息正确。
数字签名
不可抵赖和身份确认
证书
是由证书签证机关(CA)签发的对用户的公钥的认证。
证书的内容
证书机构
证书链
建立顶级CA
转:http://lulu87.blog.51cto.com/1244696/379556
分享到:
相关推荐
不过,鉴于标题提到了“SSL协议与数字证书原理”,我可以从这两个方面展开详细的介绍,以满足您的要求。 SSL协议(安全套接层协议)是一种位于TCP/IP协议与各种应用层协议之间的安全协议,它最初是由网景(Netscape...
数字证书简介、SSL协议原理、数据安全传输是互联网安全领域的核心知识点。数字证书为互联网上的通信双方提供了身份验证机制,确保双方身份的真实性,防止数据在传输过程中被窃听、篡改和抵赖。SSL协议是当前广泛使用...
它通过加密技术确保通信内容不被窃听,同时通过数字证书验证通信双方的身份,防止伪装。SSL协议经历了三个版本,其中SSL 3.0是最广泛采用的版本。 在密码学基础方面,SSL协议依赖于加密算法,包括对称密钥加密和非...
以下是对数字证书原理和公钥私钥加密原理的详细解读。 数字证书是一种安全证书,用来证明某一实体(如个人、服务器或组织)的身份,它是由一个权威的认证机构(CA)签发的。数字证书包含的主要信息有证书拥有者的...
2. **服务器认证**:SSL协议利用数字证书验证服务器的身份,确保用户所访问的是真正的服务器而不是假冒服务器。 3. **消息完整性**:通过使用散列函数,SSL协议可以检查数据在传输过程中的完整性,确保数据未被篡改...
#### 三、SSL协议的工作原理 SSL协议分为两层:较低的SSL记录层和较高的SSL握手层。 1. **SSL记录层协议**:位于TCP/IP之上,主要负责将高层协议的数据封装、压缩、加密,并在接收端完成相反的过程。 2. **SSL...
### SSL协议与SET协议分析 #### 一、SSL协议详解 ##### 1.1 SSL协议概述 SSL(Secure Socket Layer)安全套接层协议是由Netscape公司在1994年设计并推出的加密协议,旨在为互联网上的数据传输提供安全保护。SSL...
8. **SSL/TLS协议**:PKI在Web安全中的应用,如HTTPS协议,通过数字证书实现服务器身份验证和数据传输加密。 9. **PKI应用案例**:例如电子邮件安全(S/MIME)、文件加密、代码签名、IPSec网络隧道等,展示PKI在...
### SSL中间人攻击原理与防范 #### 一、SSL协议分析 ##### 1.1 协议概述 ...综上所述,SSL中间人攻击是一种常见的网络安全威胁,通过对SSL协议和数字证书的理解,结合有效的防护措施,可以大大降低此类攻击的风险。
SSL(Secure Sockets Layer)和数字证书是网络安全领域的重要组成部分,它们主要用于确保...理解SSL的工作原理、如何生成和使用数字证书以及如何在Java中实现SSL连接,对于任何涉及网络安全的开发项目都是至关重要的。
本篇文章将深入探讨Android平台上的SSL证书验证原理,包括SSL证书交换流程、SSL握手与验证过程以及数字证书、公钥和密钥的管理。 #### 二、SSL证书交换流程 当Android应用尝试访问一个HTTPS站点时,会发起一个SSL...
三、SSL协议的简单原理 * 客户端发送支持的SSL/TLS协议版本和相关参数给服务端 * 服务端选择其中一个协议版本和相关参数,并发送给客户端 * 服务端发送自己的SSL证书给客户端 * 客户端使用可信CA的公钥解密SSL证书...
SSL(Secure Socket Layer)证书是一种数字证书,主要用于加密互联网通信,确保数据在传输过程中的完整性与机密性。它通过创建一个安全的加密连接,防止中间人攻击、数据篡改和身份伪造。当浏览器与服务器之间建立...
在本文中,我们将深入探讨SSL协议的核心概念、工作原理、主要组成部分以及其在现代网络安全中的作用。 一、SSL协议简介 SSL协议由Netscape Communications Corporation于1994年开发,旨在保护网络上用户的隐私和...
2. **确认性**:SSL协议强制服务器进行身份验证,通常通过数字证书来实现。这确保了用户与预期的服务器进行通信,防止中间人攻击。 3. **可靠性**:SSL协议提供消息完整性检查,通过MAC(消息验证码)机制确保数据...
通过证书机构颁发的数字证书,SSL可以验证服务器的身份,从而增强安全性。 #### 四、SSL的应用案例分析 以网上银行转账为例,用户登录银行网站进行交易时,需要经过多个安全步骤以确保数据安全。首先是账号密码的...
3. **认证性**:利用数字证书技术来验证客户端和服务器的身份,确保通信双方的真实性和合法性。 #### 三、SSL协议的体系结构 SSL协议位于TCP/IP协议模型的网络层和应用层之间,它使用TCP协议来提供可靠的安全服务...
Java SSL证书则是Java平台对SSL协议的支持,允许Java应用程序进行安全的网络通信。 在描述中提到的“简单的SSL实现”,可能是指在Java环境中建立SSL连接的一个简化流程,这通常包括创建SSLContext,初始化...
HTTPS不仅加密了通信内容,还通过数字证书确保了服务器的真实性,防止中间人攻击。 Java实现的HTTPS服务器和SSL服务器源码,可以帮助我们理解以下概念: 1. **Keytool**:Java提供的工具,用于生成和管理密钥对和...
### SSL协议详解 #### 密码学基础 **密码学**是信息安全领域的核心科学,它致力于研究如何将信息编码成看似无意义的形式,确保信息在传输过程中不被未授权者解读。这一领域主要包括以下几个概念: - **明文(plain...