由浅入深学通证经济009

数字签名

今天的文章中,我们将要详细探讨一下密码学中的另一重要理论——数字签名。

数字签名有什么作用呢?我们不妨从签名讲起。生活中时时处处不乏需要人们签名的场景,签订合同要签名,pos机刷卡要签名,活动签到也要签名。这些签名无一例外都有一项相同的功能,那就是证明身份,你的签名就代表了你的授权,对该事件表示认同,本人也不能否认该签名的有效性。众所周知,手写签名是难以伪造的,由于每个人签名字迹的独特性,笔迹鉴定专家可以辨别签名是真实的还是模仿的。

那么,数字签名呢?早在2005年,中国就已经颁布并实施了《电子签名法》,确立了包括数字签名在内的电子签名的法律效力。其实,数字签名的功能与手写签名相同,是用来表明签名人的身份,证明了签名人对签字内容的授权或认同。同时,数字签名有着和手写签名相同的两个特性,依靠公钥加密算法实现了数字签名不可伪造和不可抵赖的特征。

常用的数字签名算法有三种,分别是:RSA,DSA,ECDSA。

其中,ISO 已经将RSA推荐为公钥数据加密标准,它是在目前公钥加密算法中公认的影响力最广泛的算法。RSA是基于大整数分解问题,到目前为止,对已经知道的密码攻击,RSA能够抵抗其中的绝大多数。

DSA已经被美国NIST作为DSS(Digital Signature Standard),该算法是基于离散对数问题,具有与RSA相差不多的安全性能。

ECDSA属于DSA的一个变种,是基于椭圆曲线上的离散对数问题,具有速度快、强度高、签名短的特点。

下面,我们来具体看一下最具有影响力的RSA算法。

RSA算法在数字签名领域具有不可替代的重要地位,它拥有一项基于大整数分解的DSA算法和基于椭圆曲线离散对数的ECDSA算法都不具有的特征——对称性。对称性是指可以先使用公钥加密然后使用私钥解密,同时也可以使用私钥加密然后再使用公钥解密。其中的公钥和私钥怎么理解呢?可以简单认为,公钥是人人都知道的,为大家所共有,而私钥仅能自己私人知道。

为防止第三方破解加密内容,通信中可以使用公钥加密然后私钥解密的方法,用于公钥方向私钥方传送信息,而反之使用私钥加密公钥解密就是数字签名的方式。

在RSA算法中,公钥和私钥是一一对应的,即每个公钥/私钥都有唯一一把私钥/公钥与之匹配,每个公钥只能为相对应的私钥加密的内容进行解密,非匹配私钥加密的内容,该公钥无法解密。所以,当用户A使用RSA算法生成一对秘钥,并向所有人公布该公钥内容及发布人。之后用户A发送原内容和用该私钥加密的内容,非用户A的其他用户使用公钥解密,看解密内容是否和原内容相符,即可判断发送人身份。

在该算法中,由于私钥只被用户A一个人所有,其他人无法生成相同密文,因此具有不可伪造的特性;同时,公钥和私钥一一对应,只要能用公钥成功解密,那么发送方一定是使用该私钥发送的用户,因此具有不可抵赖的特性。

这种私钥加密公钥解密的方式就是数字签名,加密过程叫做签名,解密过程叫做解签。

了解了数字签名的原理,那它究竟用于什么场景呢?

首先,数字签名可以应用于网站认证。当打开网页的时候,人们会担心网页是否是来源于相对应网站,为保证网页是期待打开的而不是第三方伪造的,这就可以使用数字签名来验证。每个网页都会带有数字签名的证书,这个证书就是对公钥的封装,可以验证网站的身份信息。

另外,数字签名还能用作代码签名。在我们经常使用的windows系统中,为了保该程序来源可靠且为被篡改,正规的可执行程序通常会有代码签名,未使用代码签名的程序则无法保障它的可靠性。当拥有代码签名的程序显示“此数字前面无效”,就说明这个程序已经出现了安全问题,可能是遭到篡改或者是已经损坏,不能继续安全的运行。

在比特币系统中,数字签名也被应用于身份认证过程。它使用了ECDSA算法,对比特币账户进行了私钥加密过程。因此,如果丢失了该账户的私钥,那就意味着钱包的丢失,账户里面的数字货币将永远冻结,无法再继续使用。这就是数字签名的神奇之处,它用一种加密方式对身份进行认证,保证了签名的安全性。

通证经济的密码学知识到这里就要告一段落了,在下面的文章中,我们将继续对通证经济的其他知识进行进一步介绍。 

你可能感兴趣的:(由浅入深学通证经济009)