3.1、密码学基础

目录

    • 密码学概念与法律
    • 密码安全分析
    • 密码体制分类 - 私钥密码/对称密码体制
    • 密码体制分类 - 公钥密码/非对称密码体制
    • 密码体制分类 - 混合密码体制

密码学概念与法律

密码学主要是由密码编码以及密码分析两个部分组成,密码编码就是加密,密码分析就是把我们的密文变化成相应的明文,就是解密

跟密码相关的有两个法律,密码法在2020年1月1日起开始实施。2005年,实施了电子签名法

密码学相关的一些概念,罗列了一些明文密文,加密解密、加密算法、解密算法,密钥,明文就是需要保护的一些信息,密文就是我们用密码学的一些技术手段把明文经过一系列的变化和处理而变成加密的消息,这就是密文

加密就是把明文变换成密文的过程叫加密,解密正好相反。加密算法,它是加密过程中使用的一系列运算规则,我们把它叫做加密算法,解密算法是解密过程当中运用的一系列操作,规则是密钥

举个例子,你压缩一个文件,可能你要加密压缩,你需要输入一个密码,那这就是密钥
在这里插入图片描述

密码安全分析

唯密文攻击就密码的分析者,他只拥有一个或者多个用同一个密钥生成的密文,其他啥都不知道,这叫唯密文攻击

第二种已知明文攻击,就密码的分析者或者叫密码的破译者,他根据已经知道的某些明文对应的密文来进行密码破解,他知道某些明文,并且知道这些明文它对应的密文是什么,这是他知道的信息

选择明文攻击是密码分析者能够选择明文并获取相应的密文,就是对我们攻击者更有利一点,你能够选择一些明文,然后得到这些明文的密文,这种是对密码分析者、对破译者是十分有利的,适合用于攻击计算机文件系统和数据库系统

第四个密文验证攻击,分析者可以对于任何选定的密文,能够验证这个密文是否合法,知道这个密文是不是通过相应的合法的算法生成出来的,它只能验证你是否合法,也就是yes or no,具体的内容,他也分析不出来,他只能知道你给的这个密文是不是通过我们加密的算法来生成的,别的他都不知道

第五种叫选择密文攻击,是密码分析者能够选择密文并获得相应的明文。这也是对密码分析者十分有利的一种情况,它主要用来攻击公钥密码体制,特别是数字签名,你能选择一定的密文,并且获得它的明文

有人说选择密文或者明文攻击,这不就破译了,我把我的密文全部选择,然后你把所有的明文都给解析出来了,这不就破译了,这里面需要注意的是它是能够选择,但不能全选,只能选择一部分密文,然后获取相应的明文信息,这叫选择密文攻击

密码体制分类 - 私钥密码/对称密码体制

密码体制的分类主要分成三类,私钥、公钥和混合密码体制

私钥密码体制,又称对称密码体制,该体制的特点是加密和解密的密钥是相同的。像我们对一个文件进行加密,密码一二三,你把加密之后发给其他人,他解密也是用一二三去解密,这就是加密和解密的密钥相同,这就是对称密码体制

明文通过一个密钥加密,然后转换成密文,密文通过一个密钥解密成为明文,其中加密和解密密钥这两个东西是一样的。消息的收发双方必须事先通过安全的渠道交换密钥。

在这种对称密钥体制里边,比较大的一个难题就是你要通过安全渠道交换密钥。反正不要走同一个信道,万一同时被截获了,那就加密跟没加密一样,所以在这种密码体制里面,你要解决通过安全渠道去交换密钥。就这种私钥密码体制或叫对称密码体制,它的优点是加密的速度是比较快的

密文紧凑,比如说10t的明文,我加完密之后依旧是10t或者10.2t,这就是紧凑,没有多大变化。

使用长密钥时,比较难破解

3DES,我们常用的密钥是112位,所以DES是不太安全的,容易被破解,但3DES就比较安全了,密钥比较长,甚至我们可以用更长的密钥,密钥比较长就比较难破解,所以它这种算法还是比较安全的,缺点就是密钥的分配比较难,我怎么把我的密钥从a传到b是比较麻烦的,你要保证密钥分配的安全问题

第二个是密钥管理问题,比如说我的系统里边,它有很多用户,比如说abcd,AB之间要保存一对密钥,AD之间一对,AC之间一对,CD之间一对,BC之间一对,然后BD之间还有一对,如果用户一多密钥就比较多,密钥的管理是一个很大的难题

它的密钥一共是二的n×n- 1个密钥,n就是表示我们通信主体的数量,如果你想一下有1000个用户要通信,那算下来,密钥是非常多的,怎么去管理就会成为一个大的难题,第三个是无法进行原认证,这里边我们提到的对策密码体制,它的缺点其实都是我们后面要讲的,非对策密码体制或叫公钥密码体制,它的优点

密码体制分类 - 公钥密码/非对称密码体制

公钥密码,也叫非对称密码体制,就是加解密加密和解密,它的密钥是不一样的

公钥密码体制,非对称密码体制加密和解密的密钥就是不相同的

