基础 | 安全 - [加密]

INDEX

      • §1 加密类型
        • §1.1 对称加密
        • §1.2 非对称加密
        • §1.3 混合加密
        • §1.4 摘要算法
        • §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)颁发
在完整的传输过程中,数据签名和数据证书是都需要携带的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Win系统本地部署Jupyter Notbook交互笔记并结合内网穿透实现公网远程使用

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中,使用最多的无疑就是各种函数、图表、…

2024第二届语言,教育与艺术鉴赏国际会议(ICLEAA 2024)

2024第二届语言,教育与艺术鉴赏国际会议(ICLEAA 2024) 一、【会议简介】 我们非常荣幸地邀请您参加2024第二届语言,教育与艺术鉴赏国际会议(ICLEAA 2024),该会议将在美丽的苏州举行。 ICLEAA …

美团面试拷打:Redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案

目录: 缓存穿透 什么是缓存穿透? 缓存穿透说简单点就是大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。这就导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨…

Linux centos7新增组和用户

Linux centos7命令 1、Linux centos7新增组和用户 #新增用户组 $groupadd cg #给组新增用户 useradd -g cg cg #修改用户密码 echo "lianshi" | passwd --stdin cg 2、远程拷贝scp scp -r root10.1.1.76:/data/release/xxx/xxx-20240204174841/xxx-202402041…

如何在Win系统部署Tomcat服务并实现远程访问内网站点

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学…

AIOps常见问题

AIOps的自动化通常指什么? AIOps 平台的自动化一般包括以下几个方面: 数据收集和整合:AIOps 平台可以从多个 IT 基础架构组件、应用需求与性能监视工具以及服务工单系统等数据源中收集并整合运维数据,形成一个全面的数据平台。数…

YOLOv9电动车头盔佩戴检测,详细讲解模型训练

向AI转型的程序员都关注了这个号👇👇👇 一、YOLOv9简介 YOLOv9是YOLO系列算法的最新版本。YOLO系列算法自2015年首次提出以来,已经在目标检测领域取得了显著的进展,以其快速和准确的特点而广受欢迎。 论文地址&#xf…

CentOS网络故障排查秘笈:实战指南

前言 作为一名热爱折腾 Linux 的技术达人,我深知网络故障会让人抓狂!在这篇文章里,我和你分享了我的心得体会,从如何分析问题、识别瓶颈,到利用各种神器解决网络难题。不管你是新手小白还是老鸟大神,这里都…

java如何解压压缩包以及利用POI合并表格

jie 这是我在工作中遇到的业务 用户导入压缩包,压缩包里面有多个excel,每个excel有多个sheet,我需要解压,合并所有excel然后读取每一个sheet,最终写入数据库 PostMapping("/importExcelForPVT")ApiOperationSupport(order 9)Ap…

凌鲨微应用开发流程

微应用开发流程 使用vite,nextjs等框架创建前端项目引入需要的api包通过调试界面进行调试 创建前端项目 vite yarn create vitenextjs yarn create next-app引入需要的api包 名称权限说明http跨域访问跨域http访问tauri提供的apilinksaas-minapp/api打开浏览器读本地文件…

自定义注解校验

在日常开发中经常会用到String类型的数据当作数值进行映射,势必会做出数值范围的校验,可以通过自定义注解的办法简化代码实现,减少冗余代码。 Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy St…

【经验分享】 3D新手玩转VisionPro的工作流

第一步:文字生产图片 这样的工具有很多,stable diffusion,Midjourney等来生成图像 第二步:使用图片生3d模型工具 在线的工具有:https://huggingface.co/spaces/stabilityai/TripoSRhttps://huggingface.co/spaces/stabilityai/TripoSR 效果图 代码框架:Gi

CentOS7.9基于Apache2.4+Php7.4+Mysql8.0架构部署Zabbix6.0LTS 亲测验证完美通过方案

前言: Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。 Zabbix 是一个企业级的开源分布式监控解决方案。 Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。 Zabbix 使用灵活的通知机制,…

蓝桥杯-排序

数组排序 Arrays.sort(int[] a) 这种形式是对一个数组的所有元素进行排序,并且时按从小到大的顺序。 package Work;import java.util.*;public class Imcomplete {public static void main(String args[]) {int arr[]new int [] {1,324,4,5,7,2};Arrays.sort(arr)…

安装系统后,如何单个盘空间扩展多个盘空间?

1、计算机-管理-存储-磁盘空间 2、压缩C盘符,分出多余空间 3、将多余空间扩展,然后修改盘符名称

SpringBoot自动装配详解

SpringBoot自动装配 在讲之前先了解一下,手动装配的流程。 在没有Spring Boot的情况下,你需要手动配置和添加相关依赖,以实现类似于Spring Boot自动装配的功能。主要步骤: 引入Spring相关依赖: 首先,你需…

基于springboot+vue实现食品安全管理系统项目【项目源码+论文说明】

基于springboot实现食品安全管理系统演示 摘要 食品行业同其他行业有很多的差别,食品行业不仅要管食品的生产和销售,还要管食品的库存和保质期,那么对于食品管理者来说,就存在着一定的难度。况且食品的种类复杂,存储条…

Redis分段锁,如何设计?

问题场景:热点库存扣减问题 秒杀场景,有一个难度的问题:热点库存扣减问题。 既要保证不发生超卖 又要保证高并发 如果解决这个高难度的问题呢? 答案就是使用redis 分段锁。 什么是分布式锁? 一个分布式系统中&am…

关于OpenAI最新的成果Sora的思考

目录 前言: 1.Sora的技术特点 1.1技术架构 1.2算法原理: 1.2.1自然语言处理(NLP): 1.2.2深度学习: 1.2.3视频生成与编码: 1.3实现过程: 1.3.1NLP(自然语言处理)模…

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新,需要改造之前的代码。代码在https://gitee.com/summer-cat001/config-center​​​​​​​ 服务端改造 服务端增加一个版本号version,新增配置的时候为1,每次更新配置就加1。 Overridepublic long insertConfigDO(…