当前位置: 首页 > news >正文

加解密算法相关技术详解

文章目录

    • 简介
    • 工作机制
      • 加解密
        • 对称密钥算法
        • 非对称密钥算法
      • 数字信封
      • 数字签名
      • 数字证书
      • 技术对比
    • 推荐阅读

简介

随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。

  • 加密:加密就是对原来为明文的文件或数据按某种算法进行处理,使其成为一段不可读的代码,通常称为 “密文”。从而达到保护数据不被非法窃取的目的。
  • 解密:解密就是加密的逆过程,即将密文转化为其原来明文的过程。

加密技术分为对称加密和非对称加密。

对称加密是指使用同一个密钥对数据进行解密;非对称加密是指用一对公私钥分别对数据进行加解密。

本文将介绍加解密技术,以及在加解密算法基础上衍生出来的数字信封、数字签名和数字证书技术。

工作机制

加解密

对称密钥算法

对称密钥算法又称为共享密钥算法,它使用同一个密钥对数据进行加密和解密。对称密钥算法加解密的过程如下图所示。
在这里插入图片描述
用户A和用户B协商好对称密钥后,加解密过程如下:
① 用户A使用对称密钥将明文加密,并将密文发送给用户B。
② 用户B收到密文后,用对称密钥对密文进行解密,得到最初的明文。

非对称密钥算法

非对称密钥算法又称为公钥加密算法。每个用户都拥有两个密钥:一个可对外界公开,称为“公钥”;一个只有所有者知道,称为“私钥”。

公钥和私钥配合使用,一个用于加密,一个用于解密。通常发送方以接收方的公钥作为加密密钥,接收方使用自己的私钥作为解密密钥。非对称密钥算法加解密的过程如下图所示。
在这里插入图片描述
用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用用户B的公钥对明文加密,并将密文发送给用户B。
② 用户B收到密文后,用自己的私钥对密文进行解密,得到最初的明文。

数字信封

数字信封技术结合了对称加密算法和非对称加密算法的优点,发送方首先利用对称密钥加密明文,再利用接收方的公钥加密对称密钥,被接收方公钥加密后的对称密钥被称为数字信封。

接收方收到信息后,若要解密信息,必须先用自己的私钥解密数字信封,得到对称密钥,才能利用对称密钥解密收到的信息。数字信封的加解密过程如下图所示。
在这里插入图片描述
用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用对称密钥对明文加密,生成密文。
② 用户A使用用户B的公钥加密对称密钥,生成数字信封。
③ 用户A将数字信封和密文信息一起发送给用户B 。
④ 用户B接收到用户A发送的加密信息后,使用自己的私钥打开数字信封,得到对称密钥。
⑤ 用户B使用对称密钥对密文进行解密,得到最初的明文。

数字签名

为了进一步提升加密算法传输数据的可靠性(防止数据被篡改),数字签名技术应运而生。发送方用自己的私钥加密摘要(对明文进行哈希得到)得到数字签名,可根据实际是否存在保证数据私密性的需求,选择发送明文或者密文给接收方。

  • 若无需保证传输数据的私密性,直接将明文和数字签名一起发给接收方。

  • 若需要保证传输数据的私密性,可根据上文中对称加密和非对称加密的特点,选择其中一种加密算法加密明文生成密文,将密文和数字签名一起发给接收方。

    接收方收到后,执行以下操作:

    a) 使用与发送方相同的哈希算法对收到或者解密得到的明文进行哈希,得到摘要。
    b) 使用发送方的公钥解密数字签名得到摘要。
    c) 将上述两个步骤中的摘要进行对比:

    • 如果一致,则表示收到的明文没有未被篡改,是完整可信的。
    • 如果不一致,则表示收到的明文已被篡改,是不可信。

下图以非对称加密与数字签名结合为例,说明数字签名的加密过程。
在这里插入图片描述
用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用用户B的公钥对明文加密,生成密文。
② 用户A使用哈希算法对明文进行哈希计算,生成摘要信息。
③ 用户A使用自己的私钥对摘要信息进行加密,生成数字签名。
④ 用户A将密文和数字签名一起发送给用户B。
⑤ 用户B使用用户A的公钥对数字签名进行解密,得到摘要信息。
⑥ 用户B接收到用户A的加密信息后,使用自己的私钥对密文进行解密,得到最初的明文。
⑦ 用户B使用与用户A相同的哈希算法对明文进行哈希计算,生成摘要信息。
⑧ 用户B将生成的摘要信息与从A收到的摘要信息进行比对。

  • 如果一致,表示明文未经过篡改,则接受明文。
  • 如果不一致,表示明文被篡改过,则丢弃明文。

