• 沒有找到結果。

电子商务的安全技术 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "电子商务的安全技术 - 万水书苑-出版资源网"

Copied!
35
0
0

加載中.... (立即查看全文)

全文

(1)

对文件进行加密只解决了传送信息的保密问题,而防止他人对传输的文件进行破坏以及 如何确定发信人的身份还需要采取其他的手段,这一手段就是数字签名。在电子商务安全技术 中,数字签名技术有着特别重要的地位,在电子商务安全服务中的源鉴别、完整性服务、不可 否认服务中,都要用到数字签名技术。 并且,数字签名经过长时间的研究,已经有了自己的研究体系,并形成了各自的理论框 架,目前数字签名的研究内容非常丰富,既有RSA、椭圆曲线等经典签名,也出现了盲签名、 代理签名、团体签名、不可否认签名、双联签名、不可否认签名、具有消息恢复功能的签名等 与具体应用环境密切相关的特殊签名。 如果说公开密钥技术和数字签名是电子商务安全的基础,那么数字证书则是将这些技术 广泛地应用于大型的、全球性的电子商务的关键。因此,本章也将会围绕数字证书的相关问题 展开讨论。 数字签名的应用还涉及到法律问题,联合国已经出台了电子签名示范法,法国、美国等 几十个国家颁布了各自的电子签名法。我国也于2005 年正式实施电子签名法。 本章主要介绍:数字签名的基本原理,常规和特殊数字签名方法,美国数字签名标准、 数字证书技术以及数字签名相关法律。

3.1 数字签名的基本原理

数字签名其实是伴随着数字化编码的消息一起发送并与发送的信息有一定逻辑关联的数 据项,借助数字签名可以确定消息的发送方,同时还可以确定消息自发出后未被修改过。数字 签名的整个过程如图3.1 所示。 发送方的私钥 发送方的公钥 图3.1 数字签名 传递的消息 接收方 发送方 消息 消息 消息 签署 签名 发送方的私钥 是否正确? 验证 发送方的公钥

(2)

在该过程中,发送方用自己的私有密钥进行签署,由此产生签名,接收方则用发送方的公开 密钥进行验证操作。借此,接收方能确信所收到的信息确实是由发送方发出的,而且在发送方发 出该信息后相应的内容未被篡改过。在电子商务中,利用这样的数字签名机制,交易中接收订单 的一方可以对发送方发出的订购要求进行验证,确认该订单不是由不怀好意的网上黑客伪造的。 从某些方面来说,数字签名类似于消息验证码(MAC),但它们也有不同之处。最主要的 不同在于,数字签名可以支持不可否认服务,也就是说,消息的接收方可以用数字签名来证明 发送方身份。如果用数字签名来解决电子商务交易中发送方与接收方在交易信息上的争端,则 最可能得到伪造信息的一般都是接收方,所以对接收方来说,应该不能生成与发送方所生成的 签名信息一样的数字签名。但 MAC 不具有进行数字签名的功能,因为接收方知道用于生成 MAC 的密钥。数字签名机制克服了 MAC 的弱点,可以利用公开密钥技术来建立。 3.1.1 数字签名的要求 政治、军事、外交等领域的文件、命令和条约,商业中的契约以及个人之间的书信等, 传统上都采用手书签名或印章,以便在法律上能认证、核准和生效。随着计算机通信网的发展, 人们希望通过电子设备实现快速、远距离的交易,数字(或电子)签名法便应运而生,并开始 用于商业通信系统,如电子邮递、电子转账和办公自动化等系统中。 类似于手书签名,数字签名也应满足以下要求: (1)收方能够确认或证实发方的签名,但不能伪造。 (2)发方发出签名的消息送收方后,就不能再否认他所签发的消息。 (3)收方对已收到的签名消息不能否认,即有收到认证。 (4)第三者可以确认收发双方之间的消息传送,但不能伪造这一过程。 3.1.2 数字签名的分类 数字签名是许多现代验证协议的基础。客户端通过签署某个协议信息,或在信息的某个 字段中使用密钥,来证明拥有某个特定的私人密钥。在签名数据中可以包含提问值或时间戳, 由此来防止重放攻击。 根据不同的标准,数字签名方案有不同的分类方法。 1.基于签字内容的分类 可分为两种:一种是对整体消息的签字,它是消息经过密码变换的被签消息整体;一种 是对压缩消息的签字,它是附加在被签字消息之后或某一特定位置上的一段签字图样。 若按明、密文的对应关系划分,每一种中又可分为两个子类:一类是确定性数字签名, 其明文与密文一一对应,它对一特定消息的签字不变化(使用签名者的密钥签名),如RSA 签 名;另一类是随机化的或概率式数字签名,它对同一消息的签字时随机变化的,取决于签字算 法中的随机参数的取值。一个明文可能有多个合法数字签名,如ElGamal 等。 2.基于数学难题的分类 根据数字签名方案所基于的数学难题,可分为: (1)基于离散对数问题的签名方案。如 ElGamal 型数字签名方案和美国数字签名算法 (DSA)。 (2)基于素因子分解问题的签名方案。如 RSA 数字签名方案。二次剩余作为素因子分解

(3)

问题的特殊情况,当前也发展了好几种基于二次剩余的签名方案,如 Rabin 数字签名方案和 1997 年 Nyang 和 Song 所设计的快速数字签名方案等。 (3)上述两种的结合签名方案。如 1994 年 Harn 设计的一种数字签名方案;1997 年 Laih 和Kuo 设计的一种新的数字签名方案。 3.基于签名用户的分类 根据签名用户的情况,可将数字签名方案分为单个用户签名的数字签名方案和多个用户 的数字签名方案。 4.基于数字签名所具有特性的分类 根据数字签名方案是否具有消息自动恢复特性,可将之分为: (1)不具有自动恢复特性的数字签名方案。一般数字签名不具有此特性,如 EIGamal 数 字签名。 (2)具有消息自动恢复特性的数字签名方案。1994 年,Nyberg 和 Ruepple 首次提出一类 基于离散对数问题的具有消息恢复特性的数字签名方案。 5.基于数字签名所涉及的通信角色分类 根据数字签名所涉及的通信角色可分为直接数字签名(仅涉及通信的源和目的两方)和 需仲裁的数字签名(除通信双方外,还有仲裁方)。 3.1.3 数字签名的使用 安全的数字签名使接收方可以确认文件确实来自声称的发送方。鉴于签名私钥只有发送 方自己保存,他人无法做一样的数字签名,因此他不能否认他参与了交易。 数字签名的加密解密过程和私有密钥的加密解密过程正好相反,使用的密钥对也不同。 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公 开密钥进行解密。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名 的正确性。而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道 接收方公开密钥的人都可以向接收方发送加密信息,只有惟一拥有接收方私有密钥的人才能对 信息解密。在实际应用过程中,通常一个用户拥有两个密钥对,另一个密钥对用来对数字签名 进行加密解密,一个密钥对用来对私有密钥进行加密解密。这种方式提供了更高的安全性。 在实际运用中,直接用公开密码的私钥对文件进行签字并不完全可行,如需对相当长的 文件进行签名认证怎么办?若将文件按比特划分成一块一块,用相同的密钥独立地签每一个 块,这样速度太慢。 通常的解决办法是引入可公开的密码散列函数(Hash function,也叫摘要函数、哈希函数)。 它将取任意长度的消息做自变量,结果产生规定长度的消息摘要。如数字签名标准DSS 中的 消息摘要为160bit,然后签名消息摘要。它发生在签名后、加密前,对邮件传输或存储都有节 省空间的好处。 利用散列函数进行数字签名和验证的文件传输过程如下: (1)发送方首先用哈希函数从原文得到数字摘要,然后采用公开密钥体系用发送方的私 有密钥对数字摘要进行签名,并把签名后的数字摘要附加在要发送的原文后面。 (2)发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接 收方。

(4)

