频道栏目
首页 > 资讯 > 网络安全 > 正文

网络安全总结

13-02-02        来源:[db:作者]  
收藏   我要投稿

目录

  1. 1前言
  2. 2一些基础知识
    1. 21公钥密码体制public-key cryptography
    2. 22对称加密算法symmetric key algorithms
    3. 23非对称加密算法asymmetric key algorithms
    4. 24RSA简介
    5. 25MACMessage Authentication Code
    6. 26签名和加密
  3. 3http协议
  4. 4https
  5. 5SSLTSL
  6. 5数字证书
  7. 6PKI的内容
  8. 7USBkey
 
 
 

    1、前言

        当前,互联网以及移动互联网高速发展,人们需要在网络中传递的信息越来越多,进行的网络行为也越来越多。这里面就包括很多涉及私密信息的行为,比如用网上银行支付网购的物品等。这些信息相比普通的上网浏览网页等产生的信息来说需要提供安全可靠的传输方式。而且,安全、可靠和有效的传递这些信息无论是对于用户还是服务提供商来说都是非常重要的。

    2、一些基础知识

      这部分内容主要解释一些网络安全方面重要的概念和术语,最好是先理解这部分内容。

    2.1、公钥密码体制(public-key cryptography)

    公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

  • 加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
  • 解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。

        公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。

 

    2.2、对称加密算法(symmetric key algorithms)

    在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。

        注解:

        密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥。

     2.3、非对称加密算法(asymmetric key algorithms)

    在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。前面所说的公钥密码体制就是一种非对称加密算法,他的公钥和是私钥是不能相同的,也就是说加密使用的密钥和解密使用的密钥不同,因此它是一个非对称加密算法。

 

    2.4、RSA简介

    RSA是一种公钥密码体制,现在使用得很广泛。如果对RSA本身有兴趣的,后面看我有没有时间写个RSA的具体介绍。

    RSA密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。

    2.5、MAC(Message Authentication Code)

    消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。在发送数据之前,发送方首先使用通信双方协商好的散列函数计算其摘要值。在双方共享的会话密钥作用下,由摘要值获得消息验证码。之后,它和数据一起被发送。接收方收到报文后,首先利用会话密钥还原摘要值,同时利用散列函数在本地计算所收到数据的摘要值,并将这两个数据进行比对。若两者相等,则报文通过认证。消息验证码有两种计算方式,一种是利用已有的加密算法,如DES等直接对摘要值进行加密处理;另一种是使用专门的MAC算法。目前,信息安全领域普遍认同的算法是HMAC,它基于MD5或者SHA-1,在计算散列值时将密钥和数据同时作为输入,并采用了二次散列迭代的方式。

    2.6、签名和加密

    我们说加密,是指对某个内容加密,加密后的内容还可以通过解密进行还原。 比如我们把一封邮件进行加密,加密后的内容在网络上进行传输,接收者在收到后,通过解密可以还原邮件的真实内容。

    这里主要解释一下签名,签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。 接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。至于如何让别人可以解密这个签名,这个过程涉及到数字证书等概念,我们后面在说到数字证书时再详细说明,这里您先只需先理解签名的这个概念。

    3、http协议

    通常,人们上网获取信息交换信息是使用的是万维网。这里面涉及的应用的层的互联网协议大多是http协议。http协议当初设计的时候主要考虑的是如何让用户更有效的获得网络中的资源。它被设计为是RESTful( REpresentational State Transfer,表现层状态转化  )架构,这种架构方便开放人员开发和用户使用。但是,它没有把安全问题也考虑进去。
    
   注解:
     要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计。

    资源(Resources)

  REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。

    所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实体。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

 所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。

 表现层(Representation)

 "资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。

 比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

 URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

 状态转化(State Transfer)

 访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

    互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

    客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

    综述

    综合上面的解释,我们总结一下什么是RESTful架构:

    (1)每一个URI代表一种资源;

    (2)客户端和服务器之间,传递这种资源的某种表现层(Representation);

    (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

 

    4、https  

  https(Hypertext Transfer Protocol over Secure Socket Layer)就是http的安全版本,它在http所在的应用层与传输层之间加入了一层安全层SSL(Secure Sockets Layer)。它最初是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
    它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
    
    注解:
    https与http的区别
    一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
    二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
    三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
 
    https的一般流程如下图所示:
 
    
 

    5、SSL/TSL

    https的关键技术就是加入了SSL协议,现在详细介绍一下SSL协议。
    SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。由Netscape研发,用以保障在Internet上数据传输的安,提供两个基本的安全服务:鉴别与保密。当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。当前主要版本V3。在SSL标准化过程中又出现了对SSL增强的版本TSL,可以说是SSL的继任者。到SSL Version3,提交作为IFTF草案,已经广泛的应用Intetnet通信。之后IETF对SSLv3稍作改动并更名为TLS1.0,对应RFC2246,之后的TLS1.1、TLS1.2先后被接受为RFC4346,RFC5246,另外由于TLS是基于TCP协议设计,导致其不能处理独立纪录,不允许SSL时有数据丢失,在RFC4347中提出了一种“Datagram TLS”---DTLS,可以理解为TLS1.1的分支。
   
     注解:
 
    TLS与SSL的差异
1)版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1。
2)报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。
3)伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。
4)报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。
5)密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户证书。
6)certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当。
7)加密计算:TLS与SSLv3.0在计算主密值(master secret)时采用的方式不同。
8)填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。

    TLS的主要增强内容
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS 在SSL v3.0 的基础上,提供了以下增强内容:
1)更安全的MAC算法;
2)更严密的警报;
3)“灰色区域”规范的更明确的定义;


    TLS对于安全性的改进