数字证书

在应用公钥的加解密技术(非对称加密、数字信封、数字签名)中,由于无法保证公钥来源的可靠性(加解密使用的公钥一定属于指定所属者),从而存在安全隐患。以数字签名技术为例,攻击者使用自己的公钥替换了接收方本地保存的发送方公钥,将伪造的信息和用自己私钥加密得到的数字签名发给接收方,接收方使用本地保存的发送者的公钥(已被替换为攻击者的公钥)可以正常进行解密以及数据完整性校验,导致接收方无法甄别收到的消息为伪造的信息。

为了确保公钥来源的可靠性,公钥需要经过权威机构CA (Certificate Authority,证书颁发机构)认证后,才能被认为是可靠性的。

数字证书遵循X.509 V3标准,包含证书签发者名称、持有者名称、公钥信息、CA对证书的数字签名、证书的有效期等多个字段。数字证书的结构如下图所示。
在这里插入图片描述

技术对比

对称加密算法和非对称加密算法为整个加解密技术的基础,在实际使用中,可参照下表中列出的优缺点结合实际需求进行选择。

加密算法优点缺点
对称加密算法1,加密效率高、速度快 2,适用于对大量数据进行加密需要通信时,密钥多不便于管理: •每对通信用户之间都需要协商密钥 •所需交换的密钥数量庞大•密钥交换时,有泄漏风险
非对称加密算法需要通信时,密钥少便于管理:•每对通信用户之间都无需协商密钥(每个通信方只需一对密钥,即可与多个其他方通信) •所需密钥交换的数量少(公钥可批量对外发布,私钥自己保存)•加密效率低、耗时长 •适用于对少量数据进行加密

基于对称加密和非对称加密算法衍生出来的应用技术的作用及优势如下表所示。

技术类型作用及优势
数字信封用于确保数据传输的私密性,结合了两种加密技术的优点:•通过对称加密算法加密明文,加密耗时短、效率高 •通过非对称加密算法加密对称密钥,确保对称密钥传递的可靠性
数字签名用于确保数据传输的完整性,提升数据传输的可靠性,确保收到的数据信息未经过篡改
数字证书用于确保公钥来源的可靠性,通过权威机构CA签发证书方 式解决了无法确定公钥属于指定拥有者的问题

推荐阅读

  • 善用exchange server自带的反垃圾邮件功能过滤垃圾邮件
  • 为 WinHTTP 配置SSL\TLS安全协议
  • 剖析AI诈骗成立的前提条件将有助于制定更有效的对策来防范AI诈骗
  • Wi-Fi 6和5G 在应用场景上的区别
  • HTTP状态码504(Gateway Timeout)报错原因分析和解决办法
  • Ubuntu挂载NFS(Network File System) ,怎么解决权限不一致的问题?
  • 专门为Web应用程序提供安全保护的设备-WAF

相关文章:

加解密算法相关技术详解

文章目录 简介工作机制加解密对称密钥算法非对称密钥算法 数字信封数字签名数字证书技术对比 推荐阅读 简介 随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。 加密&#xff1…...

Clickhouse学习笔记(13)—— Materialize MySQL引擎

该引擎用于监听 binlog 事件,类似于canal、Maxwell等组件 ClickHouse 20.8.2.3 版本新增加了 MaterializeMySQL 的 database 引擎,该 database 能映射到 MySQL中的某个database ,并自动在ClickHouse中创建对应ReplacingMergeTree。 ClickHous…...

《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox

1、按钮组QButtonGroup 如果有多个单选按钮,可以统一放进一个按钮组。 图中有三个单选按钮放进了一个QGroupBox,并且设置了水平布局,现在要将这三个单选按钮放进一个按钮组,之前的想法是先把三个按钮加入按钮组,再把按钮组放进QG…...

Ansible--playbook剧本

目录 一、playbook: playbook的组成: palybook的编写注意事项 二、playbook的编写格式(示例) 2.1 编写yaml文件 2.2 定义、引用变量 2.3 指定远程主机sudo切换用户 2.4 when条件判断 2.5 迭代 2.6 Templates 模块 2.7 tags 模…...

MacOS下VMware Fusion配置静态IP

前言 在虚拟机安装系统后,默认是通过DHCP动态分配的IP,这会导致每次重启虚拟机ip都可能会改变,使用起来会有很多不便。 配置静态IP 查看主机网关地址 cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf 查看主机DNS,m…...

三、机器学习基础知识:Python常用机器学习库(中文文本分析相关库)