(3)发送方用接收方的公开密钥对秘密密钥进行加密,并通过网络把加密后的秘密密钥 传到接收方。 (4)接收方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文。 (5)接收方用秘密密钥对文件进行解密,得到经过加密的数字摘要。 (6)接收方用发送方的公开密钥对数字签名进行解密,得到数字摘要的明文。 (7)接收方用得到的明文和哈希函数重新计算数字摘要,并与解密后的数字摘要进行对 比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。 上述流程可用图3.2 表示。 图3.2 数字签名过程 如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行验证时使用的是 发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的 数字签名必然是不相同的。这就提供了一个确认发送方身份的方法。 随着计算机网络的发展,过去依赖于手书签名的各种业务都可用这种电子化的数字签名代 替,它是实现电子贸易、电子支票、电子货币、电子出版及知识产权保护等系统安全的重要保 证。数字签名已经并将继续对人们如何共享和处理网络上信息以及事务处理产生巨大的影响。 例如,在大多数合法系统中对大多数合法的文档来说,文档所有者必须给一个文档附上 一个时间标签,指明文档签名对文档进行处理和文档有效的时间与日期。在用数字签名对文档 进行标识之前,用户可以很容易地利用电子形式为文档附上电子时间标签。因为数字签名可以 保证这一日期和时间标签的准确性和证实文档的真实性,数字签名还提供了一个额外的功能, 即它提供了一种接收者可以证明确实是发送者发送了这一消息的方法。 使用电子汇款系统的人也可以利用电子签名。例如,假设有一个人要发送从一个账户到 另一个账户转存10000 美元的消息,如果这一消息通过一个未加保护的网络,那么“黑客”就 能改变资金的数量从而改变这一消息。但是,如果发送者对这一消息进行数字签名,由于接收 系统核实错误,从而识别出对此消息的任何改动。 大范围的商业应用要求变更手书签名方式时,可以使用数字签名。其中一例便是电子数 据交换(EDI)。EDI 是商业文档消息的机对机交换机制。美国联邦政府用 EDI 技术来为消费 者购物提供服务。在EDI 文档里,数字签名取代了手写签名,利用 EDI 和数字签名,只须通 过网络介质即可进行买卖并完成合同的签订。 发送者 私钥加密 散列 算法 摘要 数字 签名 摘要 数字 签名 摘要 发送者 公钥解密 散列算法 发送方 接收方 对比? 原文 原文 Internet

(5)

数字签名的使用已延伸到保护数据库的应用中。一个数据库管理者可以配置一套系统, 它要求输入消息到数据库的任何人在数据库接收之前必须数字化标识该消息。为了保证真实 性,系统也要求用户标识对消息所作的任何修改。在一个用户查看已经标识过的消息之前,系 统将核实创建者或编辑者在数据库消息中的签名,如果签名核实结果正确,用户就知道没有未 经授权的第三者改变这些消息。 3.1.4 数字签名与手写签名的区别 数字签名与手书签名的区别在于,手书签名是模拟的,且因人而异。数字签名是 0 和 1 的数字串,因消息而异。数字签名与消息认证的区别在于,消息认证是收方能验证消息发送者 及所发消息内容是否被篡改过。当收发者之间没有利害冲突时,这对于防止第三者的破坏来说 是足够了。但当收者和发者之间有利害冲突时,单纯用消息认证技术就无法解决他们之间的纠 纷,此时需借助满足前述要求的数字签名技术。 为了实现签名目的,发方须向收方提供足够的非保密信息,以便使其能验证消息的签名。但 又不能泄露用于产生签名的机密信息,以防止他人伪造签名。因此,签名者和证实者可公用的信 息不能太多。任何一种产生签名的算法或函数都应当提供这两种信息,而且从公开的信息很难推 测出用于产生签名的机密信息。再有,任何一种数字签名的实现都有赖于精心设计的通信协议。

3.2 常规数字签名方法

目前的数字签名是建立在公共密钥体制基础上的,它是公共密钥加密技术的另一类应用。 已经具有大量数字签名算法,如RSA 数字签名算法、ElGamal 数字签名算法、Fiat-Shamir 数 字签名算法、Guillou-Quisquarter 数字签名算法、Schnorr 数字签名算法、美国的数字签名标准 算法(DSS/DSA)、椭圆曲线数字签名算法和有限自动机数字签名算法等。本节将介绍两种基 本的数字签名算法,即RSA 数字签名算法和 ElGamal 数字签名算法,许多数字签名方案都是 基于这两种算法。 3.2.1 RSA 签名 RSA 是最为流行的数字签名方法,许多产品内核中都有 RSA 的软件和类库。 简化的数字签名技术使用了像RSA 这样可逆的公开密钥加密系统,其数字签名过程中运 用了消息的验证模式。签名过程如下: z 发送方用自己的私有密钥对要发送的信息进行加密,形成数字签名。 z 发送方将数字签名附加在消息后通过网络传送给接收方。 z 接收方用发送方的公开密钥对接收到的签名信息进行解密,得到信息明文。 z 接收方将解密得到的消息与接收到的消息进行比较,若两者相同,则说明消息未被篡 改过。 简化的RSA 数字签名过程如图 3.3 所示。 在这一过程中,消息的发送方已验证模式用RSA 生成加密的信息,也就是说加密密钥是 发送方的私有密钥。加密后的信息附加在明文上一起传送出去。在接收方那里,接收方必须要 知道相应的解密密钥,即发送方的公开密钥,才能有这把密钥来解密加密后的信息,并将解密

(6)

后的信息与明文作比较。如果两者相同,则接收方就能确信发送方确实拥有加密密钥,同时还 可以确信在传输的过程中消息未被篡改过。 图3.3 简化的 RSA 数字签名 这种基于公开密钥的数字签名的优点在于,对任何可能的消息接收方来说都能检查签名, 因为解密密钥即发送方的公开密钥向公众公开是不会危及安全的。 但这种方案也存在着一定的问题,特别是用于处理和通信的成本过高,因为加密和解密 不得不对整个信息内容进行,并且发送的数据量至少是原始信息的两倍。为了对此方案进行改 进,可以运用散列函数来进行处理。散列函数是一种单向函数,可以把大量信息映射成相对较 小的信息范围。例如,一条成千甚至上百万位长度的信息,经过散列函数的操作,得到的输出 信息只有160 位长。散列函数的另外一个特点是,如果信息发生了变化,哪怕只改动了一位, 用散列函数产生的值就会完全不同。由此就可以知道信息是否被篡改过。利用散列函数的数字 签名过程如下: z 发送方对要发送的消息运用散列函数形成数字摘要。 z 发送方用自己的私有密钥对数字摘要进行加密,形成数字签名。 z 发送方将数字签名附加在消息后通过网络传送给接收方。 z 接收方用发送方的公开密钥对接收到的签名信息进行解密,得到数字摘要。 z 接收方运用同样的散列函数对接收到的消息形成数字摘要。 z 发送方对两个数字摘要进行比较,若两者相同,则说明消息未被篡改过。 整个签名过程如图3.4 所示。 在这一过程中,利用散列函数,可以对要签名的消息内容生成一个固定长度的数据项,即 数字摘要。摘要具有这样的特性,即只要消息内容发生了任何改变,所形成的摘要就是不同的。 在这种机制下,发送方用散列函数来获得数字摘要,然后用 RSA 对数字摘要进行加密形 成数字签名,并与消息一起传送出去。接收方收到信息后,重新计算摘要,同时用RSA 对数 字签名进行解密,然后比较两个摘要值。如果相符,则接收方就可以确信发送方确实拥有该私 有密钥,即该消息确实是由该发送方发来的,并且信息内容在传送途中未被篡改过。 传递的消息 接收方 发送方 消息 签名 加密 消息 消息 消息 预期的消息 加密 若相同, 则签名是有效的 私钥 公钥

(7)

图3.4 用散列函数进行 RSA 签名 RSA 数字签名算法的安全性基于数论中大整数分解的困难性,算法如下: 安全参数:选两个大素数p 和 q,令 n=pq,选 e 并计算出 d,使 ed = 1 mod (p-1)(q-1), 公开n 和 e,将 p,q,和 d 保密。 数字签名:对于消息M∈Zn,定义 S=Sig(M)=Md mod n 为对M 的签名。 签名验证:对给定的M,S 可按下式验证:设 M′= Se mod n,如果 M=M′,则签名成 立,否则,不接受签名。 3.2.2 ElGamal 签名 该体制由T.ElGamal 在 1985 年提出,是专门为签名的目的而设计的,其修正形式已经被 美国 NIST 作为数字签名标准(DSS)。它是一种非确定性的双钥体制,即对同一明文消息, 由于随机参数选择的不同而有不同的签名。这种方案的安全性基于求离散对数的困难性,即对 于y≡gxmodp(p 为素数,g 是 p 的原根),已知 x,g,p 计算 y 是容易的,但是在已知 y,g, p 的情况下,计算 x 是非常困难的。 1.ElGamal 算法参数说明: p:一个大素数,使得求解离散对数为困难问题; g:g 是 p 的模数序列中较大的一个元素; M:明文; x:1<x<p,x 为私钥;

y:y=gxmodp,(p,g,y)为公钥; H(x):Hash 函数。 传递的消息 接收方 发送方 消息 签名 加密 消息 消息 消息 预期的 摘要 解密 若相同, 则签名是有效的 私钥 公钥 散列函数 摘要 实际的 摘要 散列函数

