news 2026/6/23 19:50:59

数字签名与数字证书

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数字签名与数字证书

在介绍数字签名和数字证书前,先简单了解两个算法:Hash算法和RSA算法。

Hash算法:Hash算法是将可变长度的数据块M作为输入,产生固定长度的Hash值(或者叫做摘要)。可以将Hash算法看作一个非常复杂的CRC算法,例如CRC32。CRC32可以对任意长度的数据块计算出长度为4个字节CRC值。

Hash算法具备这样的特点:对于较大的输入集合使用该算法,产生的输出结果均匀地分布且看起来随机。概括的说,Hash算法的首要目标是保证数据的完整性(类似CRC算法,也是用来保证数据的完整性),对于M任何一位或者几位的改变,都将极大地改变Hash值(摘要)。

Hash函数的特性:

(a)对预先指定的Hash值无法找到对应的数据,即从摘要无法推算出原文;

(b)很难找到两个不同的数据块对应相同的Hash值(即抗碰撞性)。由于Hash函数具备上述特性,所以常被用来判断数据是否被篡改。例如数据通信过程中,数据发送方对传输数据计算Hash值,然后将Hash值附在传输数据后面。数据接收方,收到传输数据后和Hash值后,首先对数据进行Hash值计算,如果计算的Hash值等于接收到的Hash值,则认为数据没有被篡改。

RSA算法: RSA是一种公钥算法,属于非对称加密算法。它包含两个密钥:一个私钥和一个公钥,这个两个密钥中的任何一个都可以用来加密,另外一个用来解密。即公钥加密,只有私钥才可以解密出数据,私钥加密只有公钥才可以解密出数据。它的特点:仅根据加密算法和加密密钥无法推算出解密密钥。其主要步骤如下:

(1)每个用户产生一对密钥(即公钥和私钥),用来加密和解密消息。

(2)每个用户需要安全保存(安全保存,即密钥不能被替换,暴露)自己的私钥,将自己的公钥以某种安全方式传递给需要与其通信的用户。如下图a,b所示,每一个用户可以拥有若干个其他用户的公钥。

(3)若Bob要发消息给Alice,则Bob用Alice的公钥对消息加密;

(4)Alice收到消息后,用其私钥对消息进行解密。由于只有Alice知道自身的私钥,所以其他接收者均无法解密出消息。

(5)若Bob要发送消息给Alice,Bob用自己的私钥对消息进行加密;

(6)Alice收到消息后,用Bob的公钥进行解密。由于只有Bob拥有私钥,所以可以证明此消息是Bob发送的,不可能是其他非法用户发送的。这就类似我们日常生活中的“签名”,人的笔记很难被别人模仿,只有签名者能写出。

下面讲解数字签名

1、 鲍勃有两把钥匙,一把是公钥,和一把是私钥。

2、鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊。

3、苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,这样就达到了保密的效果。

4、鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,在鲍勃的私钥没有泄露的情况下,这封信就是安全的,即使落在别人手里,别人也无法解密出来。

5、鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash算法,生成信件的摘要(即之前讲的Hash值)。

6、然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

7、鲍勃将这个签名,附在信件下面,一起发给苏珊。

8、苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。

9、苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信件的内容和数字签名没有被篡改,即信件内容完整,和签名正确(即信件是鲍勃(身份合法)发送的)。如果苏珊计算出来的Hash和公钥解密出来的Hash不一致,则要么数字签名被篡改或者信件内容被篡改。

注:在这个过程中,信件内容是不进行加密的,任何人获取该信件,都是直接读取信件内容。同样拥有公钥的道格,也可以验证信件完整和信件来源。

10、复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,将鲍勃的公钥改成自己的公钥。此时,苏珊实际拥有的是道格的公钥,但是她还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行签名验证。

11、后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)

注:这里认证可以理解为我们的身份证,CA可以认为某个公认的权威机构,如公安局。只要苏珊拿到CA(公安机关)颁布给鲍勃证书(身份证),那么她就可以确认证书的有效性(最多到公安机关再确认一遍)。

12、鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13、苏珊收信后,用CA的公钥解开数字证书,如果证书验证有效(证书的验证也和前面苏珊对鲍勃的签名验证过程一样,只不过这里用的是CA的公钥),那么就可以确认证书的内容有效,没有被篡改。既然内容没被篡改,那么证书中的鲍勃的公钥也是有效的。就可以用证书中的鲍勃的公钥对信件签名进行验证,进而验证信件内容是否有效

注:如何安全保存CA公钥不被替换有多种方式,比如在嵌入式系统中可以使用单片机MPU保护或者采用加密等方式。有的小伙伴可能会说,既然CA的公钥可以安全保存确保不被替换,那鲍勃的公钥可以被安全保存。确实如此,那为什么还需要数字证书呢?有证书的好处是,在同一家认证机构使用相同CA公钥认证过的机器之间是可以相互进行身份识别的。如果有0001、0002、……1000一千个人需要和苏珊进行邮件交流,那么苏珊需要安全存储这1000个人的公钥,对于苏珊来说,管理起来不容易。那么他这1000个人都可以向CA申请一个证书,每次发邮件是附上数字证书就可以了。对于苏珊来说只需要存CA的一把公钥就可以了。

在嵌入式系统中的实际应用场景:

1、引导程序通过数字签名方式,对刷入的App应用程序进行签名验证,如果验证通过,说app来源合法,否则认为刷新失败。

2、通过数字证书,对设备进行身份确认,如果验证通过,则与设备进行通信,否则认为设备非法,不进行后续通信。

转自:https://mp.weixin.qq.com/s/MuEGqHoT_tA-bmYt88IRyg

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:48:47

国密算法全家桶:一文认清 SM 系列 “安全卫士”

一、除了加密还能干嘛 加密技术主要分为三大类:对称加密、非对称加密 和 哈希算法。 加密不仅仅是加密数据那么简单,已经被玩出花来了 在当前数字化时代,无论是支付缴费、身份认证还是业务数据处理,都需要密码技术构筑安全屏障…

作者头像 李华
网站建设 2026/6/23 4:58:27

RocketMQ的事务消息是如何实现的?

RocketMQ 通过 TransactionListener 接口实现事务消息机制,其工作流程如下:发送半消息首先向 Broker 发送一条半消息(状态标记为"prepared"),该消息会被存储在事务日志中但暂不可消费。执行本地事务半消息发…

作者头像 李华
网站建设 2026/6/23 19:28:14

招标平台最难的战斗:在持续变化中保持数据稳定与精准

招标平台的“动态数据治理”:如何应对政策变化、源站改版与信息规范的持续挑战? 一个稳定的招标信息服务平台,其后台并非一成不变。相反,它运行在一个充满动态变化的环境中:采购政策频繁调整、各级官方招标公告网改版…

作者头像 李华
网站建设 2026/6/23 19:34:20

洋驼帮跨境物流

在东南亚电商市场深耕的卖家们,最近都在讨论一个令人振奋的数字:店铺稳定率提升80%。这不是凭空而来的宣传口号,而是5000多位卖家通过实际合作验证的结果。一位有着十年经验的物流行业资深从业者坦言,东南亚市场的物流痛点确实不少…

作者头像 李华