📄
字号:
<p>单向Hash函数是在一个方向上工作的Hash函数,从预映射的值很容易计算其Hash值,但要产生一个预映射的值使其Hash值等于一个特殊值却是很难的。好的hash函数也是无冲突的:难于产生两个预映射的值,使他们的hash值相同。</p>
<p>Hash函数是公开的,对处理过程不用保密。单向hash函数的安全性是它的单向性。无论怎么看,输出不依赖于输入。预映射单个比特的改变,平均而言,将引起hash值中一半的比特改变。已知一个hash值,要找到预映射的值,使它的hash值等于已知的hash值在计算上是不可行的。</p>
<p>哈希函数,即对于任意长度的信息m,经过哈希函数运算后,压缩后固定长度的数,比如64比特HASH函数的特殊要求是:</p>
<p>1. 已知哈希函数的输出,要求它的输入是困难的,即已知c=Hash(m),求m是困难的。这表现了函数的单向性。</p>
<p>2. 已知m,计算Hash(m)是容易的。这表现了函数的快速性。</p>
<p>3. 已知,构造m2使Hash(m2)=c1是困难的。这是函数的抗碰撞性。</p>
<p>4. c=Hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一比特,都将对c产生明显影响。这就是函数的雪崩性。</p>
<p>5. 作为一种数字签名,还要求哈希函数除了信息m自身之外,应该基于发信方的秘密信息对信息m进行确认。</p>
<p>6. 接受的输入m数据没有长度限制;对输入任何长度的m数据能够生成该输入报文固定长度的输出;</p>
<p>曾有数家统计计算结果表明,如hash(m)的长度为128位(bit)时,则任意两个分别为M1.M2的输入报文具有完全相同的h(m)的概率为10-24,即近于零的重复概率。它较人类指纹的重复概率10-19还要小5个数量级。而当我们取hash(m)为384(bit)乃至1024(bit)时,则更是不大可能重复了。</p>
<p>另外,如输入报文M1与输入报文M2全等,则有h(m1)与h(m2)全等,如只将M2或M1中的某任意一位(bit)改变了,其结果将导致h(m1)与h(m2)中有一半左右对应的位(bit)的值都不相同了。这种发散特性使电子数字签名很容易发现(验证签名)输入报文的关键位的值被人篡改了。</p>
<p>数字摘要(digitaldigest)加密方法亦称安全Hash编码法(SHA:SecureHashAlgorithm)或MD5(MDstandardforMessageDigest),由RonRivest设计。该编码法采用单向Hash函数将需加密的明文"摘要"成一串128bit的密文,这一串密文亦称为数字指纹(FingerPrint),它有固定的长度,且不同的明文摘要必定一致。这样这串摘要使可成为验证明文是否是"真身"的"指纹"了。</p>
<p>Hash签名不属于强计算密集型算法,应用较广泛。很多少量现金付款系统,如DEC的Millicent和CyberCash的CyberCoin等都使用Hash签名。使用较快的算法,可以降低服务器资源的消耗,减轻中央服务器的负荷。Hash的主要局限是接收方必须持有用户密钥的副本以检验签名,
因为双方都知道生成签名的密钥,较容易攻破,存在伪造签名的可能。如果中央或用户计算机中有一个被攻破,那么其安全性就受到了威胁。</p>
<p><b>DSS和RSA签名</b></p>
<p>DSS和RSA采用了公钥算法。</p>
<p>Digital Signature Algorithm(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(Digital
SignatureStandard)数字签名标准。DSS是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。算法中应用了下述参数:</p>
<ul>
<li>p:L bits长的素数。L是64的倍数,范围是512到1024;
<li>q:是p - 1的160bits的素因子;
<li>g:g = h^((p-1)/q) mod p,h满足h < p - 1, h^((p-1)/q) mod p >
1;
<li>x:秘密密钥,正整数,x < q;
<li>y:y = g^x mod p ,( p, q, g, y )为公钥;
<li>k为随机数,0〈k〈q;
<li>H( x ):One-Way Hash函数。</li>
</ul>
<p>DSS中选用SHA( Secure Hash Algorithm )。 p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。
签名过程如下:</p>
<p>1. P产生随机数k,k < q;</p>
<K> <p>2. P计算 r = ( g^k mod p ) mod q</p>
<p>s = ( k^(-1) (H(m) + xr)) mod q</p>
<p>验证过程: 签名结果是( m, r, s )。</p>
<p>3. 验证时计算 w = s^(-1)mod q</p>
<p>u1 = ( H( m ) * w ) mod q</p>
<p>u2 = ( r * w ) mod q</p>
<p>v = (( g^u1 * y^u2 ) mod p ) mod q</p>
<p>若v = r,则认为签名有效。</p>
<p>DSA位数仅为160位,没有太大的意义,也存在系统平台不兼容的问题,而且DSA是基于整数有限域离散对数难题的,安全强度和速度均低于RSA算法。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却作不到。DSA算法的安全性也依赖于有限域上的离散对数问题,其优点是不涉及专利问题。</p>
<p>其中H(x)可选择美国推荐的标准算法SHA或MD5等安全散列算法。其中MD5算法在本论坛中已有介绍。</p>
<p>RSA是最流行的一种加密标准,许多产品的内核中都有RSA的软件和类库,早在Web飞速发展之前,RSA数据安全公司就负责数字签名软件与Macintosh操作系统的集成,在Apple的协作软件PowerTalk上还增加了签名拖放功能,用户只要把需要加密的数据拖到相应的图标上,就完成了电子形式的数字签名。RSA与Microsoft、IBM、Sun和Digital都签订了许可协议,使在其生产线上加入了类似的签名特性。与DSS不同,RSA既可以用来加密数据,也可以用于身份认证。和Hash签名相比,在公钥系统中,由于生成签名的密钥只存储于用户的计算机中,安全系数大一些。</p>
<p>用RSA或其它公开密匙密码算法进行数字签名的最大方便是没有密匙分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密匙加密使用两个不同的密匙,其中有一个是公开的,另一个是保密的。公开密匙可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密匙。而保密密匙是用户专用的,由用户本身持有,它可以对由公开密匙加密信息进行解密。</p>
<p>RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的。</p>
<p>我们认为RSA算法是目前比较好的密码算法,它不仅可以作为加密算法使用,而且可以用作数字签名和密钥分配与管理,而DSA只适合作签名,且安全强度和速度都不如RSA,椭圆曲线上的公开密钥密码系统安全强度依赖于曲线的选择和体制,我们相信它会有更高的安全强度,目前200比特长的椭圆曲线密码体制已经有相当高的安全强度。</p>
<p><b>数字签名的保密性</b></p>
<p>数字签名的保密性很大程度上依赖于公开密钥。</p>
<p>数字签名的加密解密过程和秘密密钥的加密解密过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。这是一个一对多的关系:任何拥有发送方公开窃钥的人都可以验证数字签名的正确性,而秘密密钥的加密解密则使用的是接收方的密切对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。这是一个复杂但又很有趣的过程。在实用过程中,通常一个用户拥有两个密钥对一一一个密钥对用来对数字签名进行加密解密,一个密钥对用来对秘密密钥进行加密解密。这种方式提供了更高的安全性。</p>
<p>又由于加密钥匙是公开的,密钥的分配和管理就很简单,而且能够很容易地实现数字签名。因此,最适合于电子商务应用需要。在实际应用中,公开密钥加密系统并没有完全取代秘密钥匙加密系统,这是因为公开密钥加密系统是基于尖端的数学难题,计算非常复杂,它的速度远赶不秘密钥匙加密系统。因此,在实际应用中可利用二者的各自优点,采用秘密钥匙加密系统加密文件,采用公开密钥加密系统加密"加密文件"的密钥,这就是混合加密系统,它较好地解决了运算速度问题和密钥分配管理问题。</p>
<p><b>数字签名中的问题与改进</b></p>
<p>以上数字签字的方法是相当简单和理想化的,具体应用中还是有一些问题需要解决的。</p>
<p>1. 签字后的文件可能被接收方重复使用。如果签字后的文件是一张支票,接收方很容易多次用该电子支票兑换现金,为此发送方需要在文件中加上一些该支票的特有的凭证,如时间戳timestamp(但时间戳会有一个时间是否同步的问题)等,以防止上述情况发生。</p>
<p>2. 数字签名应用很多的RSA算法是基于大数的因子分解难题,由于计算水平的提高,人们逐渐可以用计算机分解更大的数。因此RSA算法的密钥也就越来越长,诸位使用PGP时至少要选择700比特以上的密钥。在电子商务的SET协议中,规定用户使用1024比特的RSA密钥,认证中心CA使用2048比特的RSA密钥。长密钥带来两个问题,一是运算速度较慢,另一个是密钥存储和管理问题。如果用16位的IC卡实现电子钱包,使用1024比特的RSA算法速度就很慢,要以秒计算。而固化RSA算法的IC卡或32位的IC卡价格则较贵。</p>
<p>3. 公钥算法的效率是相当低的,不易用于长文件的加密,为此我们采用Hash函数,将原文件P通过一个单向(one-way)的Hash函数作用,生成相当短的(仅几十或几百bits)的输出H,即Hash(P)=H,这里由P可以很快生成H,但由于H几乎不可能生成P,然后再将公钥算法作用在H上生成"签字"S,记为Ek1(H)=S,k1为A的公钥,A将(P,S)传给B,B收到(P,S)后,需要验证S是A的签字。
若我们有H1=H2,即Dk2(S)=Hash(P),我们才能认为S就是A的签字。</p>
<p>4. 如果在Hash签名使用一个密钥k,让只有知道此密钥k的人才能使用hash,即用H(m,k)代替H(m),则可以增强Hash加密的安全性。
以上方法实际上就是把签字过程从对原文件转移到一个很短的hash值上,大大地提高了效率,可以在现代的电子商务中被广泛的使用。</p>
<p><b>数字签名的发展方向</b></p>
<p>2000年1月举行的第六届国际密码学会议对应用于公开钥密码系统的加密算法,推荐了两种:基于大整数因子分解难题的RSA算法和基于椭圆曲线上离散对数计算难题的ECC算法。所以基于RSA算法的数字签名还有一定的发展。
</p>
<p>对于未来的加密、生成和验证数字签名的工具需要完善,只有用SSL(安全套接层)建立安全链接的Web浏览器,才会频繁使用数字签名,公司要对其雇员在网络上的行为进行规范,就要建立广泛协作机制来支持数字签名,支持数字签名是Web发展的目标,确保数据保密性、数据完整性和不可否认性才能保证在线商业的安全交易。</p>
<p>和数字签名有关的复杂认证能力就像现在操作、应用环境中的口令保护一样直接做进操作系统环境、应用、远程访问产品、信息传递系统及Internet防火墙中,像Netscape
支持X.509标准的Communicator 4.0 Web客户机软件;Microsoft支持X.509的Internet Explorer
4.0客户机软件及支持对象签名检查的Java虚拟机等。</p>
<p><b>数字签名的前景与专家的担忧</b></p>
<p>数字签名作为电子商务的应用技术,越来越得到人们的重视,其中它涉及到的关键技术也很多,并且很多新的协议,如网上交易安全协议SSL、SET协议都会涉及到数字签名,究竟使用哪种算法,哪种Hash函数,以及数字签名管理、在通信实体与可能有的第三方之间使用协议等等问题都可以作为新的课题。</p>
<p>同时,数字签名也带来专家们的担忧,一位技术专家警告:运用越来越广泛的网络安全技术数字签名,今后很可能导致毫无私密可言。在伦敦组织的国际监控论坛上,高级译码专家Dr
Stefan Brands在其发言中警告:数字签名将扩大政府跟踪和身份盗用的可能性。数字签名是为互联网用户提供的受密钥保护的唯一身份证明,该密钥向第三方证明文件、信息或交易对象的真实身份。虽然数字签名能打消很多客户的疑虑,Brand相信数字签名同时也引发了"自由"问题。</p>
<p>Brands博士警告,今后,数字签名使政府很容易跟踪网络用户的在线活动。Brand说:"这些标识符号只会越来越危险,你所做的每一件事都能被自动跟踪。相信不久以后这些标识你身份的符号就象安装在你身上的一个类似电话和监视器的计算机。"</p>
<p>数字签名的前景越来越广阔,而由此引发的问题也越来越发人深思......</p>
<p>参考文献:</p>
<p>《计算机密码学》---计算机网络中的数据保密与安全 作者:卢开澄 清华大学出版社</p>
<p>《应用密码学》原著名称:Applied Cryptography protocols,algorithms,and source
code in C 作者Bruce Schneier</p>
<p>《Secure Electronic Commerce》Building the infrastructure for Digital
Signature and Encryption 作者:Warwick Ford Michael S.Baum
<p> </p>
<p> </p>
<p><br>
</p>
<p><a href="http://www.assuredigit.com/tech_doc/"><font color="#0066FF">返回</font></a></p>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -