【密码学】一文读懂DSA
本篇文章来聊一聊DSA的相关知识,为什么说这个好写呢,是因为我之前是已经介绍过离散对数相关概念了,而对于非对称密码体系呢,其中麻烦的地方就在于他的数学知识,有了前面的铺垫呢,所以这一篇文章也就变得简单了起来,所以说呢,如果不懂离散对数的,可以看下我之前写的那一篇文章,或者看下相关资料。
算法简介
数字签名算法(DSA)是用于数字签名的联邦信息处理标准之一,基于模算数和离散对数的复杂度。DSA是Schnorr和ElGamal签名方案的变体。美国国家标准技术研究所(NIST)于1991年提出将DSA用于其数字签名标准(DSS),并于1994年将其作为FIPS 186采用。到2023年被更新为FIPS 186-5,一共经历了5次改版,咱们主打一个追求最新,在这篇文章发表之前,是5次。
和之前介绍的RSA或者SM2算法不一样的是,DSA只提供了数字签名算法的功能,本身并不可以用作密钥交换或者加密算法。
算法过程
之前也说过,DSA是基于离散对数求解的困难性设计的算法,我们先来看一下这个算法的参数。
参数
-
p: 一个素数,满足,其中,并且L是64的倍数 -
q: q是p-1的素因子,其中要求 -
g: 其中h满足,并且 -
x: x是一个随机的整数,满足,这个作为用户的私钥 -
y: 作为用户的公钥 -
k: 一个随机值,满足
签名过程
接下来,我们来看一下DSA签名算法的过程,整体过程并不复杂,具体过程如下
这样就完成了,签名的过程。
验签过程
接下来我们一起来看一下签名验证的过程,具体过程如下
-
验证
到这里,其实有关DSA算法就讲解完成了,这里又水完了一篇文章,溜了溜了。
参考资料
-
https://mp.weixin.qq.com/s/FQUKryWExFt_iM4qeWRvHA -
https://en.wikipedia.org/wiki/Digital_Signature_Algorithm -
https://csrc.nist.gov/pubs/fips/186-5/final
原文始发于微信公众号(Coder小Q):【密码学】一文读懂DSA
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论