数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。数字签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。
数字签名的原理
数字签名一般包括三种算法∶1、密码生成算法。2、标记算法。3、验证算法。
数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。如果签名者想要对某个文件进行数字签名,就必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到PKI技术。
- 有哈希算法的数字签名与验证
哈希函数是一种“压缩函数”,利用哈希函数可以把任意长度的输入经由散列函数值法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要。在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的消息摘要(Message Digest);再用自己的私钥(Secret key,SK)对消息摘要进行签名,形成发送方的数字签名。数字签名将作为队件和原文一起发送给接收方;接收方首先用发送方的公钥对数字签名进行解密得到发送方的数字摘要,然后用相同的哈希函数对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的消息摘要做比较。
- 基于非对称密钥加密体制的数字签名与验证
发送方首先将原文用自己的私钥加密得到数字签名,然后将原文和数字签名一起发送给接收方。接收方用发送方的公钥对数字签名进行解密,最后与原文进行比较,这种是电子商务、电子政务中应用普遍、技术成熟、可操作性强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。使用数字签名技术能够验证文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
数字签名和验证的步骤
- 发件人将散列算法应用于数据,并生成一个散列值。
- 发件人使用私钥将散列值转换为数字签名。
- 发件人将数据、签名及发件人的证书发给收件人。
- 收件人将该散列算法应用于接收到的数据,并生成一个散列值。
- 收件人使用发件人的公钥和新生成的散列值验证签名。
数字签名的特点
- 鉴权
公钥加密系统允许任何人在发送信息时使用公钥进行加密,接收信息时使用私钥解密。当然,接收者不可能百分之百确信发送者的真实身份,而只能在密码系统未被破译的情况下才有理由确信。
鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作重放攻击。
- 完整性
传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然作采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击∶回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b),这样他就立刻变成百万富翁了。
- 不可抵赖
在密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源。
免责声明:素材源于网络,如有侵权,请联系删稿。