(8)

2.签名及验证过程

(1)给定消息 M,选择随机数 k,k<p。

(2)计算 H(M),并计算r=gkmodp,s=(H(M)−xr)k−1mod(p−1),签名结果是(M,r,s)。 (3)收信人收到(M,r,s),先计算 H(M),并验证 yrrs=gH(M)modp,若两者相等,则签名有效。 除了这两种数字签名算法外,椭圆曲线数字签名算法(ECDSA)和美国数字签名标准算 法(DSA)也是比较常用的数字签名方法。椭圆曲线加密系统是一种运用 RSA 和 DSA 来实 施的数字签名方法。基于椭圆曲线的数字签名具有与 RSA 数字签名和 DSA 数字签名基本上 相同的功能,但实施起来更有效,因为椭圆曲线数字签名在生成签名和进行验证时要比 RSA 和 DSA 快。椭圆曲线数字签名还可以用在一些较小、对资源有一定限制的设备(如智能卡, 即含有微处理器芯片的塑料片)中。 美国数字签名标准算法DSA 将在 3.4 节中介绍。

3.3 特殊数字签名方法

根据电子商务具体应用的需要,形成了许多特殊的数字签名应用,如盲签名、多重签名、 代理签名、定向签名等。本节将对它们进行简单介绍。 3.3.1 盲签名 盲签名是根据电子商务具体的应用需要而产生的一种签名应用。在一般的数字签名中, 总是要先知道文件内容后才签署。但是有时候需要某人对一个文件签名,而又不让他知道文件 的内容,这时就需要盲签名。盲签名是Chaum 在 1983 年首先提出的,一般用于电子货币和电 子选举中。 A 要从 B 处获得盲签名的过程如下: (1)A 取一文件 M 并以一随机数乘之得 M′,这个随机数通常称为盲因子,A 将 M′ 发送给B。 (2)B 在 M′上签名,将其签名发送给 A。 (3)A 去除盲因子(作逆盲运算),从 B 关于 M′的签名中得到 B 关于原始文件 M 的签名。 Chaum 对盲签名有一个形象的比喻:所谓盲签名,就是先将要签名的文件放到一个信封 里,文件在信封中无人可读。去除盲因子的过程就是打开信封的过程。对文件签名相当于在信 封里放一张复写纸,当签名者在信封上签名后,就得到了他对文件内容的签名。 盲签名有两个要求:第一,消息内容对签名者不可见;第二,签名被接收者泄漏后,签名 者无法追踪签名。下面将介绍几种盲签名方案,这些方案都是在ElGamal 签名方案上构造的。 1.盲消息签名 在盲消息签名方案中,签名者仅仅对盲消息M′签名,而并不知道真实消息 M 的具体内 容。这里,对M 的签名简记为 Sig(M)。这类签名的特征是:Sig(M)=Sig(M′) 或Sig( ′ 含M ) Sig(M)中的部分数据。因此,只要签名者保留关于盲消息 M′的签名,便可确认自己关于 M 的签名。

(9)

为了保证真实消息M 对签名者保密,盲因子尽量不要重复使用。 盲消息签名方案在电子商务中一般不用于构造电子货币支付系统,因为它不保障货币持 有者的匿名性。 2.盲参数签名 在盲参数签名方案中,签名者知道所签消息M 的具体内容。按照签名协议的设计,签名 收方可改变原签名数据,即改变Sig(M)而得到新的签名,但又不影响对新签名的验证。因此, 签名者虽然签了名,却不知道用于改变签名数据的具体安全参效。 盲参数签名方案的这些性质可用于电子商务系统CA 中心,为交易双方颁发口令。任何人 虽然可验证口令的正确性,但包括CA 在内谁也不知道变化后的口令。在实际应用中,用户的 身份码ID 相当于 M,它对口令产生部门并不保密。用户可以从管理部门为自己产生的非秘密 口令中得到秘密口令。这种秘密口令并不影响计算机系统对用户身份进行的认证。 3.弱盲签名

在弱盲签名方案中,签名者仅知Sig( ′ ,而不知 Sig(M)。如果签名者保留M ) Sig( ′ 及其M ) 他有关数据,待Sig(M)公开后,签名者可以找出Sig( ′ 和 Sig(M)的内在联系,从而达到对消M ) 息M 拥有者的追踪。

盲消息签名方案与弱盲签名方案的不同之处在于,弱盲签名不仅将消息M 做了盲化,而且 还对签名Sig( ′ 做了变化,但两种方案都未能摆脱签名者将 Sig(M)和M ) Sig( ′ 相联系的特性,M ) 只是后者的隐蔽性更大一些。因而,弱盲签名方案与盲消息签名方案的实际应用也较为类似。

4.强盲签名

在强盲签名方案中,签名者仅知Sig( ′ ,而不知道 Sig(M)。即使签名者保留M ) Sig( ′ 及M ) 其他有关数据,仍难以找出Sig( ′ 和 Sig(M)之间的内在联系,因此不可能对消息 M 的拥有M ) 者进行追踪。 强盲签名方案是性能较好的一个盲签名方案,电子商务中使用的许多数字货币系统和电 子投票系统的设计都采用了这种技术。 3.3.2 多重签名 类似于日常生活中手写签字,数字签名有时也需要多个用户对同一消息进行签名,这就 是多重数字签名问题。根据签名过程的不同,多重数字签名方案可以分为两类:一类为有序多 重数字签名方案,另一类为广播多重数字签名方案。每一种方案都有三个过程:系统初始化, 签名的产生过程和签名的验证过程,同时每一种方案都包含消息发送者、消息签名者和签名验 证者。在广播多重数字签名方案中还包含有签名收集者。

现说明两种方案的签名过程。假设有n 个用户,U1,U2,…,Un签署同一份消息M,有

序多重签名方案的签名过程如下:消息发送者预先设计一种签名顺序(U1,U2,…,Un),并

将这种签名顺序发送到每一位签名者。然后将待签消息M 发送到第一个签名者 U1,第一个签

名者签名后,将消息发给第二个签名者U2。从U2开始,每一位签名者收到签名消息后,首先

验证上一签名的有效性,如果签名有效,则继续签名,并将签名消息发送到下一个签名者;如 果签名无效,则拒绝对消息签名,终止整个签名。当签名验证者收到签名消息后,验证签名的 有效性,如果有效,多重签名有效;否则,多重签名无效。可以看出,在有序多重数字签名方 案中,签名者Ui(i=1,2,…,n)要对 U1,U2,…,Ui-1的签名进行验证,同时签名验证者

(10)

对所有签名者U1,U2,…,Un的签名进行验证。 在广播多重签名方案中,消息发送者同时将待签消息 M 发送给每一位签名者 Ui(i=1, 2,…,n)进行签名,然后 Ui(i=1,2,…,n)将签名的结果发送到签名收集者,由收集者 签名消息进行整理并发送给签名验证者。签名验证者验证多重签名的有效性。 多重签名在办公自动化、电子金融和CA 认证等方面有重要的应用。 3.3.3 代理签名 在现实世界里,人们经常需要将自己的某些权力委托给可靠的代理人,让代理人代表本 人去行使这些权利。在这些可以委托给他人的权力中包括人们的签名权。例如,某公司的经理 需要到外地出差,为了不影响公司的业务,该经理可以委托一个可靠的助手,让该助手在他出 差期间代表他在一些重要文件上签字。委托签名权力的传统方法是使用印章,因为印章可以在 人们之间灵活地传递,在电子化的信息社会,同样会遇到委托签名权力的问题。代理签名的目 的就是当某签名人(这里称为授权人)因公务或身体健康等原因不能行使签名权力时,将签名权 委派给其他人替自己行使签名权。换言之,代理签名就是原始签名人将自己的签名权委托给可 靠的代理人,让代理人代表本人去行使某些权力。这种签名机制在许多领城都有重要的应用, 因此引起了人们的极大兴趣。 1.代理签名的基本要求 代理签名应满足以下条件: (1)签名容易验证。 (2)源签名者与代理签名者的签名容易区分。 (3)签名事实不可否认。 2.几种代理签名方案介绍 针对于应用的需要,在原始代理签名方案的基础上,人们又提出了一些新的方案,以解 决现实生活中出现的应用需求,下面对其中一些方案进行介绍。 (1)一次性代理签名方案。在通常的代理签名中,一旦原始签名人将签名权委托给某人 后,无法控制代理人的签名次数,这将对原始签名人的权益产生不良影响。一次性代理签名方 案使得代理人最多签名一次,如果超过规定次数,代理签名人的密钥将被破解。采用此方案的 优点是:代理人不但可以控制授权人无法传送秘密信息,而且又能保障授权人的权益不被代理 人侵犯,代理人的代理签名权同时也受到授权人的制约,即达到了双向制约的功能。 (2)代理多重签名。代理多重签名是指某人同时受多人委托进行代理签名。下面举例子 说明代理多重签名的应用。如果一个公司将要发布一个涉及到财务部门、工程部门以及行政管 理部门的文件。该文件必须由这些部门联合签名才有效,或者这些部门也可以委托它们都信任 的一个代理人同时代替它们在该文件上签字。对于前一种情况,可以用前面提到的多重签名方 案解决。而对于后一种情况,即多个部门同时委托一个代理人在一个文件上签名,仅仅多重签 名或者代理签名都是不够的。因为一般的代理签名中,一个代理签名只能代表一个原始签名人。 在这种情况下,可以用代理多重签名方案进行解决。多重数字签名的应用比较广泛,它还可以 用于数字货币,特别是对大额数字货币的签发上,以加强系统或交易的安全性。 (3)盲代理签名。在一般的代理签名中,原始签名人可以从自己得到的代理签名中辨认 出签名人的身份。对于原始签名人来说,他们可以利用这一性质对代理签名人的签名行为进行

