数字证书 与 数字签名 介绍
目录
- 数字签名
- 什么时候公钥加密数据,什么时候私钥加密数据?
- 消息认证码(MAC)和数字签名 区别
- 数字证书
- 如何使用数字证书验证服务器身份?
数字签名
定义:它类似于现实生活中的手写签名。
手写签名的法律效力
1、每个人的笔迹因生理和心理差异而独一无二,难以复制。签名被视为真实性和有效性的直接证明。
2、手写签名是法律文件生效的核心要件之一,能证明签署人对文件内容的认可与授权。具有不可否认性。
数字签名的过程
(1) 签名过程
1、发送者使用哈希函数(如 SHA-256)对原始数据进行计算,生成一个固定长度的摘要(Message Digest)。
2、签名者用自己的私钥对摘要(Hash 值)进行加密,生成数字签名。
3、签名者将原始数据和签名一起发送给接收方。
(2) 验证过程
4、接收方用签名者的公钥解密签名,得到摘要。
5、接收方重新计算原始数据,得到摘要。两个摘要进行比较,如果一致,则验证通过。
作用:
数据完整性 + 真实性 + 抗抵赖性
完整性如何体现?
发送者使用哈希函数对原始数据进行计算,生成一个固定长度的摘要,收到者使用相同哈希函数对原始数据进行计算,得到相同摘要,就说明数据没有被改动,这就保证了数据完整性。
摘要已经是是公开的,那为何还要引入数字签名呢?
摘要可以验证数据的完整性,但无法验证数据的来源。
通过私钥加密摘要和公钥解密签名,可以确定公钥和私钥是一套的。保证了数据的来源。
公钥能解密且摘要还一致,则说明数据和公钥是从同一个人发出来的。这就保证了数据的真实性。且发送者无法否认自己生成了签名(抗抵赖性)。 但是只能证明公钥百分百是你的,且原始信息没有被修改过,但是无法证明你就是我兄弟。
只有数字签名能否防护中间人攻击?
不能。数字签名只能验证消息的真实性和完整性,接收方无法确定收到的公钥确实属于发送者,如果攻击者伪造身份并提供自己的公钥,接收方可能误以为攻击者是合法发送者。
什么时候公钥加密数据,什么时候私钥加密数据?
非对称加密中 :目标是保护数据的 机密性(谁都可以给我发信息,只有我自己可以看) 所以数据由公钥加密,私钥解密。
数字签名 :不是保护数据的机密性,而是验证数据的 真实性 和 完整性(用谁都不知道的私钥加密(签名),大家用谁都知道的公钥解密(验证)
消息认证码(MAC)和数字签名 区别
消息认证码(Message Authentication Code, MAC)
数字签名(Digital Signature)
(1) MAC 的生成与验证
生成过程:
发送方将消息与共享密钥拼接。使用哈希算法(如 HMAC-SHA256)生成消息摘要 MAC。
验证过程:
接收方使用相同的共享密钥与收到的消息重新生成消息摘要 MAC。
比较接收到的 MAC 和重新生成的 MAC 是否一致。
(2) 签名的生成与验证
生成过程:
发送方对消息计算哈希值。使用发送方的私钥对哈希值进行加密,生成签名。
验证过程:
接收方使用发送方的公钥解密签名,得到原始哈希值。对消息重新计算哈希值。
比较接解密的 哈希值 和重新生成的 哈希值 是否一致。
| 特性 | MAC | 签名 |
|---|---|---|
| 机密性依赖 | 使用共享密钥 | 私钥签名公钥验证 |
| 计算复杂度 | 对称加密 | 非对称加密 |
| 不可否认性 | 都使用共享密钥,无不可否认性 | 使用到私钥,有不可否认性 |
| 适用场景 | 通信双方预先共享密钥的场景 | 需要身份验证和不可否认性的场景 |
数字证书
数字证书是一种电子文件,用于证明某个实体(如个人、组织或设备)的身份。
它由可信的第三方机构(称为 CA,Certificate Authority)签发,并包含以下信息:
● 签发机构(CA)的签名
● 有效期限
● 持有者的身份信息(如域名、公司名称等)
● 持有者的公钥
作用:提供一种安全的方式将公钥分发给通信对方。
工作原理
1、用户向 CA 提交申请,提供身份信息和公钥。
2、CA 验证用户身份后,生成并签署数字证书。
3、用户将数字证书发送给通信对方。
4、对方通过验证证书中的 CA 签名来确认用户身份,成功拿到用户的公钥
如何使用数字证书验证服务器身份?
客户端收到服务器的数字证书后,使用以下步骤验证服务器身份:
● 验证证书链:检查证书是否由受信任的 CA 签发。
● 验证证书有效性:检查证书是否在有效期内,且未被列入吊销列表(CRL)。
● 验证证书绑定:确认证书中的域名与服务器的实际域名匹配。
● 验证签名:使用 CA 的公钥验证数字证书的签名是否有效。
相关文章:
数字证书 与 数字签名 介绍
目录 数字签名 什么时候公钥加密数据,什么时候私钥加密数据? 消息认证码(MAC)和数字签名 区别 数字证书 如何使用数字证书验证服务器身份? 数字签名 定义:它类似于现实生活中的手写签名。 手写签名的法律…...
通过webrtc+canvas+css实现简单的电脑滤镜拍照效果
这里我们用的是webrtc中的MediaDevices.getUserMedia()的浏览器api进行的效果实现,MediaDevices.getUserMedia() 会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道…...
OpenLayers集成天地图服务开发指南
以下是一份面向GIS初学者的OpenLayers开发详细教程,深度解析代码: 一、开发环境搭建 1.1 OpenLayers库引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…...
VBA-Excel
VBA 一、数据类型与变量 常用数据类型: Byte:字节型,0~255。Integer:整数型,用于存储整数值,范围 -32768 到 32767。Long:长整型,可存储更大范围的整数,范围 -214748364…...
OpenHarmony 开源鸿蒙北向开发——linux使用make交叉编译第三方库
这几天搞鸿蒙,需要编译一些第三方库到鸿蒙系统使用。 头疼死了,搞了一个多星期总算搞定了。 开贴记坑。 一、SDK下载 1.下载 在linux下使用命令 wget https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_5.1.0.54/20250313_02…...
向量库特点和使用场景
开源的专用向量数据库 Milvus 特点:开源分布式向量数据库,性能强大,支持多种索引类型(如IVF、HNSW等)、多种距离度量和灵活的查询方式,社区活跃,功能丰富,适用于处理大规模向量数据和复杂的检索任务。适用场景:适用于需要高性能、高扩展性的向量检索场景,如大型AI应用…...
【第14届蓝桥杯C/C++B组省赛】01串的熵
问题描述 算法思想 首先分析题目中给出的公式 S 100时,其信息熵为 H(S)−p(0)log2(p(0)) − p(0)log2(p(0)) − p(1)log2(p(1)) 继续化简公式得 设0出现的次数为x,1出现的次数为3-x H(S)−x * p(0) * log2(p(0)) − (3-x) * p(1) * log2(p(1)…...
鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值
除了视觉效果实现全选和反选以外,咱们经常需要获取选中的值,接下来看看如何实现。 核心步骤: 1. 给 CheckBoxGroup 注册 onChange。 2. CheckBox 添加 name 属性。 3. 在 onChange 的回调函数中获取 选中的 name 属性。 事件:…...
收数据花式画图plt实战
目录 Python plt想把纵坐标化成对数形式代码 子图ax. 我又有ax scatter,又有ax plot,都要去对数 数字接近0,取对数没有定义,怎么办 创建数据 添加一个小的常数以避免对数未定义的问题 创建一个figure和一个子图ax 在子图a…...
系统架构书单推荐(一)领域驱动设计与面向对象
本文主要是个人在学习过程中所涉猎的一些经典书籍,有些已经阅读完,有些还在阅读中。于我而言,希望追求软件系统设计相关的原则、方法、思想、本质的东西,并希望通过不断的学习、实践和积累,提升自身的知识和认知。希望…...
Centos6配置yum源
Centos6配置yum源 为Centos6配置CentOS Vault源—防止yum源过期为Centos6配置epel源为Centos6配置ELRepo源---已ELRepo被官方清空Centos6安装dockerdocker配置国内镜像加速 为Centos6配置CentOS Vault源—防止yum源过期 参考:https://mirrors.ustc.edu.cn/help/cen…...
CVPR 2025 | 文本和图像引导的高保真3D数字人高效生成GaussianIP
小小宣传一下CVPR 2025的工作GaussianIP。 arXiv:https://arxiv.org/abs/2503.11143 Github:https://github.com/silence-tang/GaussianIP 欢迎star, issue~ 摘要 文本引导的3D人体生成随着高效3D表示及2D升维方法(如SDS)的发展…...
MySQL密码修改的全部方式一篇详解
本文将详细介绍多种修改MySQL密码的方式。 本文目录 一、alter user 语句操作步骤 二、set password操作步骤 三、直接修改 mysql.user表操作步骤 一、alter user 语句 当你以 root 用户或者拥有足够权限的用户登录 MySQL 时,可以使用 ALTER USER 语句来修改密码。…...
Cursor从小白到专家
文章目录 1:简单开发一个贪吃蛇游戏规则设置提示词 cursor开发小工具开发整体步骤创建.cursorrules输入提示词composer模式chat模式 执行cursor accept all发布到线上进行分享 cursor开发一个浏览器插件创建.cursorrulescursor rules范例集工具 输入提示词执行curso…...
使用C++在Qt框架下调用DeepSeek的API接口实现自己的简易桌面小助手
项目背景 随着DeepSeek的爆火,最近的DeepSeek也进行了新一轮技术的更新,为了拥抱新时代,我们也要不断学习新的知识,难的底层原理我们接触不到,简单的调用还能难住我们? 因为在网络上搜集到的资源都是用Py…...
Kotlin 协程基础知识汇总(一)
1、协程基础 Kotlin 是一门仅在标准库中提供最基本底层 API 以便其他库能够利用协程的语言。与许多其他具有类似功能的语言不同,async 与 await 在 Kotlin 中并不是关键字,甚至都不是标准库的一部分。此外,Kotlin 的挂起函数概念为异步操作提…...
Deepseek训练成AI图片生成机器人
目录 内容安全层 语义理解层 提示词工程层 图像生成层 交付系统 训练好的指令(复制就可以) 内容安全层 理论支撑:基于深度语义理解的混合过滤系统 敏感词检测:采用BERT+CRF混合模型,建立三级敏感词库(显性/隐性/文化禁忌),通过注意力机制捕捉上下文关联风险 伦…...
关于MTU的使用(TCP/IP网络下载慢可能与此有关)
参考链接:告诉你mtu值怎么设置才能网速最好! -Win7系统之家 出现网络速度被限制,可能与MTU值相关,先查看下本机的MTU winR,然后输入:netsh interface ipv4 show subinterfaces ,查看自己网络中的MTU&…...
【信息系统项目管理师】【高分范文】【历年真题】论信息系统项目的风险管理
【手机端浏览】☞【信息系统项目管理师】【高分范文】【历年真题】论信息系统项目的风险管理 2023年上半年考题 【题目】 论信息系统项目的风险管理 项目风险管理旨在识别和管理未被项目计划及其他过程所管理的风险,如果不妥善管理,这些风险可能导致项…...
Debain-12.9使用vllm部署内嵌模型/embedding
Debain-12.9使用vllm部署内嵌模型/embedding 基础环境准备下载模型部署模型注册dify模型 基础环境准备 基础环境安装 下载模型 modelscope download --model BAAI/bge-m3 --local_dir BAAI/bge-m3部署模型 vllm serve ~/ollama/BAAI/bge-m3 --served-model-name bge-m3 --t…...
香橙派连接摄像头过程
在香橙派上下载NoMachine 在控制电脑上也下载NoMachine sudo nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码" 连接上wifi后就可以在NoMachine连上香橙派了 (不过前提是香橙派有安装桌面端系统(非仅窗口端&…...
Milvus学习整理
Milvus学习整理 一、度量类型(metric_type) 二、向量字段和适用场景介绍 三、索引字段介绍 (一)、概述总结 (二)、详细说明 四、简单代码示例 (一)、建立集合和索引示例 (二)…...
MySQL事务全解析:从概念到实战
在数据库操作中,事务是一个至关重要的概念,它确保了数据的完整性和一致性。今天,就让我们深入探讨MySQL事务的方方面面,从基础概念到实际应用,全面掌握这一技能。 一、为什么需要事务 假设张三要给李四转账100元&…...
重叠构造函数 、JavaBean模式、建造者模式、Spring的隐性大手
构造函数 重叠构造函数JavaBean模式建造者模式构造Spring看起来为什么简单番外篇为什么在JavaBean中 无参构造函数是必须的呢 小结 构造函数对我来讲是很平常的一个东西,今天来谈谈新的收获。 重叠构造函数 通常我们定义好实体类后,不会特意的去调整构造…...
题单:精挑细选
题目描述 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下: 1.1. 这根钢管一定要是仓库中最长的; …...
GGUF 和 llama.cpp 是什么关系
这是个非常关键的问题,咱们来细说下:GGUF 和 llama.cpp 是什么关系,它们各自干什么,如何配合工作。 🔧 一、llama.cpp 是什么? llama.cpp 是 Meta 的开源大语言模型 LLaMA(Language Model from…...
手机怎么换网络IP有什么用?操作指南与场景应用
在数字化时代,手机已经成为我们日常生活中不可或缺的一部分,无论是工作、学习还是娱乐,手机都扮演着至关重要的角色。而在手机的使用过程中,网络IP地址作为设备在互联网上的唯一标识符,其重要性和作用不容忽视。本文将…...
强化学习中的深度卷积神经网络设计与应用实例
I. 引言 强化学习(Reinforcement Learning,RL)是机器学习的一个重要分支,通过与环境的交互来学习最优策略。深度学习,特别是深度卷积神经网络(Deep Convolutional Neural Networks,DCNNs&#…...
软考程序员-操作系统基本知识核心考点和知识重点总结
以下是软考程序员考试中操作系统基本知识章节的核心考点和知识重点总结,结合历年真题和考试大纲整理而成: 一、操作系统基本概念与功能 定义与作用 操作系统是管理计算机软硬件资源的核心系统软件,负责协调程序执行、优化资源利用,…...
思源配置阿里云 OSS 踩坑记
按照正常的配置IAM,赋予OSS权限,思源笔记还是无法使用,缺少ListBuckets权限。 正常配置权限,又无法覆盖,因此需要手动配置权限。 {"Version": "1","Statement": [{"Effect":…...
