[计算机基础]对称加密算法和非对称加密算法-公钥/私钥-数字签名/数字证书

前言

很长时间没有弄明白. 公钥和私钥, 以及RSA加密算法的关系. 说的就是你Charles模拟Https请求抓包(这个以后再说吧). 本次讲知识点一扫而空.

本文主要包括知识点为:

  • 对称加密和非对称加密
  • 公钥和私钥及数据发送
  • 数字签名
  • 数字证书

对称加密和非对称加密

  • 对称加密
    对称加密, 顾名思义. 加密和解密使用同一把钥匙.
加密: 明文-> 钥匙A(加密) = 密文
解密: 密文-> 钥匙A(解密) =  明文
  • 非对称加密
    非对称加密. 即加密和解密使用的非同一把钥匙. 通常分为一组, 即公钥和私钥. 比较有名的即为RSA加密. 一般来说, 使用公钥加密, 私钥解密. 且通常, 公钥共享, 私钥保留.
    其他值得注意的是, 1. 公钥和私有钥匙是成对出现的. 一个私钥对应一个公钥. 2. 通常, 公钥是通过算法根据私钥计算出的.
加密: 明文->公钥(加密) = 密文
解密: 密文->私钥(解密) = 明文

公钥和私钥

根据上一节所叙述. 可以知道如下3点内容:

  • 公钥和私钥匙是成对出现的.
  • 互联网普遍做法为公钥共享, 私钥保留.
  • 使用公钥进行加密, 使用私钥进行解密. (补充 有时也有使用私钥进行加密, 使用公钥进行解密的情况. Ex. 数字签名.)

举个例子:

例子1: 周芷若和张无忌通信
  • 张无忌, 有一对密文"倚天(明文)"和“屠龙(密文)”.
  • 周芷若发送消息 -> 张无忌
"今晚十点后山见面"(明文) -> 明文加密 (密码: 倚天) -> "12313123xxxa1231"(密文乱码)
  • 张无忌接受消息
"12313123xxxa1231"(密文乱码) -> 密文解密(密码:屠龙) -> "今晚十点后山见面"(明文)
例子2: 张无忌回信给周芷若
  • 周芷若, 有一对密文"神雕(明文)“和"侠侣(密文)”
  • 张无忌回信息 -> 周芷若
“收到, 不见不散”. (明文) -> 明文加密(神雕) -> "43962121777777"(密文乱码)
  • 周芷若收到信息
“4396212177777”(密文乱码) -> 密文解密(侠侣) -> “收到, 不见不散.”(明文)
例子3: 灭绝师太假冒周芷若上线
  • 如果灭绝师太假冒周芷若. 那么问题应该如何处理呢? 灭绝师太应该如何做呢?
  • 做法1: 直接获得周芷若的明文和密文.
  • 做法2: 灭绝师太的明文和密文为: “灭绝”(明) / “师太”(密) 只要替换张无忌处手中的"(神雕/明文)"即可. 替换后的张无忌发送信息为:
“收到, 不见不散”. (明文) -> 明文加密(灭绝) -> "66666643436"(密文乱码)

数字签名

所谓数字签名. 数字签名主要分为2个步骤: 1. 将通信信息生成Hash码. 2.将Hash码通过明文加密. 附在最后一起发给收件者. 数字签名主要保护的是数据的完整性和正确性(防止被篡改). 主要防止数据劫持和数据篡改.

例子4: 篡改时间 苦命鸳鸯

根据例子1改写.

  • 张无忌, 有一对密文"倚天(明文)"和“屠龙(密文)”.
  • 周芷若, 有一对密文"神雕(明文)“和"侠侣(密文)”
  • 周芷若发送消息 -> 张无忌
"今晚十点后山见面"(明文) -> 明文加密 (密码: 倚天) -> "12313123xxxa1231"(密文乱码)
  • 灭绝师太截获信息. 将见面改成不见面.
"今晚十点后山(不)见面"(明文) -> 明文加密 (密码: 倚天) -> "a12313123xxxa1231"(密文乱码)
  • 张无忌接受消息
"a12313123xxxa1231"(密文乱码) -> 密文解密(密码:屠龙) -> "今晚十点后山不见面"(明文)
  • 两人约会告吹.
例子5: 数字签名防止篡改

根据例子4改写.

  • 张无忌, 有一对密文"倚天(明文)"和“屠龙(密文)”.
  • 周芷若, 有一对密文"神雕(明文)“和"侠侣(密文)”
  • 周芷若发送消息 -> 张无忌
"今晚十点后山见面"(明文) -> 明文加密 (密码: 倚天) -> "12313123xxxa1231"(密文乱码)
签名 : "摘要(十点见面)" -> 密文加密 (密码: 侠侣) -> "k423"(密文乱码)
  • 灭绝师太截获信息. 将见面改成不见面.
"今晚十点后山(不)见面"(明文) -> 明文加密 (密码: 倚天) -> "a12313123xxxa1231"(密文乱码)
### 摘要无法修改 因为不知道私钥
"摘要(十点见面)" -> 密文加密 (密码: 侠侣) -> "k423"(密文乱码)
  • 张无忌接受消息
"a12313123xxxa1231"(密文乱码) -> 密文解密(密码:屠龙) -> "今晚十点后山不见面"(明文)
### 签名认证
"k423"(密文乱码) -> 明文解密(密码:神雕) -> "摘要(十点见面)"

张无忌一看. 摘要和信息不符合. 说明信息被篡改了. 不可相信.

值得注意的是. 到底使用明文还是密文加密和解密的问题!!!


数字证书

为了防止用户手中的明文被恶意篡改. 互联网想到了将信息统一上传和机构认证的办法. 明文由上述机构统一授权和认证.

机构 -> (用户B的明文) -> 机构密文加密 -> CA证书
用户A -> 认证机构 (机构明文 / CA) -> 机构明文解密 -> 用户B的明文
例子6: 江湖正义联盟防止江湖骗术

根据例子3我们知道. 会出现我们本地的明文被替换的情况出现. 所以需要将明文信息保存在江湖的正义联盟.

  • 张无忌, 有一对密文"倚天(明文)"和“屠龙(密文)”.
  • 周芷若获取张无忌明文信息.
周芷若 -> 正义联盟 -> CA证书 + 正义联盟明文
周芷若 -> CA证书 (正义联盟明文解密) -> 张无忌明文 (倚天)
  • 周芷若发送消息 -> 张无忌
"今晚十点后山见面"(明文) -> 明文加密 (密码: 倚天) -> "12313123xxxa1231"(密文乱码)
  • 张无忌接受消息
"12313123xxxa1231"(密文乱码) -> 密文解密(密码:屠龙) -> "今晚十点后山见面"(明文)

Reference

[1] 对称加密算法
[2] 浅谈对称加密与非对称加密
[3] 公钥与私钥
[4] 公钥,私钥和数字签名这样最好理解 (转载)

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页