加解密、签名、验签、数字签名、数字证书 您所在的位置:网站首页 简述用非对称加密算法进行数字签名和验证的过程 加解密、签名、验签、数字签名、数字证书

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

2024-07-13 10:46| 来源: 网络整理| 查看: 265

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

前言:

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有