数字签名-密码术的奥秘

时间:2024-07-01 20:17:05

数字签名

根据第五章指出的理由,非对称算法的用途往往局限于保护对称密钥的安全和提供数字签名。如果需要解决发送方与接收方由于信息内容或信息的来源等问题而发生的争执,对称密码是无能为力的,所以就出现了对数字签名的要求。

数字签名-密码术的奥秘

一个特定的发信人在信息上的数字签名是由该信息和发信人共同决定的一个密码值。与此不同,手写签名仅取决于发信人而与信息无关。数字签名可用来保证数据完整性及证明信息来源(不可否认性)。如果发送方拒绝承认他发出的信息内容甚至否认发过信息,收信人持有发送方的数字签名就能解决纠纷。它提供了解决发送方与接收方之间纠纷的一种手段,这也是数字签名机制与上节所描述MAC实施过程的区别。很显然,这类纠纷只有在发信人与收信人处于非对称的状态时才能够解决。上述情况表明非对称密码系统是提供数字签名的最自然的工具。

数字签名

基于公钥密码系统(如RSA或贾迈勒算法等)的数字签名模式,其基本原理是很简单的。每个用户有一个只供他们自己使用的私钥,而且使用它就能让收信人确认自己的身份。然而,还存在一个对应的公钥。任何人只要知道这个公钥便可检验与之对应的私钥是否已被使用,但不能具体地确定出私钥本身。

当收信人确认私钥已被使用后,他就会确信信息的来源和内容都正确无误。当然,发信人也会确信想要冒名顶替是不可能的,因为他人不能从公钥或验证密钥或数字签名中推导出私钥或签名密钥。

非对称密码的运作过程要求进行大量的计算,所以要对信息进行散列作用处理以得到它的压缩版本或简称散列。签名是应用非对称算法及对应的私钥从散列(它代表信息)中产生的,因此只有私钥的使用者才能生成签名。任何一位知道所对应公钥的人都能够确认该签名。要实现这一点,需使用非对称算法及相应公钥从签名中算出一个值。这个值应该等于信息的散列值,并且是任何人都能算出来的。如果这个值与散列值一致,这个签名就是真实的;如果它们不一致,这个签名则是假的。

RSA和贾迈勒算法是两个使用范围最为广泛的非对称算法。RSA的加密与解密方法是一样的,所以签名和验证过程也一样。RSA的一个替代算法是基于贾迈勒算法的数字签名标准(DSS)。对于DSA而言,签名与验证过程并不相同。此外,DSA需要一个随机数生成程序(一个附加处理过程),而RSA并不需要。不过,DSA总是产生一个固定长度为320比特的签名,相反,RSA的签名区组和模数具有同样的长度:当安全水平的要求越高时,它们就越长。

假定使用数字签名作为识别身份的工具,若用户A想假冒用户B,此时存在两种不同形式的攻击方法:

1.A尝试去获得B的私钥并使用之。

2.A试着用他的公钥来代替B的公钥。

第一种类型的攻击方法可以是试图破译算法,也可以是设法接触存储私钥的物理设备。对算法的攻击已经在第六章中讨论过;而物理设备的安全性是密钥管理中的重要环节,第八章将对此进行集中讨论。这两种攻击与针对对称系统的攻击类似。然而,第二种类型的攻击是特别针对公钥密码系统的,当前流行的大多数“防御措施”都要使用由认证中心颁发的数字证书。