读书频道 > 安全 > Web商务安全设计与开发宝典——涵盖电子商务与移动商务
5.1.6 公共密钥证书系统——数字证书
2012-09-14 08:42:38     我来说两句 
收藏    我要投稿   
本书共有9章内容和4个附录,各章依次讲述了重要的背景信息和关于移动商务和移动商务安全问题的详细知识。附录提供了支撑各章节内容的重要的技术和合规主题。本书一开始介绍了电子商务时代及它对消费者购买习惯所...  立即去当当网订购

能够破坏Web商务中使用的公共密钥加密系统的一个来源是个体(A),他以另一个人(B)的名义发布一个公钥。在这种情况下,使用公钥对于旨在发给B的消息进行加密的这个人实际上是把消息发给了A。因为A有与这个已发布的公钥相对应的私钥,所以A能够对旨在发给B的消息进行解密。为了应对Web商务交易中的这种攻击,可以使用带数字签名的证书流程把人和他们的公钥绑定在一起。

1. 公共密钥基础设施

数字签名和证书以及其他电子商务所需的服务结合起来统称为公共密钥基础设施(public key infrastructure,PKI)。这些服务为电子交易提供完整性、访问控制、机密性、认证和不可抵赖性。PKI包括下列组成部分:

● 数字证书
● 证书授权(Certificate authority,CA)
● 注册机关
● 策略和程序
● 证书撤销
● 不可抵赖性支持
● 时间戳记
● 轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)
● 安全功能的应用

2. 数字证书

数字证书以及对证书的管理是PKI的主要组成部分。使用数字证书的目的是验证所有个人的公共密钥(公布在一个公共“密钥环”上)的确是他自己的。一个可信的第三方CA能够核实那个公钥是某个人名下的公钥,并对此颁发证书以证明这一事实。CA通过对该个人的公共密钥和相关信息进行数字签名来实现证书的颁发(X.509标准规定了公共密钥证书的格式)。之后,该证书被送往一个承载证书和证书撤销列表(Certificate Revocation List,CRL)(记载着被撤销的证书)的库中。用户可以访问这个库以获取相关信息。为了核实这个CA的签名,它的公钥必须与另外一个CA的公钥进行交叉验证。

3. 目录和X.500

在PKI中,库通常被叫做目录(directory)。这个目录包含与一个对象类相关的条目。对象类指个人或者其他有关计算机的实体。这个类定义了这个对象的属性。RFC 258715和RFC 207916中定义了PKI的属性。

X.509证书标准定义了X.509目录的认证基础。X.509目录把有关个人和对象的信息存储在网络服务器上的分布式数据库中。与X.509有关的一些主要定义包括如下:

● 目录用户代理(Directory User Agent,DUA):客户端
● 目录服务器代理(Directory Server Agent,DSA):服务器端
● 目录服务协议(Directory Service Protocol,DSP):促使DSA间的信息交换
● 目录访问协议(Directory Access Protocol,DAP):促使信息从DUA交换到DSA
● 目录信息影随协议(Directory Information Shadowing Protocol,DISP):DSA用来复制或者“影随”它的某些内容或者全部内容

DSA既接收认证要求也接收匿名要求。它们通过一个链机制共享信息。

4. 轻量级目录访问协议

轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)比DAP版本更有效,并且已经演变出了第二版17。LDAP通过推介的方式(即收到信息请求的目录如没有该信息的话,会询问远程目录表)进行通信。如果它发现某个目录带有被请求的条目,那么它便发送一个推介给这个目录。LDAP第2版不具备连锁和影随功能,但可以通过获取其他协议来提供这些功能。

LDAP提供了访问证书目录的标准格式。这些目录存储在网络LDAP服务器上,为这个企业提供公共密钥和相应的X.509证书。目录中包含有诸如个人姓名、地址、电话号码和公共密钥证书等信息。X.500下的标准定义了独立于平台和其他相关试题的计算机目录服务的协议和信息模型。LDAP服务器易遭受的攻击会对可用性和完整性造成损害。比如,针对LDAP服务器进行的拒绝服务攻击能够阻止对CRL的访问,从而允许一个已被撤销的证书重新被使用。

X.500中的DAP协议很笨拙,因此多数客户端应用LDAP。LDAP版本4正在开发之中,它将包括LDAP版本3的扩展概念,使LDAP客户端和与X.500系统交互的服务器能够充分利用X.500提供的全部分布和重复服务。

