您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 电子商务安全-第3章
第3章电子商务签名技术3.1数字签名概述3.2RSA数字签名3.3DSS签名3.4哈希签名3.5几种特殊数字签名方法[本章要点]•数字签名是与伴随信息一起发送或与信息有一定逻辑关联的数据项,用来确定信息的发送源,确认信息自签名后未被修改过。•数字签名的方法包括基于RSA的方法、Hash签名、美国数字签名标准DSS以及椭圆曲线数字签名算法(ECDSA)。•此外,还介绍了在电子商务领域一些被广泛应用的特殊数字签名方法,如盲签名、双联签名、团体签名、不可争辩签名、数字时间戳等。3.1数字签名概念3.1.1数字签名概念3.1.2数字签名使用模式3.1.3数字签名的技术保障3.1.4数字签名方案分类3.1.5数字签名使用原理3.1.1数字签名概念•在书面文件上签名是确认文件的一种手段,其作用有两点:第一,因为自己的签名难以否认,从而确认了文件已签署这一事实;第二,因为签名不易仿冒,从而确定了文件是真的这一事实。•数字签名与书面文件签名有相同之处。数字签名就是用来确认电子信息的发送方和未被更改性的一种电子手段。数字签名可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息,或发出(收到)信件后又加以否认等情况发生。3.1.1数字签名概念•在电子商务中,完善的数字签名应具备签字方不能抵赖、他人不能伪造、在公证人面前能够验证真伪的能力。数字签名机制提供了一种鉴别方法,普遍用于银行、电子贸易等,以解决如下问题:1.身份认证。收方通过发方的电子签名才能够确认发方的确切身份,但无法伪造。2.保密。双方的通信内容高度保密,第三方无从知晓。3.完整性。通信的内容无法被篡改。4.不可抵赖。发方一旦将电子签字的信息发出,就不能再否认。3.1.1数字签名概念5.合法性。电子签名需要人们对其“签名”功能赋予合法的法律地位。如果电子签名法律问题不解决,交易安全就最终得不到保障,实际上电子商务就不具有实际意义。联合国《电子商务示范法》对电子记录的法律问题提出了一系列解决方案,分别就数据电文的法律承认、书面性、签名、原件、证据性、留存等做出了原则性的规定。该法还提出了许多有先见性的法律原则,例如,不歧视原则、功能等同原则、当事人自治原则等,使人们能够接受电子签名与传统的手书签名具有同样的合法性。3.1.1数字签名概念•值得说明的是,数字签名与数据加密完全独立。数据可以只签名或只加密,也可既签名又加密,当然,也可以既不签名也不加密。•实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA数据安全公司的公钥加密标准(PublicKeyCryptographyStandards,PKCS)、数字签名算法(DigitalSignatureAlgorithm,DSA)、x.509、PGP。1994年美国标准与技术协会公布了数字签名标准而使公钥加密技术广泛应用。3.1.2数字签名使用模式目前使用的电子签名主要有三种模式:(1)智慧卡式。(2)密码式。(3)生物测定式。3.1.3数字签名的技术保障普遍使用的电子签名技术是基于PKI的数字签名技术,PKI技术的详细介绍请参看本教材第8章,数字签名的基础保障主要有以下四个方面:1.认证机构CA2.数字证书3.公钥密码技术4.数字摘要3.1.4数字签名方案分类应用广泛的数字签名方法主要有三种,即:RSA签名、DSS签名和Hash签名。此外,也有使用对称密码算法实现数字签名。这四种算法可单独使用,也可综合在一起使用。数字签名是通过密码算法对数据进行加、解密变换实现的,用DES算去、RSA算法都可实现数字签名。但三种技术或多或少都有缺陷,或者没有成熟的标准。•1.RSA签名•2.DSS签名•3.Hash签名•4.对称密码算法签名3.1.4数字签名方案分类•安全的数字签名使接收方可以得到保证:文件确实来自声称的发送方。鉴于签名私钥只有发送方自己保存,他人无法做一样的数字签名,因此他不能否认他参与了交易。•数字签名的加密解密过程和私有密钥的加密解密过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。•这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性,而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。在实用过程中,通常一个用户拥有两个密钥对,另一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。这种方式提供了更高的安全性。•在实际运用中,直接用公开密码的私钥对文件进行签字并不完全可行,如果需要对相当长的文件进行签名认证速度就太慢。通常的解决办法是引入可公开的密码。3.1.4数字签名使用原理3.2RSA数字签名RSA方法的加密算法和解密算法互为逆变换,所以可用于数字签名系统。RSA是最流行的数字签名方法,许多产品内核中都有RSA的软件和类库。RSA算法在第2章已有详细介绍。3.2RSA数字签名•RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的。•用RSA或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。3.2RSA数字签名•RSA方法的加密算法和解密算法互为逆变换,所以可用于数字签名系统。假定用户的公开钥是(nA,eA),秘密钥是dA,加密和解密变换分别为EA和DA,则A发送的签名后的消息是M′≡DA(M)≡M^dA(modnA)。•收到M′后的B,可以用A的公开变换EA恢复M:•EA≡EA(M)≡M^(dAeA)(modnA)•因为只有A知道dA,所以签名不可能伪造,并且A与B之间的任何争议都可以通过仲裁加以解决。•在具体环境中,RSA算法中数字签名技术实际上是通过一个哈希函数来实现的,其原理如图3-1所示。3.2RSA数字签名dAeA图3-1RSA签名原理3.2RSA数字签名其操作步骤如下:①使用散列编码将发送文件加密产生固定长的数字摘要;②发送方用自己的专用密钥对摘要再加密,形成数字签名;③将原文和加密的摘要同时传给对方;④接收方用发送方的公共密钥对摘要解密,同时对收到的文件用散列编码加密产生同一摘要;⑤将解密后的摘要和收到的文件在接受方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的。3.3DSS签名美国国家标准技术研究所已经公布了联邦信息处理标准FIPSPUB186,即所谓的数字签名标准(DigitalSignatureStandard,DSS)。DSS利用了安全散列算法(SecureHashAlgrithm,SHA)并提出了一种新的数字签名技术,即数字签名算法(DigitalSignatureAlgrithm,DSA)。DSS最早发表于1991年,并根据公众对该体制安全性担心的反应在1993年进行了修改。1996年由进行了更进一步的小修改。3.3.1DSS基本原理•DSA算法设计用来提供唯一的数字签名函数,不像RSA还可用作加密和密钥交换。DSS方法也利用了一个散列函数。散列码和一个用作这个特殊签名的随机数K作为签名函数的输入。签名函数还依赖于发方的私有密钥(KRa)和与其通信的多个通信实体的公钥组成的全局公开密钥集合(KUG)。结果是签名由两个分量组成,记为s和r。•在接收端,将计算所收到报文的散列码,该哈希值的签名和消息M将作为验证函数的输入。验证函数依赖于全局公开密钥和与发方私有密钥配对的发方公开密钥。如果签名是有效的,验证函数的输出值就等于签名分量r。3.3.1DSS基本原理图3-2DSS原理DSA签名和RSA签名一样不存在哈希签名的局限性,因为他们都采用了公钥算法,即每个人都有两个密钥,其中一个产生签名,并秘密保存,另一个公开,用来验证签名。3.3.2数字签名算法•数字签名算法DSA是Schnorr和ElGamal签名算法的变种,DSA是基于离散对数的难度。•1.DSA算法参数说明•DSA算法中应用了下述参数:•p:Lbits长的素数。L是64的倍数,范围是512到1024;•q:p-1的160bits的素因子;•g:g=hp-1modp,h满足hp-1,h(p-1)/qmodp1;•x:1xq,x为私钥;•y:y=gxmodp,(p,q,g,y)为公钥;•H(x):单向Hash函数。在DSS中选用安全散列算法(SecureHashAlgorithm,SHA)。•p,q,g:可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。3.3.2数字签名算法•2.签名及验证协议•签名及验证协议如下:•(1)P产生随机数k,kq;•(2)P计算r=(gkmodp)modq和s=(k-1(H(m)+xr))modq•签名结果是(m,r,s)。•(3)验证时•计算w=s-1modq•计算u1=(H(m)w)modq•计算u2=(rw)modq•计算v=((gu1yu2)modp)modq•若v=r,则认为签名有效。3.3.2数字签名算法•DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,也能确认它们是否是随机产生的。而RSA算法却作不到。图3-3描述了DSS的签名和验证函数。3.4哈希签名•Hash签名是利用哈希函数(Hashfunction,也叫摘要函数,散列函数)进行数字签名的一种方法。Hash签名是当前最主要的数字签名方法之一,也称之为数字摘要法(DigitalDigest)或数字指纹法。它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。将一个商务合同的个体内容与签名结合在一起,比合同和签名分开传递,更增加了可信度和安全性。3.4哈希签名•Hash函数与加密函数类似。事实上有些Hash函数就是稍加修改的加密函数。大多数函数的作法是每次取一个数据块,对数据块的每一位用一个简单的编码函数进行编码。Hash算法的工作方式类似通信协议中的校验和;发信方将一个数据包的所有字节加起来,将和添加在包上;收信方执行同样的运算并比较两个和,以决定是否被正确地传输。校验算法的主要作用是根据报文内容通过单向的Hash算法计算出一个校验来,如果报文被改动或增减,无法根据同样的算法算出相同的校验来。一般在实际应用中,对于只有数据完整性要求的数据只对其校验进行加密就可以了,这样能够大大减少数据加密的工作量。一个Hash函数满足:①H可以作用于一个任意长度的数据块;②H产生一个固定长度的输出;③H(x)对任意给定的x计算相对容易,无论是软件还是硬件实现;④对任意给定码h,找到x满足H(x)=h具有计算不可行性;⑤对任意给定的数据块x,找到满足H(y)=H(x)的yx具有计算不可行性;⑥找到任意数据对(x,y),满足H(x)=H(y)是计算不可行的。3.4哈希签名•单向Hash函数是在一个方向上工作的Hash函数,从预映射的值很容易计算其Hash值,但要产生一个预映射的值使其Hash值等于一个特殊值却是很难的。好的hash函数也是无冲突的:难于产生两个预映射的值,使他们的hash值相同。•Hash函数是公开的,对处
本文标题:电子商务安全-第3章
链接地址:https://www.777doc.com/doc-3349710 .html