文章目录 1、Jieba库1.1 主要函数1.2 词性标注1.3 关键词提取 2、WordCloud库2.1 常见参数2.2 词云绘制 文本分析是指对文本的表示及其特征的提取,它把从文本中提取出来的特征词进行量化来表示文本信息,经常被应用到文本挖掘以及信息检索的过程当中。 1、…...

Nginx 使用笔记大全(唯一入口)

Linux服务器因为Nginx日志access.log文件过大项目无法访问 项目处于运行状态下无法访问,第一步查看磁盘状态 1、查看磁盘状态 df -h 2、查找100M以上的文件 find / -size 100M |xargs ls -lh 3、删除文件 rm -rf /usr/local/nginx/logs/access.log 4、配置nginx.…...

数据结构-二叉排序树(建立、查找、修改)

二叉排序树概念 二叉排序树是动态查找表的一种,也是常用的表示方法。 其中,它具有如下性质: 1.若它的左子树非空,则其左子树的所有节点的关键值都小于根节点的关键值。 2.若它的右子树非空,则其右子树的所有节点的…...

Linux 性能优化之使用 Tuned 配置优化方案

写在前面 考试整理相关笔记博文内容涉及 Linux tuned 调优工具的简单认知调优配置文件的简单说明,自定义调优方案介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意&#xff…...

Day02_《MySQL索引与性能优化》

文章目录 一、SQL执行顺序二、索引简介1、关于索引2、索引的类型Btree 索引Btree 索引 三、Explain简介四、Explain 详解1、id2、select_type3、table4、type5、possible_keys6、key7、key_len8、ref9、rows10、Extra11、小案例 五、索引优化1、单表索引优化2、两表索引优化3、…...

(只需三步)Vmvare tools安装教程,实现与windows互通复制粘贴与文件拖拽

首先确保Ubuntu是联网的,如果连不上网可以参考我的这个联网教程,也很简单 (只需三步)虚拟机上vm的ubuntu不能联上网怎么办-CSDN博客 第一步:卸载之前的tools,确保没有残留 sudo apt-get autoremove open-vm-tools 第…...

Android自定义控件:一款多特效的智能loadingView

先上效果图(如果感兴趣请看后面讲解): 1、登录效果展示 2、关注效果展示 1、【画圆角矩形】 画图首先是onDraw方法(我会把圆代码写上,一步一步剖析): 首先在view中定义个属性:priv…...

C语言之初阶指针

一、指针: 其实按照我的理解,当我们写c语言程序的时候,创建的变量,数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号,这个编号也被称为地址编号,就相当于,编号地址指针。 二、指针…...

MongoDB基础知识~

引入MongoDB: 在面对高并发,高效率存储和访问,高扩展性和高可用性等的需求下,我们之前所学习过的关系型数据库(MySql,sql server…)显得有点力不从心,而这些需求在我们的生活中也是随处可见的,例如在社交中…...

41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3示例 2: 输入:nums [3…...

数据结构—数组栈的实现

前言:各位小伙伴们我们前面已经学习了带头双向循环链表,数据结构中还有一些特殊的线性表,如栈和队列,那么我们今天就来实现数组栈。 目录: 一、 栈的概念 二、 栈的实现 三、 代码测试 栈的概念: 栈的概念…...

AI大模型低成本快速定制秘诀:RAG和向量数据库

文章目录 1. 前言2. RAG和向量数据库3. 论坛日程4. 购票方式 1. 前言 当今人工智能领域,最受关注的毋庸置疑是大模型。然而,高昂的训练成本、漫长的训练时间等都成为了制约大多数企业入局大模型的关键瓶颈。 这种背景下,向量数据库凭借其独特…...

Please No More Sigma(构造矩阵)

Please No More Sigma 给f(n)定义如下&#xff1a; f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n&#xff0c;求下式模1e97后的值 Input 第一行一个数字T&#xff0c;表示样例数 以下有T行&#xff0c;每行一个数&#xff0c;表示n。 保证T<100&#xff0c;n<100000…...

HTML设置标签栏的图标

添加此图标最简单的方法无需修改内容&#xff0c;只需按以下步骤操作即可&#xff1a; 1.准备一个 ico 格式的图标 2.将该图标命名为 favicon.ico 3.将图标文件置于index.html同级目录即可 为什么我的没有变化&#xff1f; 答曰&#xff1a;ShiftF5强制刷新一下网页就行了...

4.CentOS7安装MySQL5.7

CentOS7安装MySQL5.7 2023-11-13 小柴你能看到嘛 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1jz4y1A7LS/?vd_source9ba3044ce322000939a31117d762b441 一.解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.在/usr/local解压 tar -xvf mysql-5.7.44-…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...