问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

加解密、签名、验签、数字签名、数字证书

创作时间:
作者:
@小白创作中心

加解密、签名、验签、数字签名、数字证书

引用
CSDN
1.
https://blog.csdn.net/hinewcc/article/details/136819081

嵌入式开发时,绕不开数据安全问题。最近又在做OTA升级相关工作,因此,借此机会学习了加解密、签名、数字证书等知识,并做此笔记。

一、加密、解密

1、对称加密

对称加密是指加密和解密时使用同一个密钥。

2、非对称加密

非对称加密是指加密和解密使用不同的密钥,这两个密钥分别叫做公钥私钥。公钥是可以公开给所有人的,而私钥需要自己保密的。

  • 发送方使用接收方公钥加密的数据只能用接收方私钥解密
  • 同理,发送方私钥“加密”(签名)的数据只能用发送方公钥“解密”(验签):

二、数字签名

数字签名(Digital Signature)也叫作数字指纹(Digital Fingerprint),它是消息摘要算法和非对称加密算法的结合体,能够验证数据的完整性,并且认证数据的来源。

怎么生成摘要???使用hash运算将明文生成摘要,常用的hash算法是SHA-1、MD5、MD2等。

1、验证完整性

数据签名算法的模型分为两个主要阶段:

  • 签名(加签):先计算数据的摘要,再使用私钥对摘要进行加密生成数字签名,将 [数据 + 签名] 一并发送给接收方;
  • 验证(验签):先使用相同的摘要算法计算接收数据的摘要,再使用预先得到的公钥解密签名,对比解密的签名计算的摘要是否一致。若一致,则说明数据没有被篡改。

为什么摘要还需要加密???非安全信道中,数据和摘要都存在篡改风险,攻击者在篡改数据时也可以篡改摘要。因此,摘要算法需要配合加密算法才能严格验证完整性。

2、认证数据来源

  • 发送方:使用私钥对摘要加密,生成数字签名
  • 接收方:使用发送方的公钥解密数字签名,成功生成摘要,说明认证数据来源于发送方。

数字签名的加解密过程示意图

1)甲使用乙的公钥对明文进行加密,生成密文信息。

2)甲使用HASH算法对明文进行HASH运算,生成数字指纹。

3)甲使用自己的私钥对数字指纹进行加密,生成数字签名。

4)甲将密文信息和数字签名一起发送给乙。

5)乙使用甲的公钥对数字签名进行解密,得到数字指纹。

6)乙接收到甲的加密信息后,使用自己的私钥对密文信息进行解密,得到最初的明文。

7)乙使用HASH算法对还原出的明文用与甲所使用的相同HASH算法进行HASH运算,生成数字指纹。然后乙将生成的数字指纹与从甲得到的数字指纹进行比较,如果一致,乙接受明文;如果不一致,乙丢弃明文。

优点:数字签名技术不但证明了信息未被篡改,还证明了发送方的身份。

缺点:数字签名技术也还有一个问题,获取到对方的公钥可能被篡改,并且无法发现。引入数字证书。

三、数字证书

接收方需要使用发送方的公钥来验证数据真实性。那么,接收方怎样才能安全地获得发送方公钥呢?这就需要数字证书来保证。

数字签名和数字证书总是成对出现,二者不可分离。数字签名主要用来验证数据完整性和认证数据来源,而数字证书主要用来安全地发放公钥。数字证书主要包含三个部分:用户的信息、用户的公钥和 CA 对该证书实体信息的签名

数字证书的模型主要分为两个步骤:

1、颁发证书

  • 申请者将签名算法、公钥、有效时间等信息发送给 CA 机构(certifcation authroity, CA);
  • CA 机构验证申请者身份后,将申请者发送的信息打成一个实体,并计算摘要;
  • CA 机构使用自己的私钥对摘要进行加密,生成证书签名(Certificate Signature);
  • CA 机构将证书签名添加在数字证书上,构成完整的数字生出。

2、验证证书

  • 验证方使用相同的摘要算法计算证书实体的摘要;
  • 使用 CA 机构的公钥(浏览器和操作系统中集成了 CA 的公钥信息)解密证书签名;
  • 对比解密后的数据与计算的摘要是否一致,如果一致则是可信任的证书。

完整的证书文件,如下:

上面介绍了很多概念,那么代码中如何实现加解密?答案是OpenSSL,openssl是Linux内置的一款开源工具,实现了常见的密码算法与应用。点到为止,网上openssl资料很多,不再赘述。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号