1)对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。
2)增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
3)改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。
4)一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。
5)特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。

    SSL/TSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。 SSL/TSL 协议在应用层通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。在 SSL/TSL 中会使用密钥交换算法交换密钥;使用密钥对数据进行加密;使用散列算法对数据的完整性进行验证,使用数字证书证明自己的身份。

SSL/TSL协议体系结构如下图所示。

 

    SSL协议体系结构

    从图中可以看出,SSL协议可分为两层:

  • SSL/TSL 握手协议(SSL Handshake Protocol):建立在 SSL/TSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 SSL/TSL 协议实际上是 SSL/TSL 握手协议 SSL/TSL 修改密文协议 SSL/TSL 警告协议和SSL记录协议组成的一个协议族。    
  • SSL/TSL 记录协议(SSL Record Protocol):建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

    其中SSL握手协议最复杂,下面先从SSL握手协议开始讲解SSL。

    SSL/TSL握手协议

 

    SSL/TSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。在初次建立SSL连接时,服务器与客户机交换一系列消息。

    这些消息交换能够实现如下操作:

  •   客户机认证服务器
  •   允许客户机与服务器选择双方都支持的密码算法
  •   可选择的服务器认证客户
  •   使用公钥加密技术生成共享密钥
  •   建立加密SSL连接

    每个握手协议包含以下3个字段

 

  (1)Type:表示10种消息类型之一
  (2)Length:表示消息长度字节数
  (3)Content:与消息相关的参数

    SSL/TSL握手协议的报文类型如下表所示。

表 SSL握手协议报文类型

报文类型

参数

hello_request

client_hello

版本、随机数、会话ID、密文族、压缩方法

server_hello

版本、随机数、会话ID、密文族、压缩方法

certificate

x.509V3证书链

server_key_exchange

参数、签名

certificate_request

类型、授权

server_done

certificate_verify

签名

client_key_exchange

参数、签名

finished

Hash值

    SSL/TSL握手协议过程如下图所示。

 

            SSL握手协议的过程(带*的传输是可选的,或者与站点相关的,并不总是发送的报文)

