资源描述
第3章 数字签名和认证技术 3.1 报文鉴别报文鉴别 3.2 散列函数散列函数 3.3 数字签名体制数字签名体制 3.4 身份认证技术身份认证技术 3.5 身份认证的实现身份认证的实现 3.1 报文鉴别报文鉴别 信息网络安全的威胁来自两个方面:一方面是被动攻击,对手通过侦听和截取等手段获取数据;另一方面是主动攻击,对手通过伪造、重放、篡改、乱序等手段改变数据。报文鉴别的方式主要有:1)报文加密函数。加密整个报文,以报文的密文作为鉴别。2)报文鉴别码。依赖公开的函数对报文处理,生成定长的鉴别标签。3)散列函数。将任意长度的报文变换为定长的报文摘要,并加以鉴别。3.1.1 报文鉴别概述报文鉴别概述鉴别是验证通信对象是原定的发送者而不是冒名顶替者的技术。既,通信的接收方能够鉴别验证所收到的报文的真伪。1、报文源的鉴别接收方使用约定的密钥(由发方决定)对收到的密文进行解密,并且检验还原的明文是否正确,根据检验结果就可以验证对方的身份。2、报文宿的鉴别只要将报文源的鉴别方法稍作修改,便可使报文的收方(报文宿)能够认证自己是否是指定的收方。既在将接收方的某种标识(如标识符、通行字等),加入到报文中。3、报文时间性的鉴别报文的时间性即指报文的顺序性。报文时间性的鉴别是指收方在收到一份报文后,需要确认是否保持正确的顺序,有无断漏和重复。4、报文内容的鉴别对报文内容进行鉴别是十分重要的。报文内容的鉴别使收方能够确认报文内容是否真实。在1992年RFC1321公布了MD报文摘要算法的细节。这是Rivest(即RSA中的第一个人“R”)提出的第5个版本的MD。此算法可对任意长的报文进行运算,然后得出128bit的MD代码。3.2 散列函数散列函数散列函数(Hash)又称哈希函数,是把任意长度的报文(消息)M通过函数H变换为一个固定长度的散列码h,散列函数表示为hH(M),它生成报文所独有的“指纹”。散列函数是一种算法,算法输出的内容称为散列码(值)或称报文摘要(也称数字摘要)。报文摘要就像该报文的数字指纹,唯一地对应原始报文,如果原始报文改变并且再次通过散列函数,它将生成不同的报文摘要,因此,散列函数能用来检测报文的完整性,保证报文从建立开始到收到始终没有被改变和破坏。运行相同算法的接收者应该收到相同的报文摘要,否则报文是不可信的。散列函数是公开的,一般不涉及保密密钥。少量的密钥的散列函数可以作为计算报文的认证码等其他用途,因其有密钥而具有一定的身份鉴别功能。3.2.1单向散列函数对于单列函数hH(M),函数H是单向函数,即为单向散列函数。单向函数:设函数 y=f(x)如果不存在这样一个函数 F(y)=F(f(x)=x 那么f就是一个单项函数 单向函数是进行数据加密/编码的一种算法单向函数一般用于产生消息摘要,密钥加密等,常见的有:MD5(MessageDigestAlgorithm5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;SHA(SecureHashAlgorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;MAC(MessageAuthenticationCode):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。CRC(CyclicRedundancyCheck):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测的一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。单向散列函数性质:1)广泛适用性。函数H适用于任何大小的数据分组。2)码长固定性。函数H产生定长输出,一个短报文的散列与百科全书报文的散列将产生相同长度的散列码。3)易计算性。对于任何数据M,计算H(M)是容易的。4)单向不可逆性。无法根据散列码倒推报文,这就是单向函数的性质。5)弱单向性。对于任意给定的数据X,要计算出另一个数据Y,使H(X)H(Y),这在计算上是不可行的。6)强单向性。要寻找任何一对数据(X,Y),使得H(X)=H(Y),这在计算上是不可行的。3.3 数字签名体制数字签名体制数字签名是通信双方在网上交换信息用公钥密码防止伪造和欺骗的一种身份认证。数字签名(或称电子加密)是公开密钥加密技术的一种应用。其使用方式是:报文的发送方从报文文本中生成一个128位的散列值(即哈希函数,根据报文文本而产生的固定长度的单向哈希值。有时这个单向值也叫做报文摘要,与报文的数字指纹或标准校验相似)。发送方用自己的专用密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。数字签名机制提供了一种鉴别方法,通常用于银行、电子贸易方面等,以解决如下问题:(1)伪造:接收者伪造一份文件,声称是对方发送的;(2)抵赖:发送者或接收者事后不承认自己发送或接收过文件;(3)冒充:网上的某个用户冒充另一个用户发送或接收文件;(4)篡改:接收者对收到的文件进行局部的篡改。数字签名不同于手写签名。数字签名随文本的变化而变化,手写签名反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签名是附加在文本之后的,与文本信息是分离的。数字签名技术应满足的要求数字签名技术应满足的要求消息认证的作用是保护通信双方以防第三方的攻击,但是却不能保护通信双方的一方以防另一方的欺骗或伪造。通信双方之间也可能有多种形式的欺骗,有可能发生以下欺骗:()B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后声称该消息来自于A。()由于B有可能伪造A发来的消息,因此A就可以对自己发过的消息予以否认。这两种欺骗在实际的网络安全中都有可能发生,例如在电子资金传输中,收方增加收到的资金数,并声称这一数目来自发方。又如用户通过电子邮件向证券经纪人发送对某笔业务的指令,以后这笔业务赔钱了,用户就可否认曾发过相应的指令。因此在收发双方未建立起安全的信任关系且存在利害冲突的情况下,单纯的消息认证就显得不够。数字签名技术则可有效地解决这一问题。1.数字签名应具有的性质数字签名应具有的性质(1)能够验证签名产生者的身份,以及产生签名的日期和时间;(2)能用于证实被签消息的内容;(3)数字签名可由第三方验证,从而能够解决通信双方的争议。2.数字签名应满足的要求数字签名应满足的要求(1)签名的产生必须使用发方独有的一些信息以防伪造和否认;(2)签名的产生应较为容易;(3)签名的识别和验证应较为容易;(4)对已知的数字签名构造一新的消息或对已知的消息构造一假冒的数字签名在计算上都是不可行的。目前已有多种数字签名体制,所有这些体制可归结为两类:直接方式的数字签名和具有仲裁方式的数字签名。直接方式的数字签名技术直接方式的数字签名技术直接方式的数字签名只有通信双方参与,并假定接收一方知道发方的公开密钥。数字签名的形成方式可以用发方的秘钥加密整个消息或加密消息的杂凑值。如果发方用收方的公开密钥(公钥加密体制)或收发双方共享的会话密钥(单钥加密体制)对整个消息及其签名进一步加密,那么对消息及其签名更加提供了保密性。而此时的外部保密方式(即数字签名是直接对需要签名的消息生成而不是对已加密的消息生成,否则称为内部保密方式),则对解决争议十分重要,因为在第三方处理争议时,需要得到明文消息及其签名才行。但如果采用内部保密方式,那么,第三方必须在得到消息的解密密钥后才能得到明文消息。如果采用外部保密方式,那么,接收方就可将明文消息及其数字签名存储下来以备以后万一出现争议时使用。直接方式的数字签名有一弱点,即方案的有效性取决于发方秘钥的安全性。如果发方想对自己已发出的消息予以否认,就可声称自己的秘钥已丢失或被盗,认为自己的签名是他人伪造的。对这一弱点可采取某些行政手段,在某种程度上可减弱这种威胁,例如,要求每一被签的消息都包含有一个时间戳(日期和时间),并要求密钥丢失后立即向管理机构报告。这种方式的数字签名还存在发方的秘钥真的被偷的危险,例如敌方在时刻T偷得发方的秘钥,然后可伪造一消息,用偷得的秘钥为其签名并加上T以前的时刻作为时戳。具有仲裁方式的数字签名技术具有仲裁方式的数字签名技术上述直接方式的数字签名所具有的威胁都可通过使用仲裁者得以解决。和直接方式的数字签名一样,具有仲裁方式的数字签名也有很多实现方案,这些方案都按以下方式运行:发方X对发往收方Y的消息签名后,将消息及其签名先发给仲裁者A,A对消息及其签名验证完后,再连同一个表示已通过验证的指令一起发往收方Y。此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用并应取得所有用户的信任。3.数字证书数字证书 数字签名很重要的机制是数字证书(Digital Certificate,或DigitalID),数字证书又称为数字凭证,是用电子手段来证实一个用户的身份和对网络资源访问的权限。在网上的电子交易中,如双方出示了各自的数字凭证,并用它来进行交易操作,那么双方都可不必为对方身份的真伪担心。数字凭证可用于电子邮件、电子商务、群件、电子基金转移等各种用途。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的数字证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下,数字证书中还包括密钥的有效时间、发证机关(证书授权中心)的名称、证书的序列号等信息,证书的格式遵循ITUTX.509国际标准。1)X.509数字证书包含的内容(1)证书的版本信息;(2)证书的序列号,每个证书都有一个惟一的证书序列号;(3)证书所使用的签名算法;(4)证书的发行机构名称,命名规则一般采用X.509格式;(5)证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为19502049;(6)证书所有人的名称,命名规则一般采用X.509格式;(7)证书所有人的公开密钥;(8)证书发行者对证书的签名。2)数字证书的三种类型(1)个人凭证(PersonalDigitalID)它仅仅为某一个用户提供凭证,以帮助其个人在网上进行安全交易操作。个人身份的数字凭证通常是安装在客户端的浏览器内的,并通过安全的电子邮件(S/MIME)来进行交易操作。(2)企业(服务器)凭证(ServerID)它通常为网上的某个Web服务器提供凭证,拥有Web服务器的企业就可以用具有凭证的Web站点(WebSite)来进行安全电子交易。有凭证的Web服务器会自动地将其与客户端Web浏览器通信的信息加密。(3)软件(开发者)凭证(DeveloperID)它通常为因特网中被下载的软件提供凭证,该凭证用于微软公司的Authenticode技术(合法化软件)中,以使用户在下载软件时能获得所需的信息。上述三类凭证中前两类是常用的凭证,第三类则用于比较特殊的场合。大部分认证中心提供前两类凭证,能提供各类凭证的认证中心并不普遍。3.3.5 数字签名的发展方向数字签名的发展方向数字签名作为电子商务的应用技术,越来越得到人们的重视,它涉及的关键技术也很多,并且很多新的协议(如网上交易安全协议SSL、SET协议)都会设计数字签名。究竟使用哪种算法、哪种Hash函数,以及数字签名管理、在通信实体与可能有的第三方之间使用协议等等问题都可以作为新的课题。3.4 身份认证技术身份认证技术 认证(Authentication)又称为鉴别、确认,它是证实某人或某物是否名副其实或有效的过程。认证是防止主动攻击的重要技术。实际上,网络中的通信除需要进行消息的认证外,还需要建立一些规范的协议对数据来源的可靠性、通信实体的真实性加以认证,以防止欺骗、伪装等攻击。身份认证是通信双方在实质性数据传输之前进行审查和证实对方身份的操作。认证中心(CA,CertificateAuthority)在网络通信认证技术中具有特殊的地位。例如,电子商务,认证中心是为了从根本上保障电子商务交易活动顺利进行而设立的,主要是解决电子商务活动中参与各方的身份、资信的认定,维护交易活动的安全。CA是提供身份验证的第三方机构,通常由一个或多个用户信任的组织实体组成。例如,持卡人(客户)要与商家通信,持卡人从公开媒体上获得了商家的公开密钥,但无法确定商家不是冒充的(有信誉),于是请求CA对商家认证。此时,CA对商家进行调查、验证和鉴别后,将包含商家公钥的证书传给持卡人。同样,商家也可对持卡人进行验证,其过程为持卡人商家;持卡人CA;CA商家。证书一般包含拥有者的标识名称和公钥,并且由CA进行数字签名。CA的功能主要有:接收注册申请、处理、批准/拒绝请求、颁发证书。在实际运作中,CA也可由大家都信任的一方担当,例如,在客户、商家、银行三角关系中,客户使用的是由某个银行发的卡,而商家又与此银行有业务关系(有帐号)。在此情况下,客户和商家都信任该银行,可由该银行担当CA角色,接收和处理客户证书和商家证书的验证请求。又例如,对商家自己发行的购物卡,则可由商家自己担当CA角色。3.2.1 相互认证技术相互认证技术A、B两个用户在建立共享密钥时需要考虑的核心问题是保密性和实时性,为了防止会话密钥的伪造或泄露,会话密钥在通信双方之间交换时应以密文形式出现,所以通信双方事先就应有密钥或公开密钥。第二个问题实时性则对防止消息的重放攻击极为重要,实现实时性的一种方法是对交换的每一条消息都加上一个序列号,一个新消息仅当它有正确的序列号时才被接收。但这种方法的困难性是要求每个用户分别记录与其他每一用户交换的消息的序列号,这样做,增加了用户的负担,所以序列号方法一般不用于认证和密钥交换。保证信息的实时性常用以下两种方法:(1)时间戳如果A收到的消息包括一时间戳,且在A看来这一时间戳充分接近自己的当前时刻,A才认为收到的消息是新的并接收之。这种方案要求所有各方的时钟是同步的。(2)询问应答用户A向B发出一个一次性随机数作为询问,如果收到B发来的消息(应答)也包含一正确的一次性随机数,A就认为B发来的消息是新的并接收之。其中时间戳法不能用于面向连接的应用过程,这是由于时间戳法在实现时有它的困难性。首先是需要在不同的处理器时钟之间保持同步,那么所用的协议必须是容错的以处理网络错误,并且是安全的以对付恶意攻击。第二,如果协议中任一方的时钟出现错误而暂时地失去了同步,则将使敌方攻击成功的可能性增加。最后还由于网络本身存在着延迟,因此不能期望协议的各方能保持精确的同步。所以任何基于时间戳的处理过程,协议等都必须允许同步有一个误差范围。考虑到网络本身的延迟,误差范围应足够大,考虑到可能存在的攻击,误差范围又应足够小。而询问应答方式则不适合于无连接的应用过程,这是因为在无连接传输以前需经询问应答这一额外的握手过程,与无连接应用过程的本质特性不符。对无连接的应用程序来说,利用某种安全的时间服务器保持各方时钟同步是防止重放攻击的最好的方法。通信双方建立共享密钥时可采用单钥加密体制和公钥加密体制。3.4.2 单向认证技术单向认证技术电子邮件等网络应用有一个最大的优点就是不要求收发双方同时在线,发方将邮件发往收方的信箱,邮件在信箱中存着,直到收方阅读时才打开。邮件消息的报头必须是明文形式以使简单邮件传输协议(SMTP,SimpleMailTransferProtocol)或X.400等存储转发协议能够处理。然而通常都不希望邮件处理协议要求邮件的消息本身是明文形式,否则就要求用户对邮件处理机制的信任。所以用户在进行保密通信时,需对邮件消息进行加密以使包括邮件处理系统在内的任何第三者都不能读取邮件的内容。再者邮件接收者还希望对邮件的来源即发方的身份进行认证,以防他人的假冒。3.4.3 身份验证技术身份验证技术 1.身份验证概念身份验证概念身份识别(Identification)是指用户向系统出示自己的身份证明过程。身份认证(Authentication)是系统核查用户的身份证明的过程,实质上是查明用户是否具有他所请求资源的存储和使用权。人们常把身份识别和身份认证这两项工作统称为身份验证(或身份鉴别),它是判明和确认通信双方真实身份的两个重要环节。身份认证必须做到准确无二义地将对方辨认出来,同时还应该提供双向的认证,即相互证明自己的身份。2.单机状态下的身份认证单机状态下的身份认证1)根据人的生理特征进行身份认证这是较早使用的一种方法,它根据人的生理特征,如指纹、视网膜、声音等来判别身份。目前同时采用几种生理特征来验证身份。当然,这种方法实现起来难度很大。2)根据约定的口令等进行身份认证双方共同享有某个秘密,如联络暗号、UserID和Password等,根据对方是否知道这个秘密来判断对方的身份。这种方法最常用且简单,但安全性不高,因为秘密一旦泄漏,任何人都可以冒充。此外,目前的操作系统在身份认证方面还存在另一个弊端,被称为“有志者事尽成”系统,操作者可以反复地试猜。3)用硬件设备进行身份认证服务器方通过采用硬件设备如编码器,随机产生一些数据并要求客户输入这些数据,经过编码发生器变换后产生的结果,与服务器拥有的编码发生器产生的结果比较,判断是否正确。这种方法也成为一次性口令/密码,只有对方获得该硬件才可能进行假冒。目前使用较多的“智能加密卡”是制造商为用户提供的数字证明卡,它显示的号码是由时日、密码、加密算法3项确定,作为用户向系统出示的身份证明。这种方法可以持续较长的时间,具有使用灵活、存储信息多等特点。智能加密卡简称智能卡,是一种嵌有CPU处理器如信用卡大小的塑料卡,它与通信网络结合,可执行多种功能。实际上,它是密钥的一种载体,由授权用户持有,用户赋予它一个口令或密码。该密码与网络服务器上注册的密码相同。综上,目前,在计算机及网络系统中常用的身份认证方式主要有:v口令核对vIC卡认证v动态口令v生物特征认证vUSBKey认证v身份的零知识证明3.网络环境下的身份认证网络环境下的身份认证网络环境下的身份认证较为复杂,主要是考虑靠验证身份的双方一般都是通过网络而非直接交互,想根据指纹等手段就无法实现。同时,大量的黑客随时随地都可以尝试向网络渗透,截获合法用户口令冒名顶替以合法身份入网。所以,目前一般采用的是基于对称密钥加密或公开密钥加密的方法,采用高强度的密码技术来进行身份认证。对TCP/IP网络计算机系统的攻击常常是监听网络信息,获得登陆用的帐号和口令。被俘获的帐号和口令用于以后对系统的攻击。S/Key是一个一次性口令系统,用来对付这种攻击。使用S/Key系统时,传送的口令只使用一次后即无效。用户使用的源口令不会在网络上传输,包括登陆或其他需要口令(如SU等)的时候。在使用S/Key系统时有两方面的操作。在客户方,必须有手段产生正确的一次性口令。在服务主机方,必须能够验证该一次性口令的有效性,并能够让用户安全地修改源口令。一般的S/Key系统是基于一些不可逆算法的(如MD4和MD5),也就是说这一类算法如果拥有源数据,正向计算出结果速度很快。但如果没有源数据而试图反向计算出源数据,目前来看则基本上是不可能的。3.2.4 身份认证系统实例身份认证系统实例Kerberos系统系统1.Kerberos系统介绍系统介绍 Kerberos系统是美国麻省理工学院为Athena工程而设计的,为分布式计算环境提供一种对用户双方进行验证的认证方法,它是基于对称密钥的身份认证系统。在该环境中,机器属于不同的组织,用户对机器拥有完全的控制权。因此,用户对于每一个他所希望的服务,必须提供身份证明。同时,服务器也必须证明自己的身份,故网络上其它的机器可以伪装成服务器而骗取用户信息。2.Kerberos系统组成系统组成Kerberos系统提供的认证服务由三个重要部件组成:中心数据库、安全服务器和Ticket分配器(TGS)。这三个部件都安装在网络中相对安全的主机上。其中,中心数据库是安全服务的关键部分,在库中存有安全系统的安全信息,包括用户注册名及相关口令、网上所有工作站和服务器的网络地址、服务器密钥及存取控制表等。1)中心数据库中心数据库由KDC(密钥分发中心)进行维护。该数据库中包括有内部网络系统中每个用户的帐户信息。这一信息是由企业的安全管理员录入到数据库中的,它包括用户的帐号(即登录帐号)和密码。所有内部网络中的服务器和用户在安全数据库中均有帐户。2)安全服务器即认证服务器当一个用户登录到企业内部网络中并且请求访问内部网络服务器时,认证服务器根据中心数据库中存储的用户密码生成一个DES加密密钥来对一个Ticket(凭证或入场券)进行加密。这个Ticket包含有用户将要对传送给应用服务器的信息进行加密所使用的新的DES加密密钥。Ticket中同时也包括了基于应用服务器产生的阶段性加密密钥,客户方使用这个Ticket来向应用服务器证实自己的身份。3)Ticket分配服务器(TGS)当用户进程欲访问某个服务器时,TGS通过查找数据库中的存取表,来确认该用户已被授权使用该服务器,这时TGS将会把与该服务器相连的密钥和加密后的Ticket分给该用户和服务器。用户若要访问采用Kerberos身份认证服务的内部网络中的应用服务器,则必须在KDC中进行登记;一旦用户进行了登记,KDC可以为用户向整个企业网络中的任何应用服务器提供身份验证服务。用户只需要登录一次就可以安全地访问网络中所有安全信息。这种登录的过程提供了在用户和应用服务之间相互认证,双方都可能确认对方的身份。3.Kerberos系统的认证过程系统的认证过程有人曾把Kerberos的工作过程形象地比喻为到售票处购买入场券以及到电影院看电影的过程。作为一个观众,如果希望看某一场电影,则先要到售票处购买入场券,在购买入场券时,观众需要说明所希望的场次。在得到希望的入场券后,观众需要到检票口检票。检票口人员在证实入场券合法后,观众就可以入场欣赏电影了。Kerberos系统和看电影的过程不一样的地方是,只是事先在Kerberos系统中登录的客户才可以申请服务,并且Kerberos要求申请到入场券的客户就是到TGS去要求得到最终服务的客户。另外,在客户和服务器间通信时,需要进行数据的加密,从而需要为客户和服务器的对话产生一个临时的密钥。3.5 数字签名标准及数字签名算法数字签名标准及数字签名算法 3.5.1 数字签名算法数字签名算法DSS首先将DSS与RSA的签名方式作一比较。RSA算法既能用于加密和签名,又能用于密钥交换。与此不同,DSS使用的算法只能提供数字签名功能。采用RSA签名时,将消息输入到一个散列函数以产生一个固定长度的安全散列值,再用发方的秘钥加密散列值就形成了对消息的签名。消息及其签名被一起发给收方,收方得到消息后再产生出消息的散列值,且使用发方的公钥对收到的签名解密。这样收方就得到了两个散列值,如果两个散列值是一样的,则认为收到的签名是有效的。DSS签名也利用一散列函数产生消息的一个散列值,散列值连同一随机数k一起作为签名函数(Sig)的输入,签名函数还需使用发方的秘钥SkA和供所有用户使用的一族参数,称这一族参数为全局公钥PkG。签名函数的两个输出s和r就构成了消息的签名(s,r)。接收方收到消息后再产生出消息的散列值,将散列值与收到的签名一起输入到验证函数(Ver),验证函数还需输入全局公钥PkG和发方的公钥PkA。验证函数的输出结果与收到的签名成分r相等,则验证了签名是有效的。3.5.2 数字签名算法数字签名算法DSADSA是在EIGamal和Schnorr两个签名方案的基础上设计的,其安全性基于求离散对数的困难性。算法描述如下:(1)全局公钥。p:满足2L-1p2L的大素数,其中512L1024,且L是64的倍数;q:p-1的素因子,满足2159q2160,即q长为160bit。g:g=h(p-1)/q mod p,其中h是满足1h1的任一整数。(2)用户秘密 x是满足0 xq的随机数或伪随机数。(3)用户的公钥y=gxmodp。(4)用户为待签消息选取的秘密数k是满足0kq的随机数或伪随机数。(5)签名过程。用户对消息m的签名为(r,s),其中r=(gk modp)modq,s=k-1(H(m+xr)modqH(m)是由SHA求出的散列值。3.5.3 数字签名算法数字签名算法 HASHHASH函数与加密函数类似。事实上有些HASH函数就是稍加修改的加密函数。大多数函数的做法是每次取一个数据块,对数据块的每一位用一个简单的编码函数进行编码。HASH算 法 的 工 作 方 式 类 似 通 信 协 议 中 的 校 验 和(checksum),即发信方将一个数据包的所有字节加起来,将和添加在包上。收信方执行同样的运算并比较两个和,以决定是否被正确地传输。校验算法的主要作用是根据报文内容通过单向的HASH算法计算出一个校验来,如果报文被改动或增减,则无法根据同样的算法算出相同的校验来。一般在实际应用中,对于只有数据完整性要求的数据只对其校验进行加密就可以了,这样能够大大减少数据加密的工作量。3.5.4 数字签名算法数字签名算法RSARSA是最流行的一种加密标准,是由Rivest、Shamir和Adleman三人共同设计,许多产品的内核都有RSA的软件和类库。RSA签名采用公开密钥算法,生成一对公钥和私钥,信息发送需要用发送者私人密钥加密信息,即签名;信息的接收者利用信息发送者的公钥对签名信息解密,以提高网络运行效率。RSA签名也不存在HASH签名的局限性。这里要特别注意,为了克服RSA的密钥过长、加密速度慢的缺点,可采用DES(DataEncryptionStandard)进行明文加密,RSA用于DES密钥的加密。例如,美国的保密增强邮件(PEM)就是采用了RSA和DES结合的方法,目前已成为Email保密通信标准。3.6 其它数字签名体制其它数字签名体制 3.6.1 基于离散对数问题的数字签名体制基于离散对数问题的数字签名体制基于离散对数问题的数字签名体制是数字签名体制中最为常用的一类,其中包括EIGamal签名体制、DSA签名体制、Okamoto签名体制等。1.离散对数签名体制离散对数签名体制EIGamal、DSA、Okamoto等签名体制都可以归结为离散对数签名体制的特例。体制参数:p:大素数;q:p-1或p-1的大素因子;g:gRZp*,且gq1(modp),其中gRZ*p表示g是从Z*p中随机选取的;x:用户A的密钥,1xq;y:用户A的公钥,y=gx(modp)。3.6.2 基于大数分解问题的签名体制基于大数分解问题的签名体制设n是一个大合数,找出n的所有素因子是一个困难问题,称之为大数分解问题。下面介绍的两个数字签名体制都基于这个问题的困难性。属于此类体制的有:1.Fiat-Shamir签名体制签名体制 2.Guillou-Quisquater签名体制签名体制3.7 数字证明技术数字证明技术 公开密钥的证明有时也称作“数字ID”、“数字证明”或“数字护照”。如果甲和乙通过Internet获得各自的公开密钥,他们需要对这些密钥进行认证。甲不能简单地向乙询问其公开密钥,因为在网络上可能存在第三者截获甲的请求,并发送它自己的公开密钥,因此,第三者可以阅读甲传送给乙的所有消息。因此,需要一个第三方的认证机构(CA),使甲即使是通过不安全的渠道,也能够借助它可靠地获取乙的公共密钥。CA为乙的公开密钥生成一个证书(也称数字签名)。任何人都可以获得乙的公开密钥,并利用该证书作为验证公开密钥的根据。在网络上,证明的作用就像公民的护照、司机的驾驶执照、学生的校徽。网上的某些服务仅对持有证明的用户提供服务。
展开阅读全文