01-加密技术,数字签名,数字证书
文章目录
. Table of Contents
- Table of Contents
- 1:前言 Perface
- 2:数字签名 digitial signature
- 3:数字证书 (Digital Certificate, CA)
- 4:对称加密和非对称加密
- 5:总结
1:前言 Perface
- 什么是数字签名,数字签名的作用是什么?
- 什么是数字证书,数字证书解决了什么问题?
- 什么是对称加密和对称加密,区别是什么?
- 非对称加密公私钥都可加密,那什么时候用用公钥加密,什么时候用私钥加密?
- 为什么要对数据的摘要进行签名,而不是计算原始数据的数字签名?
加密 encrypt 解密 decrypt
- Summary
2:数字签名 digitial signature
A —-(sign)—-> B
2.1 什么是数字签名
数字签名 是只有信息的发送者才能生产的别人无法伪造的一段字符串,是对信息发送者真实性的一个有效证明。
1: 数字签名是公钥密码的逆应用:用私钥加密数据,公钥解密数据。 2: 用私钥加密的信息称为签名,只有拥有私钥的用户可以生成签名 signature。 3: 用公钥解密签名称为验证签名,所有拥有公钥的用户都可以验证签名。
2.1.1 生成数字签名
一般来说,不直接对消息进行签名,而是对消息的哈希值进行签名,步骤如下:
- 对消息进行 hash 计算,得到 hash 值;
- 发送者利用私钥对 hash 值进行加密,生成签名;
- 将签名附在消息后面,一起发送出去。
2.1.2 验证签名
- 消息接收者收到消息之后,提取消息中的签名;
- 用公钥进行 decrypt,得到哈希值 1;
- 对消息的正文进行 decrypt,得到哈希值 2;
- 比较哈希值 1 和哈希值 2,如果相同,则校验成功。
2.2 数字签名算法(摘要算法 digest)
摘要算法 是将一段任意长度的数据转换为一个定长,不可逆的数字,其长度通常在 128~256 之间。
MD5 生成 128 位摘要, SHA1 生成 160 位摘要,MD5 速度更快,SHA1 安全性更高。
[md5 加密解密] https://github.com/lppgo/my_test/blob/master/000_utils/util1.md
[sha1:]
|
|
3:数字证书 (Digital Certificate, CA)
公钥是公开的并且可以自行导入到电脑,如果有人比如 C 偷偷在 B 的电脑用自己公钥替换了 A 的公钥,然后用自己的私钥给 B 发送 Email,这时 B 收到邮件其实是被 C 冒充的但是他无法察觉。这种情况安全漏洞的根源就是公钥很容易被篡改。
-
首先 A 去找"证书中心"(certificate authority,简称 CA),为公钥做认证。证书中心用自己的私钥,对 A 的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate):
-
A 在邮件正文下方除了数字签名,另外加上这张数字证书:
-
B 收到 Email 后用 CA 的公钥解密这份数字证书,拿到 A 的公钥,然后验证数字签名,后面流程就和图 1 的流程一样了,不再赘述.
几点疑惑: (1). 假设数字证书被伪造了呢? 答案:是的,传输中数字证书有可能被篡改。因此数字证书也是经过数字签名的,上文说道数字签名的作用就是验证数据来源以及数据完整性!B 收到邮件后可以先验证这份数字证书的可靠性,通过后再验证数字签名。 (2). 要是有 1 万个人要给 B 发邮件,难道 B 要保存 1 万份不同的 CA 公钥吗? 答案:不需要,CA 认证中心给可以给 B 一份“根证书”,里面存储 CA 公钥来验证所有 CA 分中心颁发的数字证书。CA 中心是分叉树结构,类似于公安部->省公安厅->市级派出所,不管 A 从哪个 CA 分支机构申请的证书,B 只要预存根证书就可以验证下级证书可靠性。 (3). 如何验证根证书可靠性? 答案:无法验证。根证书是自验证证书,CA 机构是获得社会绝对认可和有绝对权威的第三方机构,这一点保证了根证书的绝对可靠。
4:对称加密和非对称加密
对称加密算法只是为了区分非对称加密算法。其中鲜明的特点是对称加密是加密解密使用相同的密钥,而非对称加密加密和解密时使用的密钥不一样。对于大部分情况我们都使用对称加密,而对称加密的密钥交换时使用非对称加密,这有效保护密钥的安全。非对称加密加密和解密密钥不同,那么它的安全性是无疑最高的,但是它加密解密的速度很慢,不适合对大数据加密。而对称加密加密速度快,因此混合使用最好。
4.1 对称加密
4.1.1 DES
一共有三个参数入口(原文,密钥,加密模式)。
4.1.2 AES
高级加密标准,新一代标准,加密速度更快,安全性更高。 AES 加解密示例
4.1.3 对称加密特点
- 密钥管理: 比较难,不适合互联网,一般用于内部系统
- 安全性:中
- 加密速度: 比非对称加密速度快得多,适合大量数据的加解密
4.2 非对称加密
一般是私钥,公钥进行加解密。分为公钥(public key)和私钥(private key).公钥可以公开,而私钥自己保存。
4.2.1 RSA
4.2.2 DSA
4.2.3 ECC
4.2.4 非对称加密特点
- 密钥管理: 比较容易
- 安全性:高
- 加密速度: 比较慢,适合 小数据量 加解密或数据签名
5:总结
代码实现:https://github.com/lppgo/my_test/tree/master/033_%E5%8A%A0%E8%A7%A3%E5%AF%86
5.1 散列算法(摘要算法)比较
名称 | 安全性 | 速度 | 其他 |
---|---|---|---|
MD5 | 中 | 快 | |
SHA1 | 高 | 慢 |
5.2 对称加密算法比较
名称 | 密钥长度 | 运行速度 | 安全性 | 资源消耗 |
---|---|---|---|---|
DES | 56 位 | 较快 | 低 | 中 |
3DES | 112 或 168 位 | 慢 | 中 | 高 |
AES | 128,192,256 位 | 快 | 高 | 低 |
5.3 非对称加密算法比较
名称 | 安全性 | 运行速度 | 资源消耗 |
---|---|---|---|
RSA | 高 | 中 | 中 |
ECC | 高 | 慢 | 高 |
文章作者 lucas
上次更新 2022-03-04 (b3cbdf7)