5. X.509证书

最初的X.509证书(1988年CCITT推荐使用X.509作为目录的认证架构)是为了为X.509目录提供认证而开发的。从那时起,相继开发出了版本2、版本3和最近的版本4。X.509的版本2引入了重复使用名称的概念,版本3提供了把证书扩展到核心证书领域的概念,版本4提供了额外的扩展。这些扩展需要的话可以被不同的用户和不同的应用程序所使用。IETF18开发了一种X.509的版本,这个版本考虑到了Internet的要求。

国际电信联盟(International Telecommunications Union,ITU)的常设机构之一国际电话电报咨询委员会(Consultation Committee International Telephone and Telegraph,CCITT)和国际标准化组织(International Organization for Standardization, ISO)制定了X.509证书的基本格式,其结构如图5-6所示。


 

如果使用版本3证书,那么就可以使用可选的扩展字段。它在证书中的签名字段之前。像实体的名称、起支持作用的标识信息、密钥的属性、证书策略信息和主体的类型等是典型的扩展字段。数字签名起一个防篡改信封的作用。

颁发的不同类型的证书还有以下几种:

● CA证书:颁发给CA的证书,包含用以核实CRL和证书上的数字签名的公共密钥。
● 终端实体证书:颁发给除CA以外的实体的证书,包含证书的用户为了进行密钥管理或者核实数字签名所需的公钥。
● 自颁证书:由实体自行颁发的证书,用来建立信任和分发一个新的签名公钥。
● 转期证书:CA颁发的证书,目的是完成旧公钥向新公钥的过渡。

6. 证书撤销列表

用户通过查看证书撤销列表(certificate revocation list,CRL)来判断一个数字证书是否已被撤销。他们查看签名的序列号。CA给CRL签名是为了实现完整性和身份验证的目的。X.509版本2证书的CRL格式如图5-7所示。


 

CA通常为其用户生成CRL。如果CA为它的全部用户生成CRL,那么这个CRL叫做一个整体CRL。

7. 证书扩展

X.509版本3证书提供了一个字段,支持把大量其他字段附加到该证书上。增加这个扩展的目的是:

● 解决原来X.500标准中不包括的分布式信任模型的问题。
● 在使用证书链的情况下包含进有关中间CA的信息。
● 提供一套对于Internet证书有用的标准扩展。
● 以供对证书的使用添加限制。
● 以供用户定义他们自己专有的或者自定义的扩展。
● 提供位置信息以供检索CRL。
● 支持可以与证书的同一公钥绑定的多个主题名称。

扩展可以被指定为关键和非关键。如果扩展是非关键的,那么该扩展可以被忽略,系统将会继续处理证书的其余过程。而如果扩展是关键的,并且系统在处理它时遇到了问题,那么整个证书将会遭拒。

下面列出了一些标准证书扩展的例子:

● 授权密钥标识符:一个非关键扩展,用来确定与签署证书所用的私钥相对应的公钥
● 证书策略:一个关键或不关键的扩展,用以制定颁发者策略
● CRLDistributionPoints:一个非关键扩展,定义如何为这个特定证书获取CRL数据
● 代用名(issuerAltName):一个非关键扩展,用来指定证书颁发者的Internet代用名。

有关证书扩展的信息可以登录www.ietf.org/rfc/rfc2459.txt和www.ietf.org/rfc/rfc3279.txt网站查看。

8. 密钥管理

显然,在管理加密密钥时,应该和管理物理钥匙一样,需要十分谨慎,或放置在安全的地方,或结合保险箱一起使用。在下面的小节中我们将讨论密钥管理的各个环节。
1) 密钥分发

如前所述,分发对称密钥加密中的密钥也是一个问题。可以使用非对称密钥加密系统分发密钥。其他分发密钥的方式有面对面的会面以交换密钥、通过安全的通讯员派送密钥或使用其他一些安全备用通道等。另外一种方法是使用另一密钥(叫做主加密密钥)来加密这个秘密密钥,然后把被加密的密钥发送给目标接收者。可以手动分发这些主加密密钥,但不需要经常分发。X9.17标准19规定了用来加密明文消息的主加密密钥和数据密钥。

还可以通过把密钥分成几个不同的部分、每部分用一个不同的媒介发送的方法来完成密钥的分发。