(11)

监督,以防止代理签名人滥用他们的代理权力。但在有些情况下,尽管代理签名人忠实地行使 着原始签名人委托给自己的代理签名权力,但他们却不希望自己的代理签名受到原始签名人的 监督,不希望原始签名人能根据代理签名确定出他们的身份。电子问卷调查就是一个很好的例 子,被调查者希望能够毫无顾忌的回答问题,同时不希望调查者知道自己的身份。为了满足这 个要求,可以采用盲代理签名方案。在盲代理签名方案中,原始签名人在得到代理签名时,不 能根据代理签名确定出代理签名人的身份。 3.3.4 定向签名 当通过网络传输电子邮件和有关文件时,为了维护有关的权力和合法利益,为了维护网 上信息在法律上的严肃性,发送者应当对所发信息进行数字签名,使接收者确信接收到的信息 是可信的、合法的和有效的,它可以防止不法者的冒充行为。 对许多签名方案而言,无论什么人,只要获得签名就可验证签名的有效性。这些签名方案 包括RSA 签名方案和 ElGamal 签名方案,任何拥有签名拷贝的人都可以利用签名者的公钥验证 签名的有效性。这一特性对于如公开声明之类的文件的散发是必须的,但是对另一些文件如个 人或公司的信件特别是有价值的文件的签名,如果也可以随便散发和验证,就会造成灾难。例 如一些数字签名可能包含有对签名接收者敏感的信息,如汇票、医疗记录、税务信息等等,这 些签名最好只能由接收者直接验证。为了使特定的收方才能验证签名的有效性,对RSA 签名而 言,可以对签名采用加密传送的方法。由Chaum 等人提出的不可否认签名方案也具有对签名验 证者进行控制的能力。但这种方案的实施需要签名者和验证者之间相互传送有关信息(交互式验 证)。从实际应用看,一般并不需要对签名进行加密,更不必采用较为繁琐的交互式验证。 因此有了定向签名的概念,并产生了一些定向签名方案。这些方案仅允许特定的收方对 签名进行验证,但它们不需要像RSA 签名那样要对签名加密,也不需要像不可否认签名那样 要进行交互式验证。由于具有有向性,这些方案的安全性也得到了加强,极大地缩小了受攻击 和受伪造的范围。 目前主要有ElGamal 型签名方案和 MR 型定向签名方案,MR 型定向签名方案是具有消息 还原功能的签名方案,它是由Nyberg 等人建立的。它们的区别在于,在验证 ElGamal 型签名 的有效性时,签名人应将消息M 连同签名一起送收方。而在使用 MR 型定向签名方案时不必 传送消息M。任何人收到签名后,利用签名便可还原 M。使用 MR 型定向签名方案的优点在 于:即使在未使用加密方案的情况下,除了收方外,任何人无法看到消息M 的内容。因此, MR 型定向签名方既是签名方案,同时又起到了对消息 M 进行加密的作用。 3.3.5 双联签名 在商务活动中经常出现这种情形,即持卡人给商家发送订购信息和自己的付款账户信息, 但不愿让商家看到自己的付款账户信息,也不愿让处理商家付款信息的第三方看到订货信息。 双联签名技术可以解决这个问题。 双联签名的使用方法如下: (1)持卡人将发给商家的信息 M1 和发给第三方的信息 M2 分别生成报文摘要 MD1 和报 文摘要MD2。 (2)持卡人将 MD1 和 MD2 合在一起生成 MD,并签名。

(12)

(3)将 M1、MD2 和 MD 发送给商家,将 M2、MD1 和 MD 发送给第三方。接收者根据 收到的报文生成报文摘要,再与收到的报文摘要合在一起,比较结合后的报文摘要和收到的 MD,确定持卡人的身份和信息是否被修改过。双联签名解决了三方参加电子贸易过程中的安 全通信问题。 3.3.6 团体签名 David Chaum 提出了下述问题: 一个公司有几台计算机,每台都连在局域网上。公司的每个部门有它自己的打印机(也 连在局域网上),并且只有本部门的人员才被允许使用他们部门的打印机。因此,打印前,必 须使打印机确信用户是在那个部门工作的。同时,公司想保密,不可以暴露用户的姓名。然而, 如果有人在当天结束时发现打印机用得太频繁,主管者必须能够找出谁滥用了那台打印机,并 给他一个账单。 对这个问题的解决方法称为团体签名。它具有以下特性: (1)只有该团体内的成员能对消息签名。 (2)签名的接收者能够证实消息是该团体的有效签名。 (3)签名的接收者不能决定是该团体内哪一个成员签的名。 (4)在出现争议时,签名能够被“打开”,以揭示签名者的身份。 下面是一个具有可信仲裁者T 的团体签名方案: (1)T 生成一大批公开密钥/私钥密钥对,并且给团体内每个成员一个不同的惟一私钥表。 在任何表中密钥都是不同的(如果团体内有n 个成员,每个成员得到 m 个密钥对,那么总共 有n·m 个密钥对)。 (2)T 以随机顺序公开该团体所用的公开密钥主表。T 保持一个哪些密钥属于谁的秘密 记录。 (3)当团体内成员想对一个文件签名时,他从自己的密钥表随机取一个密钥。 (4)当有人想验证签名是否属于该团体时,只需查找对应公钥表并验证签名。 (5)当争议发生时,T 知道哪个公钥对应于哪个成员。这个协议的问题在于需要可信的 一方。T 知道每个人的私钥因而能够伪造签名。而且,m 必须足够长以避免试图分析出每个成 员用的哪些密钥。 3.3.7 不可争辩签名 不可争辩签名是在没有签名者自己的合作下不可能验证签名的签名,它是由Chaum 和 van Antwerpen 提出的。它拓展了普通签名概念,使签名者能够限制签名的验证权,即不可争辩签 名的验证必须在签名者的帮助下完成。这一性质有效地防止了签名接收者滥用签名。 不可争辩包括两层含义: (1)签名的证实和否定必须与签名者合作完成,这一点可以有效地防止一些有价值的文 件被随意复制或分发。 (2)签名者不能抵赖他曾签过的签名,由于签名者可以通过拒绝执行证实协议来否认他 曾签过的签名,为了防止此类事件发生,不可否认签名增加了一个否认协议,签名者可以利用 否认协议证明一个伪造的签名是假的;而如果签名者拒绝执行否认协议,就表明签名事实上是

(13)

由他签署的。 不可争辩签名可用于软件产品的分发上,以保护知识产权。软件公司 A 采用不可否认签 名方法对其软件产品签名,使得只有合法的用户能够与 A 合作验证签名的有效性。若某个第 三方实体B 私自售卖或分发产品的拷贝,那么从 B 那里得到产品的用户将无法验证签名的有 效性,从而不能确定得到的产品是否是正品。 不可争辩的一种变化是把签名者与消息之间的关系与签名者与签名之间的关系分开。在 这种签名方案中,任何人能够验证签名者实际产生的签名,但签名者的合作者还需要验证该消 息的签名是有效的。

3.4 美国数字签名标准

