SSL协议与数字证书原理

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为中国PE第一股,市值超1000亿元。 html

------------------------------------------------------------------------------------------------------------------------------------------------------------------linux

 

原文地址: http://lulu87.blog.51cto.com/1244696/379556git

SSL协议与数字证书原理算法

1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议。这种协议在WESERVER上得到了普遍的应用。数据库

SSL在TCP之上创建了一个加密通道,经过这一层的数据通过了加密,所以达到保密的效果。apache

SSL协议分为两部分:Hclientndshclientke Protocol和Record Protocol,。api

其中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 加密和认证

首先咱们须要区分加密和认证这两个基本概念。

加密是将数据资料加密,使得非法用户即便取得加密过的资料,也没法获取正确的资料内容,因此数据加密能够保护数据,防止监听攻击。其重点在于数据的安全性。

身份认证是用来判断某个身份的真实性,确认身份后,系统才能够依不一样的身份给予不一样的权限。其重点在于用户的真实性。二者的侧重点是不一样的

公钥和私钥

其次咱们还要了解公钥和私钥的概念和做用。

在现代密码体制中加密和解密是采用不一样的密钥(公开密钥),也就是非对称密钥密码系统,每一个通讯方均须要两个密钥,即公钥和私钥,这两把密钥能够互为加解密。公钥是公开的,不须要保密,而私钥是由我的本身持有,而且必须妥善保管和注意保密。

公钥私钥的原则:

  1. 一个公钥对应一个私钥。
  2. 密钥对中,让你们都知道的是公钥,不告诉你们,只有本身知道的,是私钥。
  3. 若是用其中一个密钥加密数据,则只有对应的那个密钥才能够解密。
  4. 若是用其中一个密钥能够进行解密数据,则该数据必然是对应的那个密钥进行的加密。

非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不同的,下面我就详细讲解一下二者的区别。

基于公开密钥的加密过程(加密)

好比有两个用户Alice和Bob,Alice想把一段明文经过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程以下:

  1. Bob将他的公开密钥传送给Alice。
  2. Alice用Bob的公开密钥加密她的消息,而后传送给Bob。
  3. Bob用他的私人密钥解密Alice的消息。

发送方使用接受方的公钥进行加密,接受方用本身的私钥进行解密――实现通讯的保密。

基于公开密钥的认证过程(身份鉴别)

身份认证和加密就不一样了,主要用户鉴别用户的真伪。这里咱们只要可以鉴别一个用户的私钥是正确的,就能够鉴别这个用户的真伪。

仍是Alice和Bob这两个用户,Alice想让Bob知道本身是真实的Alice,而不是假冒的,所以Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,若是能够解密成功,则证实Alice的私钥是正确的,于是就完成了对Alice的身份鉴别。整个身份认证的过程以下:

  1. Alice用她的私人密钥对文件加密,从而对文件签名。
  2. Alice将签名的文件传送给Bob。
  3. 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)中检查证书是否已经被撤销。 
数字证书由谁来颁发,如何颁发?

数字证书是由认证中心颁发的。

认证中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证实其公共密钥的有效性,后一种方法致使了多级别认证中心的出现。

数字证书颁发过程以下:用户首先产生本身的密钥对,并将公共密钥及部分我的身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,而后,认证中心将发给用户一个数字证书,该证书内包含用户的我的信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可使用本身的数字证书进行相关的各类活动。

消息摘要

某些人可能会篡改或替换其原始消息,一种保证消息完整性的方法是同时发一个其消息的简单摘要与消息自己比对,若是相符则消息正确。

数字签名

不可抵赖和身份确认clip_image001

证书

是由证书签证机关(CA)签发的对用户的公钥的认证。

证书的内容

证书机构

证书链

创建顶级CA

相关文章
相关标签/搜索