从零到壹学习密码学第十五讲:数字签名

作者:黎跃春

孔壹学院创始人兼CEO

黎跃春:孔壹学院创始人兼CEO,国内区块链布道先行者,通信和信息技术培养工程区块链高级授课专家。如果您有任何关于区块链的问题,可以加入区块链技术交流QQ群729666975,我们会为您一一解答。

从零到壹学习密码学为一个系列,一共20讲,包括初识密码学、Hash 函数、对称加密算法、数字签名、椭圆曲线加解密、公钥基础设施( PKI )、零知识证明、随机数等,为大家详尽的介绍密码学的学习过程。今天我们将为大家介绍第十五讲:数字签名。话不多说,马上开启我们的密码学学习之旅。

资料获取,添加莉莉微信kongyixueyuan。

孔壹学院

据史书记载,顺阳在上,五月是仲夏,它的第一个午日正是登高顺阳好天气之日,故五月初五亦称为“端阳节”。

端午佳节到,“粽”有欢乐愉悦你,心情舒畅;“粽”有吉祥相伴你,好运连连;“粽”有福星环绕你,幸福天天;“粽”有平安保佑你,福寿无边;“粽”有朋友祝福你,心花怒放。孔壹学院祝大家端午节快乐!

什么是数字签名

数字签名就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

签名的生成和验证

生成消息签名的行为

生成消息签名这一行为是由消息的发送者来完成的,也称为“对消息签名”。生成签名就是根据消息内容计算数字签名的值,这个行为意味着“我认可该消息的内容”。

验证消息签名的行为

验证数字签名这一行为一般是由消息的接收者来完成的,但也可以由需要验证消息的第三方来完成,这里的第三方在本书中被命名为验证者。验证签名就是检查该消息的签名是否真的属于发送者,验证的结果可以是成功或者失败,成功就意味着这个签名是属于发送者的,失败则意味着这个签名不是属于发送者的。

公钥密码与数字签名

在数字签名中,生成签名和验证签名这两个行为需要使用各自专用的密钥来完成。发送者使用“签名密钥”来生成消息的签名,而验证者则使用“验证密钥”来验证消息的签名。数字签名对签名密钥和验证密钥进行了区分,使用验证密钥是无法生成签名的。此外,签名密钥只能由签名的人持有,而验证密钥则是任何需要验证签名的人都可以持有。

公钥密码机制

公钥密码包括一个由公钥和私钥组成的密钥对,其中公钥用于加密,私钥用于解密。用公钥加密所得到的密文只有用与之对应的私钥才能正确解密。

数字签名

数字签名中也同样会使用公钥和私钥组成的密钥对,不过这两个密钥的用法和公钥密码是相反的,即用私钥加密相当于生成签名,而用公钥解密则相当于验证签名。

数字签名的方法

直接对消息签名

Alice需要事先生成一个包括公钥和私钥的密钥对,而需要验证签名的Bob则需要得到Alice的公钥。在此基础上,签名和验证的过程如下:

对消息的散列值签名

先用单向散列函数求出消息的散列值,然后再将散列值进行加密(对散列值签名)就可以了。

数字签名算法

RSA

RSA是提出这个算法的三人姓氏开头字母组成,可用于加密,也可以用于数字签名。

DSA

DSA ( Digital Signature Algorithm)是一种数字签名算法,是由NIST ( National Institute of Standards and Technology,美国国家标准技术研究所)于1991年制定的数字签名规范( DSS)。DSA是Schnorr算法与ElGammal方式的变体,只能被用于数字签名。

ECDSA

ECDSA ( Elliptic Curve Digital Signature Algorithm)是一~种利用椭圆曲线密码来实现的数字签名算法( NIST FIPS 186-3 )。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180616G1IHXW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券