3.4.1 DSS 简介 1991 年 8 月 30 日,美国国家标准与技术局(NIST)在联邦注册书上发表了一个通知,提 出了一个联邦数字签名标准,NIST 称之为数字签名标准(DSS)。DSS 提供了一种核查电子传 输数据及发送者身份的一种方式。NIST 提出:“此标准适用于联邦政府的所有部门,以保护未 加保密的信息……它同样适用于E-mail、电子金融信息传输、电子数据交换、软件发布、数据 存储及其他需要数据完整性和原始真实性的应用”。 尽管政府各部门使用NIST 提出的 DSS 是命令所迫,但是他们对 DSS 的采纳使用会对私 人领域产生巨大的影响。除了提供隔离生产线以满足政府和商业需求外,许多厂家设计所有的 产品都遵守DSS 要求。为了更好地理解 DSS 成为私人领域标淮的可能性,我们可以回想 NIST 的前身——美国国家标准局于 1977 年将数字加密标准(DES)确定为政府标准后不久,美国国 家标准机构采用了它,从而使它成为一个广泛使用的工业标准。 美国政府在推行DSS 时,遭到了不少非议。DSS 当时受到的批评主要有: (1)太神秘(这是 NSA 设计的协议,它使用了 ElGamal 算法)。 (2)太慢(在验证签名时比 RSA 慢了 10 倍至 40 倍)。 (3)太新(ElGamal 算法当时还没有被完全分析透彻)。 (4)太不安全(固定的 512 位密钥)。 在后续的修订版本中,以上的问题逐渐得到了解决。 3.4.2 数字签名算法(DSA) 自从NIST 引荐数字签名标准以来,它对 DSS 签名作了广泛的修改。DSS 签名为计算和 核实数字签名指定了一个数字签名算法(DSA)。经过公众的评议并作了少许改进后,1994 年, DSS 首次作为联邦信息处理标准(FIPS)对外公布。 DSA 基于的是离散对数问题,其困难之处在于要在有限域内进行数学取幂的逆操作。美 国联邦信息处理标准 186-2 中对数字签名算法(DSA)作了详尽的规定。 数字签名算法是一种单向不可逆的公开密钥系统,其安全性取决于离散对数的计算难度。 数字签名算法令: y=gxmod p

(14)

其中p 是质数,g 是 p 的模数序列中较大的一个元素。有了 g、x 和 p,可以很容易地计 算出y;但给出 y、g 和 p,要计算 x 则极为困难。这就为公开密钥系统奠定了基础,其中 y 就是公开密钥,x 则是私有密钥。 该系统中用到三个整数p,q 和 g,可对组内的所有用户公开。模数 p 为质数,其范围在 512 至 1024 位之间。q 是小于 160 位的一个质数,为 p-1 的因子。而 g 是这样确定的: g =j[(p-1)/q] mod p 其中j 为任意整数,其范围是 1<j<p,故: j[(p-1/q] mod p>1 对于某一个确定的发送方来说,私有密钥x 是随机选定的,且 1<x<q。而公开密钥 y 则是 根据上述公式计算得来的。利用 DSA 进行数字签名时,签名者首先用散列函数生成一个待签 名的信息摘要,然后由 DSA 签名算法利用私有密钥 x 对该摘要进行处理,形成两个由 160 位数字 r 和 s 组成的签名数据,该签名信息与原始的发送信息一起保存或发送。例如,要对 摘要为 h 的信息进行签名,用户可随机选择一个整数 k(0<k<q),并进行下列计算: r=(gk mod p)mod q s=[k-1(h +xr)]mod q 其中k-1是模数为q 的 k 的反函数,即(k-1k)mod q=1,且 0<k-1<q。r 与 s 这一对数字构 成了对信息的签名。 为了验证所接收到的相伴摘要h′的签名信息 r′和 s′,接收方首先要检查 r′与 s′的 取值是否满足0<r′<q 和 0<s′<q 的条件。只要其中的任何一个条件得不到满足,系统就会拒 收签名。若条件全部满足,接收方就可以根据s′和 h′的值来计算数值 v。若 v 等于签名中 r′, 则验证了签名是正确的。v 的计算过程如下: w =(s′)-1 mod q u1 =(h′w)mod q u2 =(r′w)mod q v=[(gu1yu2)mod p] mod q

从用户使用相应算法的角度看,DSA 和 RSA 稍微有点不同。前半部分与 RSA 签名一样, 系统也是利用散列函数来生成要进行签名的信息的摘要,但随后DSA 在对摘要进行处理时, 需要使用私有密钥,并生成由两个160 位数字组成的签名,签名与发送的信息同时传送或存储。 接收方运用散列函数对接收到的信息重新计算摘要,由此来验证数字签名。然后将计算出来的 摘要、收到的数字签名以及公钥反馈给DSA 进行验证操作,根据验证的结果可以说明数字签 名是否正确。

RSA 和 DSA 在技术上最重要的不同在于:DSA 的验证过程中对资源的处理要比 RSA 更 彻底。除此之外,两者在加密强度和其他的技术特征方面没有什么明显的不同。但由于 RSA 早期在市场上做了大量推广工作,所以相对于DSA 而言,RSA 占据了市场的统治地位。

3.5 数字证书技术

(15)

来表明自己的身份,以示自己是一个合法的用户或合法的商家。电子商务中的数字证书就是这 样一种由权威机构发放的用来证明身份的事物。 在网上,双方要想谈一笔生意,任何一方都要鉴别对方是否是可信的,也就是要确定交 易双方的身份。但是,如何才能保证所得到的公开密钥的正确性,即如何保证交易对方的真伪 呢?为了解决这个问题,就引出了认证机制,其中就涉及到数字证书和认证机构CA。 3.5.1 数字证书简介 公开密钥数字证书,是一种将某方的身份(证书主体)与某个公开密钥值安全地联系在 一起的数据结构。数字证书是由认证机构颁发的、包含了公开密钥持有者信息以及公开密钥的 文件,证书上还有认证机构的数字签名。就像驾驶执照能将照片、姓名、出生日期进行有公证 效果的关联一样,一个用户的数字证书就是一个有公证效果的将公开密钥与所有者的身份信息 相联系的“数字身份证”。在网上的电子交易中,如果双方出示了各自的数字证书,并用它来 进行交易操作,那么双方都可不必为对方的身份担心。 数字证书系统通过认证机构为公-私密钥对的持有者发放和管理数字证书。每一个数字证 书包含了数字证书主体的一个公钥值和对其所作的无二义性的身份确认信息。其中,数字证书 主体是指持有相应私钥的个人、设备或其他实体,而认证机构则用自己的私钥对数字证书进行 数字签名。 对于用户来说,如果他已经安全地获得了某一认证机构的公钥,而且该用户是信任该认 证机构的,那么该用户就可以获得此认证机构的任一用户的公钥。方法是先获得该认证机构用 户的一个数字证书拷贝,然后抽出其中的认证机构公钥值,并用认证机构的公钥来检验数字证 书上的数字签名。这样,借助数字证书,用户只要知道了一个通信方(即认证机构)的公钥, 就可以获得其他很多通信方的公钥。因而,可以获得很好的规模效应。 数字证书不是一劳永逸的,需要对它进行有效期的检验,它有一个预定的有效期限,包 括一个起始和终止的日期及时间。在数字证书期满后,数字证书主体和公钥间的捆绑就不再有 效,因而数字证书也不再受信任。用户不能使用一个已过期的数字证书,除非是为了重新确认 数字证书有效期内所发生过的某一项活动,如,检验某一旧文档上的数字签名。在数字证书期 满后,如果数字证书的主体仍然拥有一个有效的公钥,则发放数字证书的认证机构可以给该用 户发放一个新的数字证书。 此外,由于各种各样的原因,认证机构也可能会在数字证书到期之前撤销数字证书。例 如,在已知或怀疑相应的私钥被泄露时,为保护公钥用户,就需要防止其继续运用在私钥被泄 露前发放的数字证书来使用公钥。 3.5.2 数字证书的类型 数字证书一般分为三种类型。 1.个人数字证书 个人数字证书主要为某一个用户提供证书,以帮助个人用户和其他用户交换信息或者使 用在线服务时,验证用户的身份,保证信息的安全,主要是针对个人的电子邮件安全。个人身 份的数字证书通常安装在浏览器内,并通过安全的电子邮件来进行操作。目前常用的Netscape 浏览器和IE 浏览器都支持该功能。

(16)

2.服务器证书 服务器证书主要为网上的某个Web 服务器提供证书,拥有 Web 服务器的企业就可以用具 有凭证的互联网站点进行安全的电子交易。拥有数字证书的服务器可以自动与客户进行加密通 信,具有数字证书的Web 服务器会自动地将其与客户端的 Web 浏览器的通信加密。服务器拥 有者有了证书,就可以进行安全的电子交易了。 3.开发者证书 开发者证书通常为互联网中被下载的软件提供证书。开发者证书又称为代码签名数字证 书,借助这种数字证书,软件开发者可以为软件做数字标识,在互联网上进行安全的传送。在 用户从互联网上下载软件时,开发者证书与微软的Authenticode(认证码)技术共同提供他们 所需的软件信息和对该软件的信任。当客户从开发者网站上下载经过数字标识了的 Active X 控制命令、Java 程序、动态链接库、HTML 内容时,就能够确信该代码的确来自于开发者, 而且没有被改变或破坏。开发者证书就好像是软件的外包装,如果它被篡改了,客户就知道代 码实际已经不可信了。 在上述三类证书中,前两类是常用的证书,第三类则用于特殊场合。大部分认证机构都 只提供前两类证书,能提供全部三类证书的认证机构并不多。 3.5.3 利用数字证书实现信息安全 下面,我们分别从信息的发送方和接收方的角度来介绍如何利用数字证书实现信息安全。 如图3.5 所示,发送方的工作主要有下面几步(对应图中的编号): 图3.5 发送方的工作 发送方 发送方私有 密钥 发送方 数字证书 + + 信息 数字签名 2) 接收方 数字证书 加密 对称密钥 加密后信息 3) 接收方公开密钥 加密 数字信封 4) 信息 数字摘要 1) 5)

