什么是数字签名呀?
数字签名(英语:Digital Signature,又称公钥数字签名)是一种功能类似写在纸上的普通签名、但是使用了公钥加密领域的技术,以用于鉴别数字信息的方法。
一套数字签名通常会定义两种互补的运算,一个用于签名,另一个用于验证。法律用语中的电子签章与数字签名代表之意义并不相同。
电子签章指的是依附于电子文件并与其相关连,用以辨识及确认电子文件签署人身份、资格及电子文件真伪者;数字签名则是以数学算法或其他方式运算对其加密而形成的电子签章。意即并非所有的电子签章都是数字签名。
数字签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。
数字签名了的文件的完整性是很容易验证的(不需要骑缝章、骑缝签名,也不需要笔迹鉴定),而且数字签名具有不可抵赖性(即不可否认性),不需要笔迹专家来验证。
原理
通常会使用公钥加密,用私钥解密。而在数字签名中,会使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。
可以直接对消息进行签名(即使用私钥加密,此时加密的目的是为了签名,而不是保密),验证者用公钥正确解密消息,如果和原消息一致,则验证签名成功。但通常会对消息的散列值签名,因为通常散列值的长度远小于消息原文,使得签名(非对称加密)的效率大大提高。注意,计算消息的散列值不是数字签名的必要步骤。
在实际使用中,我们既想加密消息,又想签名,所以要对加密和签名组合使用,比如TLS就组合了加密和签名。