散对数问题难解,E和P是公共参数。
椭圆曲线Diffie-Hellman密钥协商协议如下:
? Alice随机选择a,满足1?a?n,计算Q:=aP并把Q传送给Bob。 ? Bob随机选择b,满足1?b?n,计算R:=bP并把R传送给Alice。 ? Alice计算共享密钥k:=aR:=abP。 ? Bob计算共享密钥k:=bQ:=abP。
例3-13 椭圆曲线Diffie-Hellman密钥协商示例。
设有限域F11上的椭圆曲线为E:y2≡x3+x+6(mod 11),其中,p=11,椭圆曲线E上点的个数n = 13, P(2,7)是椭圆曲线E的生成元。
1) Alice随机选择a:=3,计算Q:=aP:=3(2,7):=(8,3),并把Q=(8,3)传送给Bob。 2) Bob随机选择b:=6,计算R:=bP:=6(2,7):=(7,9),并把R=(7,9)传送给Alice 。 3) Alice计算共享密钥k:=aR:=3(7,9):=(3,6)。 4) Bob计算共享密钥k:=bQ:=6(8,3):=(3,6)。 (3)端—端协议
端—端(Station-to-Station)协议是1992年由Diffie、Oorschot和Wiener提出的,结合了Diffie-Hellman密钥协商和认证,增加了通信双方实体间的相互认证和密钥的相互确认。
假设p是一个足够大的素数,g是Z*p中的本原根,p和g是公开的。Alice有密钥对(skA,pkA),skA为私钥,pkA为公钥。Bob有密钥对(skB,pkB), skB为私钥,pkB为公钥。
端—端协议的实现过程如下(如图3-16所示):
? Alice随机选择a,满足1?a?p-1,计算c:=ga并把{c}传送给Bob。
? Bob随机选择b,满足1?b?Sp-1,计算d: =gb,k:= cb:=gab,然后Bob用私钥skB和签名算
法Sign对ga和gb进行签名,得到签名sB:=SignskB (ga|| gb),然后把{d,Ek(sB)}传送给Alice。 ? Alice收到{d,Ek(sB)}后,计算k:=da:= gab,解密Ek(sB)得到sB,并用Bob的公钥pkB和验证算法
Verify验证签名sB。如果验证成功,Alice认为她与Bob共享密钥k。然后,Alice用私钥skA和签名算法Sign对gb和ga进行签名,得到签名sA:=SignskA (gb || ga),然后把{Ek(sA)}传送给Bob。
? Bob收到{Ek(sA)}后,解密{Ek(sA)}得到sA,并用Alice的公钥pkA和验证算法Verify验证签名sA。
如果验证成功,Bob认为他与Alice共享密钥k。 (4)公钥证书
数字证书在公钥管理技术中扮演了重要角色,使公钥能通过不安全的媒介存储和传输而不会被篡改。数字证书由可信任的签证机构CA (Certification Authority)使用公钥签名方案签署。每个人都知道签证机构的公钥。签证机构的公钥可以用于验证由该签证机构签署的证书。
公钥证书(Public Key Certificate)是一种包含持证主体标识、持证主体公钥等信息,并由可信任的签证机构CA签署的信息集合。公钥证书主要用于确保公钥及其与用户绑定关系的安全。
公钥证书能以明文的形式进行存储和分配,任何一个用户只要知道可信任的签证机构CA的公钥,就能验证证书的合法性。如果验证正确,那么用户就可以相信该证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。
存储在公钥证书中的最重要的信息有: ? 证书持有者的标识; ? 证书持有者的公钥; ? 签证机构的标识; ? 证书的序列号; ? 证书的有效期; ? 签证机构的签名。
可信的签证机构CA的主要任务是:验证与一个公钥相连的实体的真实性,把每个公钥和可识别的名字绑定并注册,为实体颁发公钥证书。当用户Alice向可信的签证机构CA申请公钥证书时,Alice需要向CA证明身份,产生公钥和私钥对,并把公钥的一个副本交给CA,或者由CA产生公钥和私钥对,并把私钥交给Alice,然后,CA把公钥和必需的信息一起放在证书里,用CA的私钥签名证书。
Alice可以把公钥证书存储在家里,当需要的时候再把证书提供出来。在开放系统中,一种更好的存储公钥证书的方法是证书目录。Alice可以把公钥证书存储在证书目录里以方便查寻。证书目录是一种分布式数据库,通常由可信的签证机构CA维护,以确保证书的搜寻和检索的可信。
如果Bob想加密一条消息给Alice或者验证三个据称是Alice产生的签名,Bob可以从证书目录或者从Alice那儿检索证书并验证签证机构的签名。如果验证成功,Bob确信从证书中得到了Alice的公钥并且可以使用这个公钥。
如果Alice的私钥泄露了,对应的公钥就再也不能用来加密消息了,同时,Alice再也不能用这个私钥签署任何消息。而且,Alice可能否认从此以后用这个私钥产生的任何签名。因此,Alice私钥泄露的事实必须被公布。当然,签证机构需要从证书目录里撤销Alice的证书。然而,证书可能已经被检索,并且还没有过期,不可能通知所有持有Alice证书副本的用户,因为签证机构不知道这些用户。对这个问题的一种解决办法是维护一个证书撤销列表。证书撤销列表登记了相应被撤销的证书的名单。为了保证可信性,签证机构必须对列表签名。
公钥密码技术与对称密钥技术的最大区别就是:用公钥技术加密消息,通信双方不需要事先通过共享的安全信道协商密钥。加密方只要得到接收方的公开密钥就可以加密消息,并将加密后的消息发送给接收方。由于公钥是公开的,因此需要一种机制来保证用户得到的公钥是正确的,即需要保证一个用户的公钥在发布的时候是真实的,在发布以后不会被恶意篡改。公钥管理技术为公钥的分发提供可信的保证。 3.4 本章小结
密码学的主要任务是保证消息的保密性,防止截获者获得有关明文的信息。对称密钥算法主要用来解决保密性和数据完整性问题,公开密钥算法主要用来解决对称密钥算法不能解决的密钥分发和不可否认问题。在实际应用中,只有解决了密钥分发问题才能很好地运用对称密钥和公开密钥密码系统。 习题
3.1 密码学的研究目标有哪些? 3.2 解释什么叫做“不可否认性”。
3.3 解释公钥密码体制的加密、解密原理。
3.4 基于共享密钥的加密方法与基于公钥的加密方法的区别是什么?
3.5 比较DES与RSA两种加密算法,并举例说明其分别适合于哪些应用? 3.6 说明3DES的加密、解密原理。
3.7 赵亮有一个他声称来自李明的消息,并且他出示了相应的明文私密文。明文对应的密文是用赵亮和
李明共享的密钥加密得到的。试说明为什么这不能满足消息来源的不可否认性? 3.8 设RSA密码的p=3, q=11, d=7, m=5,手算密文。为多少? 3.9 简述Diffie-Hellman密钥协商原理。
3.10 认证机构的任务是什么?证书中包含哪些主要数据?
第4章 数字签名
随着信息技术的蓬勃发展,数字签名越来越多地代替手写签名应用于电子交易、电子政务、密钥分配等领域,实现对信息的签署和鉴别。数字签名提供了一系列行之有效的安全措施,这些措施是其他方式很难达到的。本章将详细介绍数字签名的基本思想和方法。 4.1 数字签名概述
数字签名是现代密码学的一个重要发明,其初衷就是实现在网络环境中对手工签名和印章的模拟。在实际应用中,数字签名比手工签名具有更多的优势,因此在电子政务、电子银行、电子证券等领域有着重要的应用。 4.1.1 数字签名的概念
数字签名的概念最早在1976年由W. Diffie和M.Hellman提出,其目的是使签名者对文件进行签署且无法否认该签名,而签名的验证者无法篡改已被签名的文件。1978年,Rivest, Shamir和Adleman给出了数字签名的具体应用方案。
简单地说,数字签名的功效与手写签名类似,它对数字信息进行密码变换,使得数据的接收者可以确认数据的来源和完整性;它可以解决电子文件签署盖章等问题,实现电子文件的完整性、可靠性和不可抵赖性。
从技术本质上讲,数字签名是一个字符串,它将一条数字形式的消息与某发送者实体进行关联。数字签名实现的基础是加密技术,它依赖于只有签名者知道的某个特定值以及待签的消息内容。
数字签名技术既可以基于公钥密码系统,也可以基于对称密码系统,目前以公钥密码系统的数字签名为主。基于公钥的数字签名,发送者的公钥可以很方便地得到,而私钥则需要发送者秘密保有。 4.1.2 数字签名的功能与性质
数字签名技术在网络中可以作为保障安全的一种有效手段,它可以帮助用户抵制信息的伪造、篡改、重放、抵赖等威胁,还可以保证消息的保密性。
①采用公钥的数字签名技术可以防范信息伪造。由于私钥由签名者秘密保管,所以由该私钥进行签名的文件可以表示该签名者的身份,任何其他人都不可能正确地伪造出该签名结果。
②在防范信息篡改方面,数字签名比手工签名更具有优势。假如有一份上百页的文件需要签署,为了保证文件不被篡改,需要在文件的每一页上进行签署,显然这样做很繁琐。数字签名技术使用户签名与文件成为一个整体,任何改动都会对签名结果产生影响。因此数字签名技术可以更有效地防止文件的篡改。
③在防范信息重放方面,数字签名具有很重要的作用。例如,在债务方面,数字签名可以防止债主重复利用一张收据对借款人进行勒索。因为数字签名可以利用对借条添加流水账号和时间戳等技术来有效防止重放攻击。
④数字签名可以有效防止签名者抵赖曾经签署过文件,从而实现防范抵赖。同时也要有相关措施防止接收者抵赖已经接收到了文件。可以要求接收者回送一个报文表明收到了文件,或者引入第三方仲裁机制。这样收发双方都无法抵赖曾经发送或者接收过文件。
由数字签名的这些功能,可以总结出数字签名的性质。
性质1:数字签名是无法伪造的。签名中应该包括签名者若干个表征唯一特性的信息,从而使接收方能够验证签名是否真实有效。
性质2:数字签名是无法被重用的。签名者对某一个文件签名表明只对该文件负责,而该签名不能被移植到其他文件上。
性质3:被签名的文件内容是无法改变的。因为签名者需要对所签文件的内容负责,因此当签名生效后,文件内容就不能改动。
性质4:数字签名是无法抵赖的。只要签名者对某一文件进行了签署,则签名者就无法声称自己没
有对此文件签名。 4.1.3 数字签名与手写签名
数字签名是手写签名的数字模拟,但这种模拟不是简单的替代,尤其是当发送方和接收方互相不完全信任的时候。数字签名在许多方面比手写签名更具有安全性。但就签名的本质而言,两者都需要具有以下特性:
1)不可否认性:必须可以通过签名来验证消息的发送者、签名日期和时间。 2)不可抵赖性:必须可以通过签名对所签署消息的内容进行认证。 3)可仲裁性:必须可以由第三方通过验证签名来解决争端。
虽然,数字签名和手写签名在某些要求上具有相同的特性,但是,在复杂而虚拟的网络环境中,数字签名更为适用,起着更重要的作用。它与手写签名有不同之处,且很多方面是手写签名很难达到的。主要不同有:
? 签名的对象不同。手写签名的对象是纸质的文件,而数字签名的对象是传输在网络中的数字信
息,是肉眼不可读的。
? 实现的方法不同。手写签名是将一串字符串附加在文件上,数字签名则是对整个消息进行某种
运算。这一点在防篡改方面就凸显出数字签名的优势。数字签名与文件成为一个整体,任何改动都会对整个签名结果产生影响,从而免去了手写签名需要对文件的每一页进行手签的繁琐劳动。因此数字签名技术可以更有效地防止文件的篡改。
? 验证的方式不同。手写签名的验证是通过和一个已有的签名进行对比,而模仿他人签名不是一
件极其困难的事情,所以它的安全性得不到有效的保证。数字签名的验证则是通过一种公开的验证算法对签名进行计算,任何不一致都会被发现,因此具有很高的安全性。
? 另外,在保证机密性方面,数字签名比手写签名更具有优势。因为数字签名可以实现对文件的
加密,这样文件内容的机密性就得到了保证。显然手工签名很难实现这一点。
综上所述,数字签名比手写签名具有更高的安全性,因此在电子政务、电子商务等重要场合中发挥着不可估量的作用。并且,数字签名技术结合认证技术可以解决单凭认证技术无法解决的一些问题。 4.1.4 对数字签名的攻击
对于数字签名发起攻击的主要目的是伪造合法的数字签名。按照被攻破的程度,攻击可以分为三种类型:
? 完全攻克,即攻击者能计算出私钥或者能找到一个产生合法签名的算法,从而可以对任何消息
产生合法的签名;
? 选择性攻克,即攻击者可以实现对某些特定的消息构造合法的签名;
? 存在性伪造,即攻击者能够至少伪造出一个消息的签名,但对该消息几乎没有控制力。 按照攻击途径,攻击可分为四种不同类型:
? 唯密钥攻击,即攻击者只知道签名者的公钥;
? 已知消息攻击,即攻击者可以获得签名者用同一密钥对若干不同消息的签名,但消息不能由攻
击者自由选择;
? 选择消息攻击,即攻击者可以自由选择若干消息,并获得这些消息的签名,但是这些消息是在
产生签名前就已经选定的;
? 适应性选择消息攻击,即攻击者可以自由选择一个消息,获得其签名,经过分析后,再选择一
个对他有利的消息再次获得该消息的签名,如此反复,直到能够攻破系统。 4.2 数字签名体制
信息系统中的威胁时时存在且形形色色,而数字签名需要在此环境中保证信息传输的完整性,并且对发送者身份进行认证,以及防止交易中的抵赖行为。因此,需要完善的数字签名体制以实现这些功能。