基础 | 安全 - [加密]

INDEX

      • [§1 加密类型](#§1 加密类型)
        • [§1.1 对称加密](#§1.1 对称加密)
        • [§1.2 非对称加密](#§1.2 非对称加密)
        • [§1.3 混合加密](#§1.3 混合加密)
        • [§1.4 摘要算法](#§1.4 摘要算法)
        • [§1.5 数据证书](#§1.5 数据证书)

§1 加密类型

§1.1 对称加密

即加密解密的秘钥是一样的,报文用什么加密就需要用什么解密
优点:快,模型简单
缺点:安全性查,秘钥需要通讯双方公有,若秘钥泄漏,等同于不加密:

  • 报文因为有秘钥加密,所以安全了
  • 但是秘钥本身的传输并不安全
  • 而有了秘钥就能解密所以报文也不安全
§1.2 非对称加密

即加密、解密使用的秘钥是不一样的

  • 秘钥分为两把:公钥、私钥
  • 两把秘钥成对出现
  • 每对秘钥中,公钥加密私钥可解,私钥加密公钥可解

优点:安全,即使秘钥泄露也
缺点:运算速度慢

用法:

  • 信息加密:用 A 的公钥加密消息,只有 A 的私钥可以解密,A 的私钥一定在自己手上,解密成功说明消息就是发给 A 的。则 B -> A 的消息相当于做了加密
  • 身份认证:用 A 的私钥加密消息,只有对应的 A 的公钥可以解密,如果解密成功,说明消息是 A 发出的,相当于 A 给消息做了签名:这消息我发的

实际使用过程中,以 A->B 发消息为例,需要保证下面个事才是一定安全

  • 消息是 A 发出的
  • 消息是发给 B 的

过程如下

  • A 持有自己的私钥和 B 的公钥
  • B 持有自己的私钥和 A 的公钥
  • A 用自己的私钥做加密,只有 A 的公钥可解,保证的消息是 A 发的
  • A 用 B 的公钥加密,只有 B 的私钥可解,保证消息是发给 B 的
§1.3 混合加密

用非对称加密的方式加密对称加密的秘钥,以同时获取对称加密的快速以及非对称加密的安全性

§1.4 摘要算法

将消息经过摘要算法得到一个字符串,即数据指纹

  • 一般是 hash 算法
  • 得到一个固定长度的 hash 串,无论报文长度,此串长度固定
  • 更改任意一点报文后,得到的 hash 串的内容一般都会有很大的差别
  • 上述过程是不可逆的(但可以通过暴力映射,所谓的破解一部分)

如果传输前后,数据指纹不一致,说明传输后得到的内容和期望的不同

  • 可能是数据在网络传输的过程中出现了错误
  • 可能是数据在网络传输的过程中被拦截并被伪造

优点:简单,可以保证传输前后数据一致(但注意这里的传输只是保证了网络传输本身)
缺点:单独使用安全性差,需要结合其他加密方式

用法(数据签名):

  • A 需要发送 123 给 B

  • 123 经过摘要算法得到数据指纹,比如 202CB962AC59075B964B07152D234B70

  • 原报文和数据指纹组成完整报文,并发送给 B

    复制代码
    123
    202CB962AC59075B964B07152D234B70
  • B 得到报文,拆出数据指纹和原始报文 123

  • 用同样的摘要算法计算原始报文,结果与数据指纹比较,一致说明传输过程没有问题

上面的用法中,若有人拦截了通信,修改了报文与签名是依然可以通过的。因此摘要算法需要结合其他加密方式使用:

  • A 需要发送 123 给 B

  • 123 经过摘要算法得到数据指纹,比如 202CB962AC59075B964B07152D234B70

  • 数据指纹使用非对称加密得到密文,比如 abc

  • 原报文和数据指纹的密文组成完整报文,并发送给 B

    复制代码
    123
    abc
  • B 得到报文,拆出数据指纹的密文 abc 和原始报文 123

  • B 对 abc 进行非对称解密得到数据指纹 202CB962AC59075B964B07152D234B70

  • 用同样的摘要算法计算原始报文,结果与数据指纹比较,一致说明传输过程没有问题

§1.5 数据证书

非对称加密中存在另一个问题,公钥私钥是成堆出现的,公钥是公开的,主要用于解决"消息是发给谁的"问题

但公开的公钥安全性本身是由漏洞的,在于公钥的伪造,以 A -> B 通信为例:

  • A 要给 B 发信息,需要获取 B 的公钥
  • A 从网络上获取 B 的公钥
    • 获取公钥的请求被拦截
    • 拦截的请求里返回了 C 的公钥
    • A 把 C 的公钥当做了 B 的公钥
  • A 用 B 的公钥(实际是 C 的公钥)加密信息,发送给 B
  • 此请求被 C 拦截
    • C 用自己的私钥解密,得到了原始信息
    • C 用 B 的公钥加密,发送给 B
    • 于是 A -> B 的通信确实完成了,但通信内容被 C 所知,同时 AB 双方无感

为解决此问题需要引入数据证书,数据证书就是为了解决 公钥的信任 的问题

数据证书由证书认证机构(CA,Certificate Authority)颁发

在完整的传输过程中,数据签名和数据证书是都需要携带的

相关推荐
gaize121314 小时前
如何确保服务器的安全性
网络·安全·web安全
Guheyunyi1 天前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
中科固源1 天前
应用层|低空应用安全的 “精工锻造者”,中科数测以多工具矩阵赋能应用从开发到运维的全周期安全
安全·网络安全·低空
八月的雨季 最後的冰吻1 天前
FFmepg-- 32-ffplay源码- PacketQueue 的线程安全机制 以及 serial 字段的作用
安全·ffmpeg
JZC_xiaozhong1 天前
多系统并行的权限治理难题:如何消除“权限孤岛”与安全风险?
安全·数据安全·etl工程师·iam·数据集成与应用集成·多系统权限管理·统一数据集成
北京聚信万通科技有限公司1 天前
传输协议:AS3
服务器·网络·安全·电子数据交换·as3
互亿无线明明1 天前
国际金融短信:如何为跨境金融业务构建稳定安全的消息通知链路?
java·python·安全·eclipse·django·virtualenv·pygame
白帽子凯哥哥1 天前
转行网络安全学习计划与报班建议
学习·安全·web安全·网络安全·渗透测试·漏洞挖掘·网安培训
ReaF_star1 天前
【基线】关于Debian的一些简单安全配置及验证
学习·安全·debian
kali-Myon1 天前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux