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

本文介绍了嵌入式开发中数据安全的重要性和在OTA升级中的应用,重点讲解了对称加密、非对称加密(公钥私钥原理),以及数字签名(验证数据完整性和来源)的概念。还详细阐述了数字证书的作用和验证过程,以OpenSSL为例展示了在实际开发中的实现方式。
摘要由CSDN通过智能技术生成

说明:本文属于学习笔记,借鉴了很多经典网文,已记不清出处,如有侵权,请告知。

前言:

        嵌入式开发时,绕不开数据安全问题。最近又在做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资料很多,不再赘述。

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值