数字签名是融合了非对称密钥加密技术与哈希函数,用于鉴别数字信息的方法。

在现实社会中,签订合同等场景都需要手写签名,以表明签名者知晓并同意文件内容。笔迹专家也可以根据签名,鉴定签名是否出自本人。因此签名可以防止伪造和签署人抵赖情况的出现,签署后的文件也不可以被随意篡改。数字签名也具有这些功能,它通过非对称密钥加密技术和哈希函数来实现加密货币交易确认等功能。

非对称密码可以简单理解为加密、解密的钥匙不可以是同一把。区块链私钥公钥的概念由此衍生:同一个人私钥加密的信息,只可以用同一个人的公钥解密;同样,同一个人公钥加密的信息,只可以用同一个人的私钥解密。其中,公钥可以公开,私钥只能自己保存。我们可以通过一个例子来了解数字签名是如何运作的:

1. Jim想给Bob传输一份文件,Jim首先用Bob的公钥对原文进行加密,因为只有Bob的私钥可以对此信息解密,因此可以确保信息被其他人截获后不能被破译,避免被篡改。
2. Jim运用哈希函数将原文计算成摘要,然后用自己的私钥对摘要进行加密,生成数字签名,表明此信息为Jim发出的。
3. Jim将自己的公钥、数字签名、加密后的原文发送给Bob。
4. Bob先用自己的私钥加密的原文进行解密,然后运用同样的哈希函数计算出一个哈希值
5. Bob再用Jim的公钥对数字签名进行解密,得到摘要,说明信息确实是Jim发送过来的。最后将摘要与上一步得出的哈希值进行对比,如果两者一致,说明信息未被篡改过。

当然,平时我们交易过程中并不需要亲自执行上述步骤。只需要输入私钥即可,这些加密解密的过程都是后台系统自动运行的。加密解密过程中使用的哈希函数有不可逆的特性,无法根据计算出的哈希值来倒推输入的内容,因此可以防止原始信息被篡改。另外,两组只有微小差别的数据经过哈希函数的计算,会得出两个完全不同的哈希值。因此即使Jim用私钥加密的摘要被其他人用公钥截获后篡改,Jim也可以在最后一步对比时发现这一情况。

从这个例子我们可以看出数字签名的几个特征:
1.真实性:可以验证由本人发送;
2.数据完整性:可以验证信息是否遭到篡改,消息中的任何变动都会导致数字签名变化;
3.不可否认性:生成签名后无法否认。

数字签名的应用
区块链:数字签名可确保在私钥不泄露的情况下,唯有加密货币的所有人能够签署并转移资金。
金融领域:可应用于财务审计签名,贷款协议等;
法律领域:可应用于法律协议、政府文件、商业合同签署等;
卫生保健:可防止医疗记录及医疗药物器械编码等信息的篡改;
信息技术:可增加互联网的使用安全性与加强对隐私的保护。

数字签名面临的挑战
由前文介绍我们可以看出,数字签名中较为重要的要素是算法私钥。如果算法的安全性低,那么相应通过该算法得出的信息摘要则很可能被解密。而丢失私钥将无法保证信息的真实性。对于持有加密货币的用户而言,丢失私钥还意味着资产的直接损失。数字签名技术已经发展良久,但从目前的实际应用来看还只占有市场的一小部分。随着社会信息数字化程度的提高和区块链技术的普及,数字签名将会有更广泛的应用。