(17)

1)发送方利用散列函数,把要发送的信息散列成固定长度的数字摘要。 2)发送方用自己的私有密钥对数字摘要进行加密,形成数字签名。 3)发送方把数字签名和自己的数字证书附加在原信息上,利用对称密钥进行对称加密, 形成加密后的信息。 4)发送方用接收方数字证书中给出的公开密钥,来对发送方进行对称加密的密钥进行加 密,将加密结果装入数字信封。 5)发送方把加密后的信息与数字信封一起通过网络发送出去。 如图3.6 所示,接收方的工作主要有下面几步(对应图中的编号)。 图3.6 接收方的工作 6)接收方用自己的私有密钥对接收到的数字信封进行解密,得到发送方用于加密的对称 密钥。 7)接收方用解密得到的对称密钥对接收到的加密后信息进行解密,得到信息、数字签名 和发送方的数字证书。 8)接收方用得到的发送方数字证书中的公开密钥对数字签名进行解密,得到数字摘要。 9)接收方运用同样的散列函数,把解密得到信息散列成固定长度的数字摘要。 10)接收方比较两个数字摘要。若比较结果一致,则说明信息在传递的过程中未被篡改 过,即保证了数据的完整性。 接收方 解密 对称密钥 加密后信息 7) 发送方 数字证书 + + 信息 比较 10) 数字信封 接收方私有密钥 6) 解密 数字摘要 数字签名 发送方公开密钥 8) 解密 数字摘要 9)

(18)

3.5.4 数字证书的格式 在数字证书的格式方面,被人们普遍接受并使用得最为广泛的是ITU 的 X.509 标准数字 证书格式。ITU X.509 标准也称为 ISO/IEC 9594-8 标准。 1.基本数字证书格式 X.509 数字证书格式有三个不同的版本。 z 版本1 格式,在 1988 年的第一版中定义。 z 版本2 格式,在 1993 年的第二版中定义。 z 版本3 格式,是在 1997 年的第三版中定义,并在 2000 年的第四版中又对其进行了改进。 首先介绍在版本1 和版本 2 中所定义的 X.509 基本数字证书格式,然后介绍版本 3 中所增 加的扩充内容。图3.7 给出了基本的数字证书格式。 图3.7 基本数字证书格式 基本数字证书格式中包含如下内容: z 版本号:代表数字证书的版本格式是版本1、版本 2 或版本 3,将来还可以是其他版本。 z 数字证书序列号:由认证机构发放的代表该数字证书的惟一标识号。 z 签名算法标识符:认证机构用来对数字证书进行签名所使用的数字签名算法的算法标 识符。 证书 生成数字 签名 认证机构的公钥 认证机构的数字签名 非版 本1 的 内容 发送者的惟一标识符 主体的惟一标识符 版本号 (证书格式) 签名算法标识符 (证书发放者的签名) 发放者(认证机构) 的X.500 名称 有效期 (起始和终止的日期/时间) 证书序列号 主体的X.500 名称 算法标识符 公钥值 主体的 公钥信息

(19)

z 数字证书发放者:发行数字证书的认证机构的X.500 名称。 z 有效期:数字证书的起始和终止的日期和时间。 z 主体:与相应的被验证公钥所对应的私钥持有者的X.500 名称。 z 主体的公钥信息:主体的公钥值以及该公钥被使用时所用的算法标识符。 z 数字证书发放者的惟一标识符:这是一个可选项,当不同的实体具有相同的名称时, 利用该标识符可使发放数字证书的认证机构的X.500 名称不具有二义性。 z 主体的惟一标识符:这是一个可选项,当不同的实体具有同样的名称时,利用该标识 符可使主体的X.500 名称不具有二义性。 尽管X.509 数字证书并没有限定只能和 X.500 目录系统一起使用,但在其第一版和第二版 的基本数字证书格式中却只使用X.500 名称来确定主体和数字证书发放者的身份。 一个X.500 目录由一系列目录项组成。每个目录项对应一个现实世界中的对象,如某个人、 某个组织或某个设备。每一对象都有一个无二义性的名称,称为特异名(distinguished name, DN)。对象的目录项中包含了有关该对象的一系列属性值。例如,关于某人的目录项可能包含 了其名字、电话号码以及电子邮件地址等属性。为支持无二义性命名的需要,所有的X.500 目 录项在逻辑上被组织成一种树型结构,称为目录信息树(Directory Information Tree,DIT)。目 录信息树有一个概念上的根节点和数目不限的非根节点,除了根节点,所有节点都从属于其他 节点。除根节点外,每一个节点都对应于一个目录项,并有一个特异名。根节点的特异名为空。 在基本数字证书格式中,还包含了一些用于数字证书发放者的数字签名和认证公钥的算 法标识符。如,下面是一些常见算法的标识符: z 用于数字签名的使用SHA-1 散列函数的 DSS 算法标识符。 z 用于数字签名的使用SHA-1 散列函数的 RSA 算法标识符。 z 用于建立加密密钥的RSA 密钥传输算法标识符。 z 用于建立加密密钥的Diffie-Hellman 认证技术算法标识符。 这些算法标识符是需要注册的对象类的一个实例,也就是对惟一对象标识符的一个赋值。 用于算法标识符和其他很多与电子商务相关的对象类的对象注册系统是一个对象标识符 机制,该机制由国际标准指定,并受一系列国际对象注册机构的支持。 一个对象标识符是由一系列整数成分组成的一个值,该值在所有对象标识符中是惟一的, 它可以赋给一个已注册的对象。对象标识符的构成依据的是一个由不同赋值机构所组成的层次 结构,其中的每一层负责对象标识符值的一个整数成分。 2.X.509 版本 3 数字证书格式 从 1993、1994 年开始,X.509 数字证书开始尝试运用于大规模的商业活动中,但是基于 版本1 和版本 2 的基本数字证书格式在很多方面都显得不够完善。为了满足数字证书在电子商 务应用中的需要,负责这方面工作的标准化组织(ISO/IEC,ITU 和 ANSI X9)在数字证书中 增添了一个通用扩充机制,经过扩充后的数字证书格式,就是X.509 版本 3 的数字证书格式。 图3.8 给出了 X.509 版本 3 的数字证书格式。从图中可以看到,除了增加了扩充字段外, 版本3 的数字证书格式与基本数字证书格式是相同的。借助扩充字段,企业可以将任意数目的 附加字段加入到数字证书中。 每个扩充字段都有一个需要被注册的类型,注册方法如同算法的注册,即将一个对象标 识符赋值给该类型。原则上,任何人都可以来定义扩充类型。在实际操作时,为实现互操作性,

(20)

公共扩展类型必须为所有的实施者所了解。所以事实上,扩展类型的标准化工作是最重要的。 但一些重要团体可能会定义自己的扩展类型以满足自己的特殊需要。 图3.8 X.509 版本 3 的数字证书格式 在版本3 的数字证书格式中,每个扩展字段都由三部分组成: z 一个表示扩展类型的对象标识符值。 z 一个关键程度指示器。 z 一个扩展字段值。 其中,扩展类型规定了值的数据类型(字符串、日期或复杂数据结构)以及与值相关联 的语义。 设置关键程度指示器的目的,是为了适应不同系统需识别不同扩展类型的需要。当数字 证书用于支持多种应用程序需求时,或通过技术移植而引入更多的新扩展类型时,就会用到 证书 生成数字 签名 认证机构 的私钥 认证机构的数字签名 可 选 部 分 主体的惟一标识符 版本(证书格式) 签名算法标识符 (证书发放者的签名) 发放者(认证机构) 的X.500 名称 有效期 (起始和终止的日期/时间) 证书序列号 主体的X.500 名称 算法标识符 公钥值 主体的 公钥信息 发放者的惟一标识符 扩展部分 扩展类型 关键/非关键 扩展字段值 扩展类型 关键/非关键 扩展字段值 扩展类型 关键/非关键 扩展字段值

