它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得
到不同的数字签名。
用 RSA 或其它公开密钥密码算法的最大方便是没有密钥分配问题。因为公开密钥加密
使用两个不同的密钥,其中有一个是公开的,另一个是保密的。公开密钥可以保存在系统
目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用
户都可获得公开密钥。
3.2 Hash 签名
Hash 签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指
纹法(Digital Finger Print)。它与 RSA 数字签名是单独的签名不同,该数字签名方法是
将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。将一个商务合同
的个体内容与签名结合在一起,比合同和签名分开传递,更增加了可信度和安全性。
一个 Hash 函数满足:
①H 可以作用于一个任意长度的数据块;
②H 产生一个固定长度的输出;
③H(x)对任意给定的 x 计算相对容易,无论是软件还是硬件实现;
④ 对任意给定码 h,找到 x 满足 H(x)=h 具有计算不可行性;
⑤ 对任意给定的数据块 x,找到满足 H(y)=H(x)的 yx 具有计算不可行性;
⑥ 找到任意数据对(x,y),满足 H(x) = H(y)是计算不可行的。
用 Hash 函数实验签名的方案如下:
发送方 X:准备消息 M,计算其散列码 H(M),用 X 的私钥对散列值构成签名 Kx-
1[H(M)],并将消息 M 及签名 Kx-1 [H(M)]发送给 Y
接收方 Y:对收到的消息 M′计算用 H(M′),利用公钥解密 Kx-1[H(M)],然后比较 Kx
[Kx-1 [H(M)]]和 H(M′),如果 Kx [Kx-1 [H(M)]] = H(M′),则签名得到验证。
3.3 椭圆曲线数字签名算法(ECDSA)
椭圆曲线的数字签名具有与 RSA 数字签名和 DSA 数字签名基本上相同的功能,但实
施起来更有效,因为椭圆曲线数字签名在生成签名和进行验证时要必 RSA 和 DSA 来得快。
椭圆曲线数字签名的速度要比 RSA、DSA 快,还可以用在一些较小、对资源有一定
限制得设备如智能卡(含有微处理器芯片得塑料片)中。
3.4 美国数字签名标准(DSA)