在大型网络中,密钥分发是一个非常严重的问题,因为在一个N人网络中,密钥交换的总次数为N(N-1)/2。公钥加密和创建并交换仅在某一个特定会话和时间内有效的会话密钥是解决密钥分发问题的有效机制。

密钥可以通过从旧密钥中生成新密钥来获得更新。比如,如果Alice和Bob共享一个密钥,那么他们可以对他们共有的密钥应用同一个转换函数(散列算法)来获得一个新的密钥。

2) 密钥撤销

数字证书中包含证书有效的时间戳或期限。同样,如果一个密钥由于个人或者业务问题而被破坏或者必须无效的话,它就必须被撤销。CA保留着所有无效证书的CRL。用户应该定期查阅这个列表。

3) 密钥恢复

必须建立一个解密关键数据的系统以防备加密密钥丢失或者被遗忘的情况发生。一种方法是密钥托管(key escrow)。在这个系统中,密钥被分为几个不同的部分,每一部分都被加密,然后被发送给组织中不同的受信个人。也可以把密钥托管在智能卡上。

许多商业社区和私营企业的信息安全从业人士都对托管加密表示出了担忧,部分原因如下:

● 法律有可能强制执行对托管密钥的访问,引起人们对隐私和密钥破坏的担忧。
● NIST/NSA在一个封闭环境中开发了许多密钥托管方法,又一次引起人们对于私有密钥的保护和访问托管密钥的“后门”的担忧。
● 政府可能会限制私营企业使用非托管加密。
● 可能会限制私营组织把加密密钥托管给他们自己选择的第三方实体。

4) 密钥撤回

显然,密钥用的时间越长,越不更换,它就越容易遭到破坏。您更换密钥的频率与被加密和传输的数据的价值正相关。同样,如果在相对较长的一个时期内使用同一密钥加密有价值的数据,如果该密钥被破解,那么更多的数据就会有遭到破坏的风险。如果密钥不经常更换,那么另外一个很重要的让人担心的地方就是攻击者拦截和更改消息,然后再把这个消息发送给接收者。

主加密密钥因为不经常用作加密密钥,所以提供了一些针对这些攻击的保护。

通常情况下,用来签名的私有密钥不经常更换,可以保存数年。

5) 密钥销毁

使用了很长时间且被替换下来的密钥应该被销毁。否则,如果这样的密钥被破解的话,以前用这些密钥加密的消息就会被读取出来。

存储在磁盘或电可擦可编程只读存储器(EEPROM)上的密钥应该被多次覆盖。我们也可以弄碎和燃烧这些磁盘来达到销毁它的目的。可是,在有些情况下,也有可能从被投进大火中的磁盘中恢复数据。因此,任何存储密钥的硬件设备如EEPROM都应该被物理销毁。
操作系统存储在内存中各种地方的较旧的密钥也必须都搜索出来予以销毁。

6) 多重密钥

通常情况下,一个人有不止一个公/私密钥对。这些密钥的大小或许不同,安全级别也不同。较大的密钥可能用于数字签署文档,较小的密钥可能用于加密。一个人也可能拥有多重角色或职责,因此想用不同签名签署消息。如作为一所学校的董事会成员,可能拥有三对密钥,一对可能会用于业务,另一对可能供个人使用,而第三对可能用于一些其他活动。

9. 分布式与集中式密钥管理

CA是集中密钥管理形式。它是一个颁发证书和保留CRL的中央位置。还有一种方法叫做分布式密钥管理,即在彼此熟知的用户之间建立一个“信任链”或“信任网”。因为他们彼此熟知,所以他们可以相信每个人的公钥是有效的。这些用户中有一些人可能认识其他用户,从而也可以核实他们的公共密钥。这个链从最初的一组向外蔓延。这是一种基于人们相互认识相互信任的非正式的核实程序。

 ______________________________________________________
15 Boeyen S., Howes, T., and Richard, P., RFC 2587 “Internet X.509 Public Key Infrastructure LDAP v2 Schema,”1999.
16 Smith, RFC 2079, “Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers(URLs),”1997.
17 Yeong, Y., Howes, T., and Killie, S., RFC 1777 “Lightweight Directory Access Protocol,”1995.
18 Housley, R., Ford, W., Polk, W., and Solo, D., RFC 2459, “Internet X.509 Public Key Infrastructure Certificate and CRL Profile,”1999.
 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:5.1.5 随机数生成
下一篇:5.1.7 数据保护
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站