(21)

关键程度指示器。其实关键程度指示器仅是一个简单的标志,用以指明扩展类型是关键的还 是非关键的。如果关键程度指示器指明一个扩展类型是非关键的,那么当使用数字证书的系 统无法识别该扩展类型时,允许忽略该扩展字段。而如果关键程度指示器指明一个扩展类型 是关键的,则任何对该数字证书的部分使用都是不安全的,除非系统能识别扩展类型并调用 与之关联的函数。 在X.509 版本 3 数字证书格式中,不再仅仅局限于用 X.500 名称来确定数字证书主体和数 字证书发放者的身份。任何一个实体都可以用一个或多个不同形式的名称来确定,只要名称能 无二义性地标识出一个实体的身份就可以了。 3.数字证书扩展标准 伴随着X.509 数字证书的使用,ISO/IEC、ITU 和 ANSI X9 等标准组织制定了一系列 X.509 数字证书扩展标准。其中,ISO/IEC 和 ITU 将相应的扩展内容融入了 1997 年颁布的标准中, 并于2000 年进行了完善,而 ANSI 所做的扩展除了在技术上能与 ISO/IEC/ITU 所进行的扩展 相融合外,还将重点放在了金融业的应用上。 标准的扩展主要包括如下几个部分: (1)密钥信息的扩展。密钥信息的扩展传送了有关主体和发放者密钥的附加信息,如密 钥标识符和被认可密钥用途指示器。这些扩展允许管理者限制数字证书和认证密钥的用途。 (2)政策信息扩展。政策信息扩展用于传达数字证书政策,这些扩展的使用与认证机构 所制定的准则有关。 (3)主体及发放者属性扩展。主体及发放者属性的扩展支持主体和发放者的备用名。它 们还可以传送关于主体的附加属性信息,以帮助数字证书用户确信数字证书适用于某个特定的 人、组织或设备。 (4)认证路径约束扩展。认证路径的约束扩展帮助不同的组织将他们的基础设施连接在 一起。当某一认证机构在对另一认证机构进行认证时,可以在数字证书中放入一些用以提醒数 字证书用户的信息,这些信息说明了从本数字证书出发可以产生的认证路径的类型约束。 (5)与数字证书撤销表相关的扩展。 3.5.5 数字证书的申请与发放 1.数字证书管理机构的作用 数字证书管理机构包括认证机构CA 和注册机构 RA。 认证机构CA 又称认证中心、证书授予机构,是承担网上认证服务,能签发数字证书并能 确认用户身份的受大家信任的第三方机构。CA 通常是企业性的服务机构,其主要任务是受理 数字证书的申请、签发及对数字证书进行管理。 认证机构是保证电子商务安全的关键,是公正的第三方,它为建立身份认证过程的权威 性框架奠定了基础,为交易的参与方提供了安全保障,为网上交易构筑了一个相互信任的环境, 解决了网上身份认证、公钥分发以及信息安全等一系列问题。 认证机构对含有公开密钥的证书进行数字签名,使证书无法伪造。每个用户都可以获得 认证机构的公开密钥,以此来验证任何一张数字证书的数字签名,从而确定该证书是否由某认 证机构签发的,该数字证书是否合法。数字证书与驾驶执照一样,用来表示个人的身份,且有 一定的有效期,有效期结束后必须重新申请。认证机构作为证书的发行机构具有一定的权威性,

(22)

因而数字证书被社会所承认和接受。 目前,在全球处于领导地位的认证机构是美国的VeriSign 公司。VeriSign 公司提供的数字 证书服务遍及世界各地,提供了我们在前面提到的所有三类数字证书,即个人数字证书、服务 器数字证书和开发者数字证书。 认证机构CA 负责对于数字证书的管理,认证机构与其用户或数字证书申请人间的交互工 作则是由注册机构RA 来完成的。一个认证机构可能对应了多个注册机构,而且这些注册机构 可能是分散在各处的。这是因为在发放数字证书时,申请人需亲自到场,出具自己的身份证明 文件、交换实物标记或进行生物测定,以此来确定申请人的身份。 注册机构本身并不发放数字证书,但注册机构可以确认、批准或拒绝数字证书申请人的 申请,随后由认证机构给经过批准的申请人发放数字证书。注册机构的主要功能如下: z 注册、注销、批准或拒绝对用户数字证书属性的变更要求。 z 对数字证书申请人进行合法性确认。 z 批准生成密钥对和数字证书的请求及恢复备份密钥的请求。 z 接受和批准撤销或暂停数字证书的请求(需要相应认证机构的支持)。 z 向有权拥有身份标记的人当面分发标记或恢复旧标记。 注册机构与认证机构可能是不同的法律实体,但也有些注册机构是认证机构的某一特殊 组成部分。 2.数字证书的申请注册 在电子商务环境中,数字证书可以发放给各种不同类型的实体,包括个人、组织和设备。 一般来讲,数字证书的申请注册从数字证书申请人提出请求发放数字证书的申请开始。 数字证书的申请注册手续在不同的环境中可能是各不相同的。例如,雇主在给其雇员发 放数字证书时,其注册过程可以是自动的。因为雇主对雇员是很了解的,由雇主管理的认证机 构很有可能可以对雇员数据库进行自动的和可靠的存取,从中获得代表雇员的注册信息并对其 进行确认。 在Internet 环境中,数字证书的申请注册大多是通过在线注册过程或全部地在线方式来进 行的。例如,用户可以利用Web 浏览器与充当认证机构服务前端的服务器进行在线注册。但 注册机构必须对用户进行合法性验证,以确定公钥值及其他的用户信息真正来自于该用户,且 在传送的过程中未被篡改过。注册机构还可能需要了解有关该用户的更多信息,这些信息可以 通过与用户间的在线对话来获得,也可通过查询第三方的相关数据库而获得。由于单纯通过在 线注册系统获得的确认信息是有一定的局限性的,因此,在更多的情况下,有些确认过程是在 网下进行的。例如,数字证书申请人向注册机构出具身份证明书,或由注册机构通过邮政服务 给数字证书申请人邮寄在以后的在线数字证书申请过程中提交命令所需要的秘密口令等。 一般来说,在批准和发放数字证书之前,由注册机构来对个人、设备和实体的身份及其 他指定属性(如特权、作用、权限等)进行确认是十分重要的。 身份确认可以通过下述方法来进行: z 了解私有信息:主体出具与之有关的私有信息。一般情况下,这是一些很简单的信息, 如账号或姓名加上口令或身份识别号。也有些情况下,可能需要一些其他信息,如最 后一次进行账户交易的日期。 z 亲自到场:一般认为,对一个令人信服的身份确认来说,很重要的一点是被确认人与

(23)

确认实体需进行面对面的交流。申请人亲自到场,使得认证机构或其代表不仅能证实 数字证书申请人的存在并了解其特点,而且还能了解申请人申请数字证书的目的,以 及了解申请人是否有能力遵守数字证书应用规则和进行数字证书的使用。例如,有时 可以评价申请人是成年人还是未成年人,能否理解数字证书语言以及对数字证书申请 人的要求等。一旦当面确定了身份,对大部分数字签名活动来说,就不再需要申请人 亲自到场了。 z 身份证明文件:认证机构或其代表可以要求申请人当面出具身份证明文件,以确认申 请人的身份。这些文件(特别是那些带有照片的身份证明证件,如护照、工作证或驾 驶证)一般认为都是可信任的。 3.数字证书的生成 数字证书的生成通过下列步骤实现: 数字证书申请人将申请数字证书所需要的数字证书内容信息提供给认证机构。 认证机构确认申请人所提交信息的正确性,这些信息将包含在数字证书中。 由持有认证机构私钥的签证设备给数字证书加上数字签名。 将数字证书的一个副本传送给用户,如果需要的话,用户在收到数字证书后返回一确认 信息。 将数字证书的一个副本传送到数字证书数据库如目录服务,以便公布。 作为一种可供选择的服务,数字证书的一个副本可以由认证机构或其他实体存档,以加 强档案服务、提供证据服务以及不可否认性服务。 认证机构将数字证书生成过程中的相关细节以及其他在数字证书发放过程中的原始活动 都记录在审计日志中。 4.数字证书的更新 每份数字证书的生命周期都是有限的。在整个生命周期中,认证机构有义务完成数字证 书的撤销。一般而言,在数字证书期满后需要更换数字证书。另外,密钥对也需要定期更换, 而一旦更换了密钥对,那就需要用新的数字证书。所以,数字证书的期满和数字证书的更新常 常与密钥对的期满和更新结合在一起。 有时,数字证书的更新对用户来说是透明的。例如,在那些由充当认证机构的组织来有 效控制用户数字证书的重要组织中,或者在那些对数字证书更新的原因是因为密钥对需要更新 的重要组织中,情况就是如此。出于对后一种情况的考虑,目前有些加密技术产品已经能够自 动识别出密钥对是否已到期,从而自动更新密钥对,并启动与认证机构间必须的通信对话,以 发放新的数字证书,而所有这些都无需用户的介入。 如果是在其他情况下更新数字证书,如,一些包含在数字证书中的用户身份确定信息有 了变动,或是认证机构规定用户必须定期确认数字证书中的细节信息,则一般就要由用户来进 行数字证书的更新。这时用户会收到更新数字证书的通知,确认数字证书更新申请的内容,并 接受新的数字证书。 3.5.6 数字证书的分发 在电子商务中,为了加密数据或验证数字签名,用户需要相应通信方的数字证书,还需 要相应认证机构的数字证书,以此来完成相应的验证,这就涉及到了一个数字证书的分发问题。

