Covid-19给在家工作的措施带来了新的活力,并将企业界带入了一个未开发的阶段。毫无疑问的是,在过去几年中,由于缺乏面对面的交流和标准距离的限制,大多数阅读本文的用户都不得不以数字方式签署一些官方文件。为了维护这类持有关键信息的文件的真实性和完整性,DSA算法被提出并予以通过,成为了验证数字签名的全球标准。bluehost香港服务器提供商分享密码学的数字签名算法(DSA)工作原理和优势
在推进该算法之前,您将对非对称加密进行复习,因为它是根据非对称密码学架构,即被称为公钥密码学架构来验证数字签名的。
什么是非对称加密?
在非对称加密方法中,您将利用两个不同的密钥,一个用于加密,另一个用于解密。您使用公开密钥进行加密并使用私人密钥进行解密。您必须从接收方的一端生成这两个密钥。
第1步:Alice首先使用Bob的公钥对信息进行加密
第2步:加密后的信息到达Bob手中
第3步:Bob用他的秘钥对信息进行解密
这消除了发件人和收件人交换任何密钥的要求,最大限度地减少了被利用的机会窗口。
现在您已经了解了非对称加密是如何发生的,下面将为您介绍数字签名架构是如何建立的。
什么是数字签名?
数字签名的目的是为了验证和核实文件和数据,这对于避免官方文件传输过程中可能产生的篡改和数字修改或伪造是必要的。推荐阅读:《你需要知道的网络安全术语》
除了一个例外——即它们在公钥密码学架构上工作。通常情况下,非对称密钥系统使用公共密钥进行加密并用私人密钥进行解密。然而,对于数字签名来说情况则恰恰相反。签名是用私钥加密,用公钥解密的。因为钥匙是相通的,因此用公钥解密可以验证适当的私钥是用来签署文件的,从而验证签名的来源。
M – 普通文本
H – 哈希函数
h – 杂凑摘要
‘+’ – 同时捆绑明文和摘要
E – 加密
D – 解密
上面的图片显示了从钥匙的签署到验证的整个过程。下面您将通过每个步骤来彻底了解这个过程。
- 第1步:M,原始信息首先被传递给一个用H#表示的哈希函数,以创建一个摘要。
- 第2步:接下来,它将信息与哈希摘要(h)捆绑在一起,并使用发件人的私钥对其进行加密。
- 第3步:它将加密后的捆绑信息发送给接收者,接收者可以使用发送者的公钥对其进行解密。
- 第4步:一旦它解密了信息,它就会通过相同的哈希函数(H#)生成一个类似的摘要。
- 第5步:它将新生成的哈希值与随消息一起收到的捆绑哈希值进行比较。如果它们匹配,那么就验证了数据的完整性。
有两种工业标准的方法能够实现上述方法。它们是:
- RSA算法
- DSA算法
这两种算法的目的相同,但加密和解密功能有相当大的不同。现在您已经明白了在验证签名时应该如何运作,让我们深入了解一下我们今天的重点,即DSA算法。
什么是DSA算法?
数字签名算法是FIPS(联邦信息处理标准)中的数字签名。它于1991年提出,并于1994年由美国国家标准与技术研究所(NIST)进行全球标准化。它在模块化指数化和离散对数问题的框架上发挥作用,而这些问题作为强行突破系统是很难计算的。
DSA算法提供了三个好处,具体如下:
- 信息验证。你可以使用正确的密钥组合来验证发件人的来源。
- 完整性验证:您不能篡改信息,因为它将阻止捆绑的信息被完全解密。
- 不可抵赖性:如果验证了签名,发件人就不能声称他们从未发送过该信息。
上面的图片显示了DSA算法的整个过程。您将在这里使用两个不同的功能,一个是签名功能,一个是验证功能。一个典型的数字签名验证过程的图像与上面的图像的区别在于加密和解密部分。它们拥有不同的参数,您将在本课的下一节中研究DSA算法。推荐阅读:《数据加密的类型、算法、技术以及方法》
DSA算法的步骤
记住上面的图片,继续看看整个过程是如何进行的——即从创建密钥的开始到最后验证签名。
1. 密钥生成
- 首先选择一个素数q,这被称为素数除数。
- 再选择另一个素数p,使p-1 mod q = 0。
- 选择一个整数g(1
- x是我们的私钥,它是一个随机的整数,使得0 < x < q。
- y是我们的公钥,您可以把它计算成y=gx mod p。
- 私钥包是{p,q,g,x}。
- 公钥包是{p,q,g,y}。
2. 签名生成
- 它将原始信息(M)通过哈希函数(H#),得到我们的哈希摘要(h)。
- 它将摘要作为输入传给一个签名函数,其目的是给出两个变量作为输出,即s和r。
- 除了摘要外,您还需要使用一个随机的整数k,使0 < k < q。
- 为了计算r的值,使用公式r=(gk mod p)mod q。
- 要计算s的值,使用公式s = [K-1(h+x . R)mod q]。
- 然后它会将签名打包为{r,s}。
- 信息和签名的整个捆绑{M,r,s}被发送到接收方。
3. 签名验证
- 使用相同的哈希函数(H#)来生成摘要 h。
- 然后把这个摘要传递给验证函数,它也需要其他的变量作为参数。
- 计算w的值,以便:s*w mod q = 1
- 从公式中计算出u1的值,u1=h*w mod q
- 从公式中计算u2的值,u2 = r*w mod q
- 最后的验证组件v,计算为v = [((gu1 . yu2) mod p) mod q]。
- 它将v的值与束中收到的r的值进行比较。
- 如果匹配,签名验证就完成了。
在了解了DSA算法的功能后,您应该已经知道了这种算法与RSA算法等替代标准相比有哪些优势。
DSA的优势
- 高度稳健:与其他签名验证算法相比,DSA在安全性和稳定性方面是非常稳健的。
- 速度更快:与RSA算法等相比,密钥生成的速度要快得多。
- 更少的存储空间:DSA需要较少的存储空间就能完成其整个周期的工作。
- 无专利:当NIST发布时,它是无专利的,使其能够在全球范围内免费使用。
总结
至此,您已经了解了非对称密码学的重要性、数字签名的工作原理、DSA的功能、签名验证所涉及的步骤以及它与同类产品相比的优势。希望本教程能帮助您理解DSA算法。推荐相关阅读:《由于未加密的信息而导致的数据泄露代表着巨大的商业风险》