它的优点是密钥分发方便,因为公钥是公开的,它有两个密钥。公钥密码体制,有两个密钥,第一个公钥是公开的,另外一个是私钥自己保存的,每个人都只有两个密钥,如果1000个人,一共2000个密钥,每个人一个公钥,一个私钥,而且私钥是自己保存的,公钥公开,相当于我自己保存的就只有私钥,1000个用户,1000个私钥,所以它的分发是比较方便的,密钥数量比较少,密钥分发方便

密钥分发有专门的公钥密码算法,密钥的保管比较少,支持数字签名

缺点是加密的速度会比较慢,因为计算量很大,所以它不太适合用于大量数据的加密。大量数据的加密,一般我们还是用对称密码算法,因为它速度会比较快,第二个缺点就是数据的膨胀率太高了,就实体的数据,用公钥密码算法一加密,加完之后变成100t了,
这玩意儿膨胀率太高了

其实在实际的应用当中是公钥密码算法和私钥密码算法两个一起用的,就是对称和非对称一起去用

在非对称密码体制里边,每个实体,每个用户,他有两个密钥,一个公钥,一个私钥,公钥是公开的,私钥自己保存,公钥加密,用私钥去解密,这个可以用于实现我们的保密通信

比如说a要向b发一个数据,是用b的公钥进行加密,b收到之后用自己的私钥进行解密,因为b收到之后,b才能用自己的私钥进行解密,如果a发出来,c收到不能解密,因为c是默认是没有b的私钥的,私钥自己保存,只有自己有,这样就实现了保密通信

用私钥进行加密,对方用公钥进行解密,这样可以实现数字签名,
主要是为了防止抗抵赖性,私钥只有你自己有,你用私钥进行加密之后,我如果能用你的公钥进行验证,就表示的确是你用私钥进行加密的,这个过程其实也叫私钥签名的过程,公钥解密也叫公钥验证的过程

常见的非对称加密算法,首先最重要的是rsa,没有之一了,它的密钥可以是512位,也可能是1024位,计算量极大,难以被破解

其他的非对称加密算法,还有ecc、背包算法、DH等等。

密码体制分类 - 混合密码体制

我们的对称和非对称都有一些问题,对称它最大的问题,就是密钥分发,密钥管理,无法进行原认证,那这些问题正好是非对称的优点

非对称的优点,加密速度快,密纹紧凑,难以破解。非对称密码缺点是速度慢,数据膨胀率高,正好你的优点就是我的缺点,两个融合一下,这就互补了,融合一下就是混合密码体制

混合密码体制是发送方用对称密钥进行数据的加密,然后再用接收方的公钥来加密对称密钥,然后再一起发送给接收方,接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文

哈希算法来验证消息的完整性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题

小剧场 最近为了给项目组提供一个能给Java程序替换前端、后端的增量的流水线,继续写上了声明式流水线。 替换增量是根据JSON配置文件去增量目录里去取再替换到对应位置的,替换前需要判断增量文件是否存在。 判断文件是否存在?作为一个老Ja…

Vue中实现大文件的切片并发下载和下载进度展示

Vue中实现大文件的切片下载 切片下载需要后端提供两个接口,第一个接口用来获取当前下载文件的总切片数,第二个接口用来获取具体某一个切片的内容。 界面展示 数据流展示 代码 接口 // 切片下载-获取文件的总切片数 export function getChunkDownload…

Hive-数据倾斜优化

数据倾斜的原因 1)key分布不均匀,本质上就是业务数据有可能会存在倾斜 2)某些SQL语句本身就有数据倾斜 关键词 情形 后果 Join A、其中一个表较小,但是key集中; B、两张表都是大表,key不均 分发到…

java通过lombok自动生成getter/setter方法、无参构造器、toString方法

文章目录 在IDEA打开允许注解在类名上面使用Data注解 在IDEA打开允许注解 打开设置 在类名上面使用Data注解 按住AltEnter键 等依赖下载完成后上面会新增一行import lombok.Data; 完整代码如下: package com.itheima.extendss;import lombok.AllArgsConstru…

RabbitMQ 2025/3/5

高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…

Element UI-Select选择器结合树形控件终极版

Element UI Select选择器控件结合树形控件实现单选和多选&#xff0c;并且通过v-model的方式实现节点的双向绑定&#xff0c;封装成vue组件&#xff0c;文件名为electricity-meter-tree.vue&#xff0c;其代码如下&#xff1a; <template><div><el-select:valu…

9.RabbitMQ消息的可靠性

九、消息的可靠性 1、生产者确认 9.1.1、Confirm模式简介 可能因为网络或者Broker的问题导致①失败,而此时应该让生产者知道消息是否正确发送到了Broker的exchange中&#xff1b; 有两种解决方案&#xff1a; 第一种是开启Confirm(确认)模式&#xff1b;(异步) 第二种是开…

探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(二)

文章目录 2.3.3 极化编码巴氏参数与信道可靠性比特混合生成矩阵编码举例 2.3.4 极化译码最小单元译码串行抵消译码&#xff08;SC译码&#xff09;算法SCL译码算法 2.3.5 总结**Polar 码的优势****Polar 码的主要问题****Polar 码的应用前景** 2.3.6 **参考文档** 本博客为系列…

