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

作者:黎跃春

孔壹学院创始人兼CEO

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

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

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

孔壹学院

DSA

数字签名算法

WORLD FOOTBALL CUP

数字签名算法(DSA,Digital Signature Algorithm),是一种公开密钥算法,不能用于加密,只能用于数字签名。主要用作为接收者验证数字的完整性和数据发送者的身份,DSA算法的安全性基于解离散对数的困难性。

RSA

公钥加密算法

WORLD FOOTBALL CUP

公钥加密算法于1987年首次公开,RSA是提出这个算法的三人姓氏开头字母组成,可用于加密,也可以用于数字签名。RSA的安全性基于大数分解的困难性。

加密算法:

最优非对称加密填充(OAEP,Optimal Asymmetric Encryption Padding),在随机预言模型下,用来处理非对称加密前的明文;

公钥密码学标准(PKCS,The Public-Key Cryptography Standards),是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。

签名认证:

公钥密码学标准(PKCS);

概率签名方案(PSS,Probabilistic Signature Scheme),与PKCS不同的是,它支持添加盐(Salt)。

ECDSA

椭圆曲线加密算法

WORLD FOOTBALL CUP

ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA。它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种。椭圆曲线算法的原理很复杂,但是具有很好的公开密钥算法特性,通过公钥无法逆向获得私钥。

签名过程

假设要签名的消息是一个字符串:“Hello World!”。DSA签名的第一个步骤是对待签名的消息生成一个消息摘要。不同的签名算法使用不同的消息摘要算法。而ECDSA256使用SHA256生成256比特的摘要。摘要生成结束后,应用签名算法对摘要进行签名:产生一个随机数k利用随机数k,计算出两个大数r和s。将r和s拼在一起就构成了对消息摘要的签名。这里需要注意的是,因为随机数k的存在,对于同一条消息,使用同一个算法,产生的签名是不一样的。从函数的角度来理解,签名函数对同样的输入会产生不同的输出。因为函数内部会将随机值混入签名的过程。

验证过程关于验证过程,这里不讨论它的算法细节。从宏观上看,消息的接收方从签名中分离出r和s,然后利用公开的密钥信息和s计算出r。如果计算出的r和接收到的r值相同,则表示验证成功。否则,表示验证失败。

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

扫码关注云+社区

领取腾讯云代金券