(24)

由于数字证书具有自我保护能力,所以不需要通过具有安全性保护的系统和协议来传送。 常用的数字证书分发方法有:通过数字签名来分发,或通过目录服务来分发。 1.利用数字签名分发数字证书 利用数字签名,可以方便地进行数字证书的分发。签名者通常拥有自己数字证书的一个 副本,他可以将该副本附加在数字签名中。这样,任何想检验数字签名的人就都可以拥有该数 字证书的副本。类似地,签名者也可以附加上其他必需的数字证书以证实自己数字证书的有效 性,例如,附加上其他认证机构给签名者的认证机构所发放的数字证书。目前,大多数使用数 字签名的通信协议都规定用这种方法来将数字证书附加在数字签名上。 不过,也有人反对将数字证书附在数字签名上,理由是,这可能会浪费通信和存储容量, 因为检验数字签名的通信方可能在本地已经拥有了必需的数字证书。因此,是否附加数字证书 或附加什么数字证书,一般由签名者来决定。 还有,假设从各个不同的检验者到签名者具有不同的认证路径,那么对签名者来说,判 断检验时到底需要哪些数字证书并不是一件容易的事情。因此,如果没有严格的认证机构结构 来保证从各个检验者到某个签名者之间只具有单一的认证路径,则要由签名者来保证将所有必 需的数字证书附在数字签名上是不切实际的。所以,检验者需要通过一种可靠的方法,如检索 目录或数字证书数据库,来获取所缺少的数字证书。 2.利用目录服务分发数字证书 在利用公钥技术加密信息时,信息的发送方必须首先获得所有接收方的认证公钥。虽然 可能因为以前曾经与信息的接收方有过交流,信息发送方碰巧在其本地存储着必需的数字证 书,因而不再需要接收方的数字证书。但在一般的情况下,信息的发送方必须去寻找必需的数 字证书。在这种情形下,目录服务或数字证书数据库对于数字证书的分发就显得非常有价值了, 因为信息的发送方可以通过目录检索来获得接收方的数字证书及其他的信息,如接收方的电子 邮件地址等。 在线的目录服务模型及其支撑协议标准是由国际电信联盟(International Telecommuni- cation Union,ITU)和国际标准化组织(International Organization for Standardization,ISO)共 同制订的。这些曾以ITU X.500 闻名的目录标准旨在支持全球规模的多用途分布式目录服务, 包含的范围从简单的名称—地址查询到浏览及关键属性查询应有尽有。X.500 目录可以给人 们、给通信网络组件、给计算机应用程序以及其他的自动系统充分的信息源。例如,对计算机 网络用户来说,可以根据人名来查询并返回如电话号码、电子邮件地址等信息,还可返回该用 户的设备所支持的应用协议的详细信息。 早在1984~1988 年间首次开发 X.500 标准时,人们就已经注意到了利用 X.500 的目录进 行数字证书分发的潜力,所以在该标准中包含了用X.500 来承担该角色时所需要的数据对象的 规范,同时还包括了围绕这一功能的管理流程的详细描述。这些资料都包含在X.509 规范中。 遗憾的是,X.500 在市场推广使用中并没有达到预期的目标,因为这种技术太复杂了,因 而其实施和配置的费用都太高。 在X.500 的基础上,人们随后开发了 Internet 自己的目录存取协议,称为轻型目录存取协 议LDAP(Lightweight Directory Access Protocol)。LDAP 在目录模型上与 X.500 相兼容,但比 X.500 协议更简单,实施起来也更友好。LDAP 协议是一种用于存取储存在目录中的信息,如 数字证书信息的有效的标准协议。需要注意的是,LDAP 只是一个存取协议,并不要求目录数

(25)

据库采用什么特殊的技术。IETF PKIX 工作组详细说明了通过 LDAP 来获取数字证书的过程。 在一些特殊的软件平台环境中,曾经利用专用的目录系统来分发数字证书,现在,这些 系统已进行了很大程度的移植,以支持LDAP 作为标准的存取协议。 分发数字证书的方法还有很多。由于数字证书不需要专门的安全保护,所以可以利用非 安全性的协议,通过不信任的系统来分发。例如,IETF PKIX 工作组有专门的协议用于使用 HTTP 和 FTP 在 Web 上请求和获取数字证书。此外,需要重复使用的数字证书还可以存储在 使用公钥的本地系统中。 3.5.7 公钥基础设施 PKI 为解决 Internet 的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的 Internet 安全解决方案,即目前被广泛采用的公钥基础设施 PKI。公钥基础设施(Pubic Key Infrastructure,PKI)又叫公钥体系,是一种利用公钥加密技术为电子商务的开展提供一套安 全基础平台的技术和规范,用户可利用PKI 平台提供的服务进行安全通信。 PKI 必须具有权威认证机构 CA 在公钥加密技术基础上对数字证书的产生、管理、存档、 发放以及撤销进行管理的功能,包括实现这些功能的全部硬件、软件、人力资源、相关政策和 操作程序,以及为 PKI 体系中的各成员提供全部的安全服务。如,实现通信中各实体的身份 认证、保证数据的完整性、不可否认性以及保密性等。 PKI 基础设施采用数字证书来管理公钥,通过第三方的可信任机构——认证机构 CA,把 用户的公钥和用户的其他标识信息捆绑在一起,在Internet 网上验证用户的身份。 从广义上讲,所有提供公钥加密和数字签名服务的系统,都可叫做PKI 系统,PKI 的主要 目的是通过自动管理密钥和数字证书,来为用户建立起一个安全的网络运行环境,使用户可以 在多种应用环境下方便地使用加密和数字签名技术,从而保证网上数据的机密性、完整性、有 效性。 一个有效的 PKI 系统必须是安全的和透明的,用户在获得加密和数字签名服务时,不需 要详细地了解 PKI 是怎样管理数字证书和密钥的。一般来说,一个典型、完整、有效的 PKI 应用系统应具有下述功能: z 公钥数字证书的管理。 z 证书撤销表的发布和管理。 z 密钥的备份和恢复。 z 自动更新密钥。 z 自动管理历史密钥。 z 支持交叉认证。 由于公钥基础设施是目前比较成熟、完善的Internet 网络安全解决方案,所以国外一些大 的网络安全公司纷纷推出了一系列基于PKI 的网络安全产品,如美国的 Verisign、IBM、加拿 大的Entrust 等,这些产品为电子商务的发展提供了安全保证。 3.5.8 CA 的结构 1.认证路径 如果能建立一个可以给世界上所有的用户发放数字证书的认证机构,并且所有的用户都

參考文獻

相關文件

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

学校现有教学仪器设备超过1亿元,学校图书馆纸质藏书125万册,电子图书

【20150302】今天是 2016 年度第一次交读书报告,第一次拿到书单时,感

打商务电话要用“您好”开头,多 说“请”字,以“谢谢”收尾。通话态 度要亲和,声音大小要适中,始终保持

微积分的创立是数学发展中的里程碑, 它的发展 和广泛应用开启了向近代数学过渡的新时期, 为研究 变量和函数提供了重要的方法和手段. 运动物体的瞬

为此, 我们需要建立函 数的差商与函数的导数间的基本关系式, 这些关系式称为“微分学中值定理”...

由以上论证可知,当框架保持静止时,松鼠在导轨 AB 上的运动是以 AB 的中点 O 为平 衡位置,振幅不大于 1m、周期为 2.64s 的简谐运动.. 解析