在公钥密码学中,密钥是由公开密钥和私有密钥组成的密钥对。数字签名就是用私有密钥进行加密,接收方用公开密钥进行解密。由于公开密钥不能推算出私有密钥,所以公开密钥不会损坏私有密钥的安全,公开密钥无需保密可以公开传播,而私有密钥必须保密。
因此,当某人用其私有密钥加密信息,能够用TA的公开密钥正确解密就可以肯定该消息是经过某人签字的,因为其他人的公开密钥不可能正确解密该加密信息,其他人也不可能拥有该人的私有密钥而制造出该加密过的信息。
就其实质而言,数字签名是接收方能够向第三方证明接收到的消息及发送源的真实性而采取的一种安全措施,其使用可以保证发送方不能否认和伪造信息。
数字签名的主要方式是:报文的发送方从报文文本中生成一个散列值(或报文摘要),发送方用自己的私有密钥对这个散列值进行加密来形成发送方的数字签名,然后这个数字签名将作为报文的附件和报文一起发送给报文的接收方,报文的接收方首先从接收到的原始报文中计算出散列值(或报文摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密,如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。
这里我们举个例子来说明数字签名的原理:假设甲公司要给乙公司发送一份机密的文件,那么这次传输需要确保以下几点:
1、 文件内容不能被读取————(方案:加密)
2、 只有乙公司能接收—————(方案:数字信封)
3、 证明发送方是甲公司————(方案:数字签名)
4、 文件内容不能被篡改————(方案:对比摘要)
5、文件不能被调包——————(方案:数字证书)
由于对称加密的高效性,对文件的加密处理,通常采用对称加密方案。对称加密需要用同一份密钥,这一份密钥的约定就有被中途截获的可能。
因此可以采用非对称加密算法加密对称密钥的方式来加密内容,也就是“用接收方的公钥加密对称密钥”,这就叫“给乙的数字信封”,并用这个对称密钥加密文件内容。
假设这份文件被黑客截获,但是黑客没有乙的私钥无法解出对称密钥,也就无法解密文件内容。但是这里还有个风险,虽然黑客无法解密文件内容,但他可以自己生成一份密钥并用乙的公钥加密,再用这份密钥加密一份伪造的文件发给乙,这种情况下乙收到的就是被假冒的文件。
这个问题就需要使用数字签名的方式来解决。
也就是说使用数字签名可以确保乙的身份真实、签署后的文档不可修改、签署行为不可抵赖。数字签名技术是目前最符合可靠电子签名要求、应用最普遍、可操作性最强的技术之一。
数字签名就是用摘要算法提取出源文件的摘要并用发送人的私钥进行加密后的内容。
甲在发送文件时再附带上源文件的数字签名。如果被黑客截取到加密后的文件和数字签名,黑客即使使用甲的公钥解出了文件摘要,由于摘要算法的特性黑客也无法还原出原始内容。但乙可以解密出文件内容再用同样的摘要算法提取出摘要来和数字签名里的摘要进行比对,摘要一致则说明文件没有被篡改过。