5.数字签名
公开密钥加密方法的一个主要优点是提供了数字签名的实现手段.
数字签名使得信息的接收者能够验证信息来源的真实性,还能够
验证信息是否完整.因此,公钥数字签名可以提供身份验证和数据
完整性保证.数字签名还提供了不可抵赖的特性,该特性能够保证
信息的发送者无法否认自己确实发送了这个信息.这些特性如同
加密功能一样是整个密码系统的最基本功能.
数字签名的目的和手写签名一样.然而手写签名很容易仿造,数字
签名和手写签名的优势在于它几乎不可能被仿造,而且它在确认
签名者身份的同时还能保证信息内容的完整性.
有些人使用数字签名多于使用加密.比如:客户可能不在意任何人
知道他往自己的银行户头存进1000块钱,但是客户必须确保自己
在和银行的出纳员打交道,而不是其他任何人.
数字签名和加密的基本工作模式很类似,只不过在签名时用自己的
私钥加密而不是用别人的公钥.如果信息可以用你的公钥解密,那
就能确定信息是由你发出的.
5.1 哈希函数
上面所描述的数字签名系统有一些问题.它的速度非常慢,
而且会生成大量的数据--至少是原始信息的两倍.前述系统
在处理过程中可以引入一种单向哈希函数来提高性能.单向
哈希函数可以接受可变长度的输入--既然这样,输入可以是
任意长的消息,甚至成千上万位--产生固定长度的输出;比如
160位.哈希函数保证,如果信息不管以什么方式改变了--甚至
只有1位变化--输出的结果会完全不同.
PGP对用户签名的明文使用一种强哈希函数.这产生一个定长
的数据,称为消息摘要(message digest).(再次强调,信息的
任何改变都会生成完全不同的摘要.)
然后PGP使用摘要和私钥来创建"签名".PGP将签名和明文一同
传输.接收者一旦收到消息,就可以用PGP来重新计算摘要(并
用发送者的公钥来解密签名得到原始摘要),据此接收者就可以
验证签名.PGP对明文可以加密也可以不加密.对明文签名有时也
很有用处,比如接收者可能没有兴趣或者没有能力来验证签名
(这时他直接看明文就可以了).
只要使用了安全哈希函数,就没办法从一篇文章上取下某人的签
名而附加到另一篇文章上,同样也无法改变签过名的消息.签过名
的文章哪怕是极小的改动,也会导致数字签名验证过程失败.
数字签名在身份验证和确认其他PGP用户密钥的过程中扮演了很
重要的角色.
6.数字证书
公开密钥密码系统的一个关键问题是使用者必须经常保持
警惕,确保用正确的密钥来加密信息.在通过公共服务器来
自由交换密钥的环境中,"中间人"攻击方式是一种潜在的威
胁.在这种类型的攻击中,某人发布了一个假冒的密钥,该密
钥所代表的用户名和用户ID正是使用者要发信的接收方.加
密的数据被这个假密钥的拥有者截获后,就能获知数据的真
正内容.
在公开密钥环境中,保证加密所使用的公钥确实是接收者的
公钥而不是假冒的,这是至关重要的.如果密钥是由接收者
亲自交给你的,完全可以放心地用来加密,可是如果要同一
个从未见过面的人交换信息,怎么保证手中握有正确的密钥.
数字证书简化了确定公开密钥确实属于其所有者的工作.
证书是某种形式的信任状.比如你的驾驶执照,社会保障卡,
或出生证明.这每一种证书都包含鉴别你身份的信息而且
一些权威机构声明某些人已经证实了你的身份.某些证书,
比如护照,是身份非常重要的证明,不能丢失,也不能让别人
冒充你.
数字证书是功能上类似物理证书的数据.数字证书包括个人
公钥的信息,这可以帮助别人验证密钥是真实的且合法的.
数字证书用于防止个人的密钥被调换.
一个数字证书由三个部分组成:
1.公开密钥.
2.证书信息(用户的身份比如名字,用户ID等等).
3.一个或多个数字签名.
证书中数字签名的目的是声明证书的信息已经由某些人或实体
证实.数字签名不能保证整个证书的真实性;它仅能保证其中签
名的身份信息及其公钥的真实.
因此证书基本上是由公钥及其一两种形式的附加ID构成,加上一
些可信个人提供的热心证明标记.
6.1 证书发布
在有必要和其他人交换公钥时,证书就有用了.对于希望安全通讯
的小集团用户来说,手工交换包含彼此公钥信息的磁盘和Email是
非常容易的.这称作手工公钥发布,而且在某些时候是很实用的.
除此之外,必须给系统提供必要的安全,存储和交换机制,凭此合
作者,商业伙伴,或陌生人可以互相安全通讯.这些可以形成称为
证书服务器(Certificate Servers)的只存(storage-only)仓库,
或者提供附加密钥管理特性的更加结构化的系统,即公开密钥基
础(Public Key Infrastructures-PKIs)
证书服务器
证书服务器或称密钥服务器,是允许用户提交和获取数字证书的
数据库.证书服务器通常提供一些管理特性,使单个公司可以维护
自己的安全策略--比如,只允许符合特定要求的密钥进入服务器
存储.
公钥基础(Public Key Infrastructures--PKI)
PKI包含证书服务器的证书存储功能,还提供证书管理能力(发布,
回收,存储,获取和认证证书).PKI的主要特性是引入了所谓的认证
权威(Certification Authority--CA),这是由人组成的实体--个人,
团体,部门,公司或其他协会--该组织有权向计算机用户发布证书.
(CA的角色类似于国家政府颁发护照的部门).CA创建证书并在上面
用自己的私钥进行数字签名.由于CA在创建证书过程中的角色很重要,
因此它是PKI的核心.使用CA的公钥,想要验证证书真实性的任何人只
要校验CA的数字签名就能确定证书内容的完整性和真实性(更为重要
的是确认了证书持有者的公钥和身份).
6.2 证书格式
数字证书基本上是身份信息加上公开密钥并由可信的第三方签名以证
明其真实性.数字证书可以是许多种不同格式中的一种.
PGP承认两种不同的证书格式: PGP证书和X.509证书
PGP证书格式
一份PGP证书包括(但不仅限于)以下信息:
<>PGP版本号-这指出创建与证书相关联的密钥使用了哪个PGP版本
<>证书持有者的公钥-这是密钥对的公开部分,并且还有密钥的算
法:RSA,DH(Diffie-Hellman),或DSA(数字签名算法).
<>证书持有者的信息-这包括用户的身份信息,比如姓名,用户ID,照片等
<>证书拥有者的数字签名-也叫做自签名,这是用与证书中的公钥相关
的私钥生成的签名.
<>证书的有效期-证书的起始日期/时间和终止日期/时间;指明证书何
时失效.
<>密钥首选的对称加密算法-指明证书拥有者首选的信息加密算法.支
持的算法有:CAST,IDEA和Triple-DES.
读者可能会把PGP证书想象成公钥及与其有关的一个或多个标签.在这
些标签中,可以找到有关密钥拥有者的身份信息和密钥拥有者的签名,
这签名声明了密钥和身份信息是完整无缺的.(这种特殊的签名叫做自
签名;每一个PGP证书都包含一个自签名.)
PGP证书格式的一个特点是单个证书可能包含多个签名.也许有几个或
许多人会在证书上签名,保证证书上的公钥明确属于某个人.在公共证
书服务器上,读者可能会注意到某些证书,比如PGP的创建者
Phil Zimmermann,包含许多签名.
有些PGP证书由一个公钥和一些标签组成,每个标签包含确认密钥所有
者身份的不同手段(例如:所有者的姓名和公司邮件帐户,所有者的绰
号和家庭邮件帐户,所有者的照片---所有这些全都在一个证书里).
每一个认证手段(每一个标签)的签名表可能是不同的;这些签名保证
这个标签是属于证书中的公钥的,但其实并非所有的标签都是可信的.
(注,这是客观意义上的可信---签名只是署名者对证书内容真实性的
评价,在签名证实一个密钥之前,不同的署名者在认定密钥真实性方
面所做的努力并不相同)
X.509证书格式
X.509是另一种非常通用的证书格式.所有的证书都符合ITU-T X.509
国际标准;因此(理论上)为一种应用创建的证书可以用于任何其他符
合X.509标准的应用.但实际上,不同的公司对X.509证书进行了不同的
扩展,不是所有的证书都彼此兼容.
在一份证书中,必须证明公钥及其所有者的姓名是一致的.对PGP证书
来说,任何人都可以扮演认证者的角色.对X.509证书来说,认证者总是
CA或由CA指定的人.(其实PGP证书也完全支持使用CA来确认证书的体系
结构)
一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备
及其相应公钥的信息.X.509标准定义了证书中应该包含哪些信息,并描
述了这些信息是如何编码的(即数据格式).所有的X.509证书包含以下
数据:
<>X.509版本号-指出该证书使用了哪种版本的X.509标准,版本号会影响
证书中的一些特定信息.目前的版本是3.
<>证书持有人的公钥-包括证书持有人的公钥,算法(指明密钥属于哪种
密码系统)的标示符和其他相关的密钥参数.
<>证书的序列号-创建证书的实体(组织或个人)有责任为该证书指定一个
独一无二的序列号,以区别于该实体发布的其他证书.序列号信息有许
多用途;比如当一份证书被回收以后,它的序列号就被放入证书回收列
表(CRL)之中.
<>证书持有人唯一的标示符-(或称DN-distinguished name)这个名字在
Internet上应该是唯一的.DN由许多部分组成,看起来象这样:
CN=Bob Allen, OU=Total Network Security Division,
O=Network Associates, Inc., C=US
这些信息指出该科目的通用名,组织单位,组织和国家
<>证书的有效期-证书起始日期和时间以及终止日期和时间;指明证书何
时失效.
<>证书发布者的唯一名字-这是签发该证书的实体的唯一名字.通常是CA.
使用该证书意味着信任签发证书的实体.(注意:在某些情况下,比如根
或顶级CA证书,发布者自己签发证书)
<>发布者的数字签名-这是使用发布者私钥生成的签名.
<>签名算法的标示符-指明CA签署证书所使用的算法.
X.509证书和PGP证书之间有许多不同,最明显的如下所述:
<>用户可以创建自己的PGP证书;但是必须向CA请求才能得到一份X.509
证书.
<>X.509证书天生只支持密钥拥有者的一个名字.
<>X.509证书只支持证明密钥合法性的一个数字签名.
要获得一份X.509证书,必须请求CA发给你证书.用户提供自己的公钥,
证明自己拥有相应的私钥,并提供有关自己的某些特定信息.然后在这些
信息上数字签名,并将整个数据包(称为证书请求)发给CA.CA做一些努力
来验证用户提供的信息是正确的,然后就生成证书并返回给用户.
一份X.509证书看起来很象一份带公钥的标准书面证书(类似于基础急救
班的结业证书).证书中包含名字和一些有关的个人信息,加上颁发证书人
的签名.
当前X.509证书最广泛的使用大概是在Web浏览器之中.
对不起还没翻译完,先写个提纲,马上就补
7. 合法性和信任
7.1 合法性检查
7.2 建立信任关系
7.3 信任模式
8. 证书回收
8.1 和一个已回收的证书通信
9. 什么是passphrase
10. 密钥分离
mayi
qq:711705
mail:mayi99@263.net
homepage:www.mayia.com
|