现在看图,分步说明 SSL/TSL 握手协议的全过程:

 

    步骤1      建立安全能力。

     ClientHello 客户发送CilentHello信息,包含如下内容:

  (1)客户端可以支持的SSL最高版本号
  (2)一个用于生成主秘密的32字节的随机数。(用于计算产生主密钥,主密钥用于数据传输中加密数据)
  (3)一个确定会话的会话ID。
  (4)一个客户端可以支持的密码套件列表。
       (5)一个客户端可以支持的压缩算法列表。
        其中第(4)步中,在密文族(cipher suites)中指明自己支持的对称加密、非对称加密和数字签名算法。如下图所示,密文族格式:每个套件都以“TSL”开头,紧跟着的是密钥交换算法。用“With”这个词把密钥交换算法、加密算法、散列算法分开,例如:TSL_RSA_WITH_RC4_128_MD5, 表示把RSA定义为密钥交换算法;把 RC4_128定义为加密算法;把MD5定义为散列算法。密文族参数包括密钥交换方法(Deffie-Hellman密钥交换算法、基于RSA的密钥交换和另一种实现在Fortezza chip上的密钥交换)、加密算法(DES、RC4、RC2、3DES等)、MAC算法(MD5或SHA-1)、加密类型(流或分组)等内容。

     ServerHello服务器用ServerHello信息应答客户,包括下列内容

  (1)一个SSL版本号。取客户端支持的最高版本号和服务端支持的最高版本号中的较低者。
  (2)一个用于生成主秘密的32字节的随机数。(客户端一个、服务端一个)
  (3)会话ID
  (4)从客户端的密码套件列表中选择的一个密码套件
  (5)从客户端的压缩方法的列表中选择的压缩方法

 

     这个阶段之后,客户端服务端知道了下列内容:
  (1)SSL版本
  (2)密钥交换、信息验证和加密算法
  (3)压缩方法
  (4)有关密钥生成的两个随机数。
 

    步骤2      认证服务器和密钥交换

        在hello报文之后,如果服务器需要被认证,服务器将发送其证书。如果需要,服务器还要发送server_key_exchange;然后,服务器可以向客户发送certificate_request请求证书。服务器总是发送server_hello_done报文,指示服务器的hello阶段结束。

 

  服务器启动SSL握手第2阶段,是本阶段所有消息的唯一发送方,客户机是所有消息的唯一接收方。该阶段分为4步:
  (a)证书:服务器将数字证书和到根CA整个链发给客户端,使客户端能用服务器证书中的服务器公钥认证服务器。
  (b)服务器密钥交换(可选):这里视密钥交换算法而定
  (c)证书请求:服务端可能会要求客户自身进行验证。
  (d)服务器握手完成:第二阶段的结束,第三阶段开始的信号
 
  这里重点介绍一下服务端的验证和密钥交换。这个阶段的前面的(a)证书 和(b)服务器密钥交换是基于密钥交换方法的。而在SSL中密钥交换算法有6种:无效(没有密钥交换)、RSA、匿名Diffie-Hellman、暂时Diffie-Hellman、固定Diffie-Hellman、Fortezza。
  在阶段1过程客户端与服务端协商的过程中已经确定使哪种密钥交换算法。
  如果协商过程中确定使用RSA交换密钥,那么过程如下图:
  这个方法中,服务器在它的第一个信息中,发送了RSA加密/解密公钥证书。不过,因为预备主秘密是由客户端在下一个阶段生成并发送的,所以第二个信息是空的。注意,公钥证书会进行从服务器到客户端的验证。当服务器收到预备主秘密时,它使用私钥进行解密。服务端拥有私钥是一个证据,可以证明服务器是一个它在第一个信息发送的公钥证书中要求的实体。

    步骤3      认证客户和密钥交换。

        客户一旦收到服务器的server_hello_done报文,客户将检查服务器证书的合法性(如果服务器要求),如果服务器向客户请求了证书,客户必须发送客户证书,然后发送client_key_exchange报文,报文的内容依赖于client_hello与server_hello定义的密钥交换的类型。最后,客户可能发送client_verify 报文来校验客户发送的证书,这个报文只能在具有签名作用的客户证书之后发送。

 

  客户机启动SSL握手第3阶段,是本阶段所有消息的唯一发送方,服务器是所有消息的唯一接收方。该阶段分为3步:
  (a)证书(可选):为了对服务器证明自身,客户要发送一个证书信息,这是可选的,在IIS中可以配置强制客户端证书认证。
  (b)客户机密钥交换(Pre-master-secret):这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密。
  (c)证书验证(可选),对预备秘密和随机数进行签名,证明拥有(a)证书的公钥。
  下面也重点介绍一下RSA方式的客户端验证和密钥交换。
  这种情况,除非服务器在阶段II明确请求,否则没有证书信息。客户端密钥交换方法包括阶段II收到的由RSA公钥加密的预备主密钥。
  阶段III之后,客户要有服务器进行验证,客户和服务器都知道预备主密钥。

    步骤4      结束

    客户发送change_cipher_spec报文并将挂起的CipherSpec复制到当前的CipherSpec。这个报文使用的是修改密文协议。然后,客户在新的算法、对称密钥和MAC秘密之下立即发送finished报文。finished报文验证密钥交换和鉴别过程是成功的。服务器对这两个报文响应,发送自己的change_cipher_spec报文、finished报文。握手结束,客户与服务器可以发送应用层数据了。

 

  客户机启动SSL握手第4阶段,使服务器结束。该阶段分为4步,前2个消息来自客户机,后2个消息来自服务器。

 

    当客户从服务器端传送的证书中获得相关信息时,需要检查以下内容来完成对服务器的认证:

  •  时间是否在证书的合法期限内;
  •  签发证书的机关是否客户端信任的;
  •  签发证书的公钥是否符合签发者的数字签名;
  •  证书中的服务器域名是否符合服务器自己真正的域名。

    服务器被验证成功后,客户继续进行握手过程。

    同样地,服务器从客户传送的证书中获得相关信息认证客户的身份,需要检查:

  • 用户的公钥是否符合用户的数字签名;
  • 时间是否在证书的合法期限内;
  • 签发证书的机关是否服务器信任的;
  • 用户的证书是否被列在服务器的LDAP里用户的信息中;
  • 得到验证的用户是否仍然有权限访问请求的服务器资源。

 

    SSL记录协议

    SSL记录协议为SSL连接提供两种服务:机密性和报文完整性。

    在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据(长度不为0)组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、报警协议、修改密文协议。SSL记录协议包括记录头和记录数据格式的规定。

    SSL记录协议定义了要传输数据的格式,它位于一些可靠的传输协议之上(如TCP),用于各种更高层协议的封装。主要完成分组和组合、压缩和解压缩,以及消息认证和加密等。

    SSL记录协议主要操作流程如下图所示。

           SSL记录协议的操作流程

    图中的五个操作简单介绍如下:

    1)每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。

    2)压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。

    3)在压缩数据上计算消息认证MAC。

    4)对压缩数据及MAC进行加密。

    5)增加SSL记录。

    SSL记录协议字段的结构如下图所示。

   SSL记录协议字段的结构

    如图 SSL记录协议字段结构主要由内容类型、主要版本、次要版本、压缩长度组成,简介如下:

    1)        内容类型(8位):封装的高层协议。

    2)        主要版本(8位):使用的SSL主要版本。对于SSL v3已经定义的内容类型是握手协议、警告协议、改变密码格式协议和应用数据协议。

    3)        次要版本(8位):使用的SSL次要版本。对于SSL v3.0,值为0。

    4)        压缩长度(16位):明文数据(如果选用压缩则是压缩数据)以字节为单位的长度。

 

    SSL报警协议

    SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:

  •    Fatal错误,如传递数据过程中发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录。
  •   Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

    SSL修改密文协议

    为了保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。所以有了SSL修改密文协议。SSL修改密文协议是3个高层的特定协议之一,也是其中最简单的一个。在客服端和服务器完成握手协议之后,它需要向对方发送相关消息(该消息只包含一个值为1的单字节),通知对方随后的数据将用刚刚协商的密码规范算法和关联的密钥处理,并负责协调本方模块按照协商的算法和密钥工作。

 

    5、数字证书

    上面讲到了有关数字证书的东西,现在详细介绍一下数字证书。

    数字证书是数字凭据,它提供有关实体标识的信息以及其他支持信息。数字证书是由称为证书颁发机构 (CA) 的权威机构颁发的。由于数字证书由证书权威机构颁发,因此由该权威机构担保证书信息的有效性。此外,数字证书只在特定的时间段内有效。

    数字证书是用来证明网络实体身份以及传递其公钥的电子媒介。所以说数字证书主要有两个作用,第一个是证明其真实有效的身份,类似于电子的网络“身份证”,第二个是向对方发布其公钥,以便后续进行加密的通信。

    X.509 标准规定数字证书应包含标准化信息。具体地说,X.509 版本 3 证书包含下列字段:

  • 版本号 证书所遵循的 X.509 标准的版本。

  • 序列号 唯一标识证书且由证书颁发机构颁发的编号。

  • 证书算法标识 证书颁发机构用来对数字证书进行签名的特定公钥算法的名称。

  • 颁发者名称 实际颁发该证书的证书颁发机构的标识。

  • 有效期 数字证书保持有效的时间段,并包含起始日期和过期日期。

  • 使用者名称 数字证书所有者的姓名。

  • 使用者公钥信息 与数字证书所有者关联的公钥以及与该公钥关联的特定公钥算法。

  • 颁发者唯一标识符 可以用来唯一标识数字证书颁发者的信息。

  • 使用者唯一标识符 可以用来唯一标识数字证书所有者的信息。

  • 扩充信息 与证书的使用和处理有关的其他信息。

  • 证书颁发机构的数字签名 使用证书算法标识符字段中指定的算法以及证书颁发机构的私钥进行的实际数字签名。

    

    公钥加密的优势之一是,由于用一个密钥对取代了大量的对称密钥,因此减少了密钥管理的工作量。数字证书进一步增强了这一优势,它解决了公钥的分发和管理问题。但是,数字证书无法进行自我管理。由于数字证书固有的广为分发的特点,因此,设计这些证书的管理方案时,必须考虑到数字证书的分发性这一特点。数字证书需要一种有效的基础结构,以便在证书的使用环境中管理证书。公钥基础结构 (PKI) 与数字证书是不可分割的。PKI 负责颁发证书,它通过目录确保这些证书的分发,并验证证书。PKI 负责基础工作,其中包括支持数字证书,并使它们可以提供 S/MIME 等服务所依赖的功能。

    由于 PKI 的规模大,而且很复杂,这里所提供的信息着重讲述 PKI 和数字签名如何配合工作。有许多很优秀的资源讲述了 PKI。您可以从 PKI 供应商的文档以及其他专门涉及 PKI 的信息源中获取有关 PKI 的详细信息。

    6、PKI的内容 

    一个完整的PKI系统必须具备权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统和应用接口(API)等基本组成部分。 
    1、权威认证机构(Certificate Authority):权威认证机构简称CA,是PKI的核心组成部分,也称作认证中心。它是数字证书的签发机构。CAPKI的核心,是PKI应用中权威的、可信任的、公正的第三方机构。 
    2、数字证书库:在使用公钥体制的网络环境中,必须向公钥的使用者证明公钥的真实合法性。因此,在公钥体制环境中,必须有一个可信的机构来对任何一个主体的公钥进行公证,证明主体的身份以及它与公钥的匹配关系。目前较好的解决方案是引进证书(Certificate)机制。(1)证书。证书是公开密钥体制的一种密钥管理媒介。它是一种权威性的电子文档,形同网络环境中的一种身份证,用于证明某一主体的身份以及其公开密钥的合法性。(2)证书库。证书库是证书的集中存放地,是网上的一种公共信息库,供广大公众进行开放式查询。到证书库访问查询,可以得到想与之通信实体的公钥。证书库是扩展PKI系统的一个组成部分,CA的数字签名保证了证书的合法性和权威性。 
    3、密钥备份及恢复系统:如果用户丢失了密钥,会造成已经加密的文件无法解密,引起数据丢失,为了避免这种情况,PKI提供密钥备份及恢复机制。 
    4、证书作废系统:有时因为用户身份变更或者密钥遗失,需要将证书停止使用,所以提供证书作废机制。 
    5PKI应用接口系统: PKI应用接口系统是为各种各样的应用提供安全、一致、可信任的方式与PKI交互,确保所建立起来的网络环境安全可信,并降低管理成本。没有PKI应用接口系统,PKI就无法有效地提供服务。 
    
    总结来说,PKI就是管理发布证书以及密钥的一套系统。
    

    7、USBkey

    
    上面讲到的https/ssl协议,在SSL协议握手协议中,如果服务器要求认证客户端,需要客户端发送其数字证书。这里就有一个问题,客户端的证书该如何保存才能安全。USB可以就是解决这个问题的,它安全有效的保存了客户端的数字证书。
    USB Key是一种USB接口的硬件设备。它内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。
    USB Key产品最早是由加密锁厂商提出来的,原先的USB加密锁主要用于防止软件破解和复制,保护软件不被盗版,而USB Key的目的不同,USB Key主要用于网络认证,锁内主要保存数字证书和用户私钥。
    USB Key厂家将USB Key与PKI技术相结合,开发出了符合PKI标准的安全中间件,利用USB Key来保存数字证书和用户私钥,并对应用开发商提供符合PKI标准的编程接口如PKCS#11和MSCAPI,以便于开发基于PKI的应用程序。由于USB Key 本身作为密钥存储器,其自身的硬件结构决定了用户只能通过厂商编程接口访问数据,这就保证了保存在USB Key中的数字证书无法被复制,并且每一个USB Key都带有PIN码保护,这样USB Key的硬件和PIN码构成了可以使用证书的两个必要因子。如果用户PIN码被泄漏,只要保存好USB Key的硬件就可以保护自己的证书不被盗用,如果用户的USB Key丢失,获得者由于不知道该硬件的PIN码,也无法盗用用户存在USB Key中的证书。与PKI技术的结合使USB Key的应用领域从仅确认用户身份,到可以使用数字证书的所有领域。
    
    
    

 

后记:由于涉及的内容比较多,笔者知识和能力有限,就先写这些,后面根据能力再继续补充,请大家多提出宝贵意见。文中参考了很多网上的好文章,有问题请留言。

 

参考文献:

http://blog.csdn.net/shellwin/article/details/5929765

/Article/201203/122095.html

http://www.williamlong.info/archives/83.html

相关TAG标签
上一篇:List分拆为多少个List对象
下一篇:UnicodeDecodeError:'utf-8' codec can't decode...解决
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站