1. 概述
数字签名不是手写签名的数字图像;
数字签名是一种可以提供认证的加密形式,是转向完全无纸环境的一个途径;
数字签名机制用以解决伪造、抵赖、冒充和篡改、完整性保护等安全问题。
2. 公钥密码与数字签名的关系
要实现数字签名,我们可以使用非对称密码机制。
公钥密码包括一个由公钥和私钥组成的秘钥对,其中公钥用于加密,私钥用于解密,如图1所示。
数字签名中也同样会使用公钥和私钥组成的密钥对,不过这两个密钥的用法和非对称加密是相反的,即用私钥加密相当于生成签名,而用公钥解密则相当于验证签名”,如图2所示。通过比较图1和图2来理解一下“反过来用”到底是什么样的情形。
那么为什么加密相当于生成签名,而解密相当于验证签名呢?要理解这个问题,我们需要回想一下公钥密码中讲过的知识,即组成密钥对的两个密钥之间存在严密的数学关系,它们是一对无法拆散的伙伴。
用公钥加密所得到的密文,只能用与该公钥配对的私钥才能解密;同样地,用私钥加密所得到的密文,也只能用与该私钥配对的公钥才能解密。也就是说,如果用某个公钥成功解密了密文,那么就能够证明这段密文是用与该公钥配对的私钥进行加密所得到的。
用私钥进行加密这一行为只能由持有私钥的人完成,正是基于这一事实,我们才可以将用私钥加密的密文作为签名来对待。
由于公钥是对外公开的,因此任何人都能够用公钥进行解密,这就产生了一个很大的好处,即任何人都能够对签名进行验证。
数据签名的安全性和有用性取决于两个关键因素: 用户私钥的保护和安全的散列函数。
3. 数字签名的过程
一般不会对信息直接进行签名,因为整个消息一般比较大,签名非常耗时;而是只要先用单向散列函数求出消息的散列值,然后再将散列值进行加密(对散列值签名)就可以了。无论消息有多长,散列值永远都是这么短,因此对其进行加密(签名)是非常轻松的。
3.1 生成签名过程
3.2 验证签名过程
4. 数字签名与密码结合的过程
将数字签名和密码结合,使得信息具备机密性、完整性、认证和不可否则的特性。
4.1 生成签名并加密过程
4.2 解密并验证签名过程
5. 使用数字签名的原因
- 验证:假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(A,B),其中A是账户的账号,而B是账户的金额.如果中央管理系统不能证明这则指令来自一个受信任的源,后果将十分严重
- 完整性:数字签名技术可以保证任何原始数据被修改都将导致签名无效
- 不可抵赖:接收方可以出示签名给别人看来证明信息的来源
6. 数字签名的用途
数字签名是实现电子交易安全的核心技术之一,应用在密钥分配、电子银行、电子证券、电子商务和电子政务等许多领域。