【我的 PWN 学习手札】House of Emma

House of Emma 参考文献 第七届“湖湘杯” House _OF _Emma | 设计思路与解析-安全KER - 安全资讯平台 文章 - house of emma 心得体会 - 先知社区 前一篇博客【我的 PWN 学习手札】House of Kiwi-CSDN博客的利用手法有两个关键点&#xff0c;其一是利用__malloc_assert进入…

【单片机通信技术】STM32 HAL库 SPI主从机通过串口发送数据

一、说明 使用STM32F103C8T6最小系统板&#xff0c;让板载SPI1与SPI2通信&#xff0c;通过串口收发数据。本文章说明了在配置与编写时遇到的一些问题&#xff0c;以及详细说明如何使用cubeMAX进行代码编写。 二、CubeMAX配置 1.时钟配置选择外部高速时钟 2.系统模式与时钟配…

IDEA 使用codeGPT+deepseek

一、环境准备 1、IDEA 版本要求 安装之前确保 IDEA 处于 2023.x 及以上的较新版本。 2、Python 环境 安装 Python 3.8 或更高版本 为了确保 DeepSeek 助手能够顺利运行&#xff0c;您需要在操作系统中预先配置 Python 环境。具体来说&#xff0c;您需要安装 Python 3.8 或更高…

Vue 3 实现富文本内容导出 Word 文档:前端直出方案与优化实践

本文将深入讲解如何通过纯前端方案将富文本内容直接导出为符合中文排版规范的 Word 文档&#xff0c;对比传统服务端生成方案&#xff0c;本方案可降低服务器压力 80% 以上&#xff0c;同时支持即时下载功能。 一、功能全景图 该方案实现以下核心能力&#xff1a; ✅ 纯前端 W…

数据可视化设计-FineBI

数据可视化设计-FineBI 5.1 FineBI概述 5.1.1 FineBI简介 FineBI 是帆软软件有限公司推出的一款商业智能&#xff08;Business Intelligence&#xff09;产品。 FineBI 是新一代大数据分析的 BI 工具&#xff0c;旨在帮助企业的业务人员充分了解和利用他们的数据。FineBI 凭…

一篇文章讲解清楚ARM9芯片启动流程

SAM9X60 ARM9 boot启动流程关键词介绍&#xff1a; 第一级bootloader - 也叫boot ROM&#xff0c;是集成在MPU内部的ROM里面 它的主要功能是执行对MPU的基本初始化和配置&#xff0c;查找并将第二级bootloader从外部NVM中读取出来并放到MPU内部的SRAM. 可以让MPU强制停留在第一…

【JavaSE-6】数组的定义与使用

1、数组的基本概念 1.1、为什么使用数组 为了方便将同一种数据类型的数据进行存储。 1.2、什么是数组 指的是一种容器&#xff0c;可以同来存储同种数据类型的多个值。但是数组容器在存储数据的时候&#xff0c;需要结合隐式转换考虑。如&#xff1a;定义一个int类型的数组…

基于eRDMA实测DeepSeek开源的3FS

DeepSeek昨天开源了3FS分布式文件系统, 通过180个存储节点提供了 6.6TiB/s的存储性能, 全面支持大模型的训练和推理的KVCache转存以及向量数据库等能力, 每个客户端节点支持40GB/s峰值吞吐用于KVCache查找. 发布后, 我们在阿里云ECS上进行了快速的复现, 并进行了性能测试, ECS…

Linux网络编程(20250301)

网络通信&#xff1a;进行不同主机的进程间通信 解决硬件与软件的互联互通 主机-->交换机-->路由器-->广域网-->路由器-->交换机-->主机 IP地址&#xff1a;区分不同主机 MAC地址&#xff1a;计算机硬件地址 端口号&#xff1a;区分主机上的不同进程 1…

JAVA安全—手搓内存马

前言 最近在学这个内存马&#xff0c;就做一个记录&#xff0c;说实话这个内存马还是有点难度的。 什么是内存马 首先什么是内存马呢&#xff0c;顾名思义就是把木马打进内存中。传统的webshell一旦把文件删除就断开连接了&#xff0c;而Java内存马则不同&#xff0c;它将恶…

HarmonyOS学习第11天:布局秘籍RelativeLayout进阶之路

布局基础&#xff1a;RelativeLayout 初印象 在 HarmonyOS 的界面开发中&#xff0c;布局是构建用户界面的关键环节&#xff0c;它决定了各个组件在屏幕上的位置和排列方式。而 RelativeLayout&#xff08;相对布局&#xff09;则是其中一种功能强大且灵活的布局方式&#xff0…

【Bootstrap5】Bootstrap5学习笔记

目的 学完Blazor以后&#xff0c;我自己用这个写了一个小工具&#xff0c;但是我发现自己对前端粗浅的认知确实很难把UI层的组件弄出我想要的样子&#xff0c;所以我思来想去决定再把前端知识补一补.记录基于菜鸟教程的Bootstrap5教程&#xff0c;然后有些不清楚的我还补充一些…