计算机网络(四)数字签名和CA认证

什么是数字签名和CA认证?

数字签名

数字签名的过程通常涉及以下几个步骤:

  1. 信息哈希:首先,发送方使用一个哈希函数(如SHA-256)对要发送的信息(如电子邮件、文件等)生成一个固定长度的哈希值(也称为消息摘要)。哈希函数具有以下特性:
    • 定长输出:无论输入信息的大小,输出都是固定长度的。
    • 单向性:从哈希值很难反推出原始信息。
    • 抗碰撞性:很难找到两个不同的信息具有相同的哈希值。
  2. 私钥加密:然后,发送方使用其私钥对哈希值进行加密。加密后的哈希值就成为了**数字签名**。
  3. 发送信息:发送方将原始信息和数字签名一起发送给接收方。
  4. 验证签名:接收方收到信息后,使用发送方的公钥对数字签名进行解密,得到哈希值。
  5. 信息哈希比对:接收方同样对原始信息进行哈希运算,得到一个新的哈希值,并将其与解密后的哈希值进行比对。
    • 如果两个哈希值相同,则说明信息在传输过程中未被篡改,且信息确实是由持有私钥的发送方发送的。
    • 如果哈希值不同,则说明信息可能被篡改,或者发送方不是声称的持有私钥的人。

CA定义

CA是一个可信的第三方组织,负责颁发、管理、和吊销数字证书。数字证书是一种用于在互联网上验证实体(如个人、企业、网站等)身份的电子证明。CA确保证书中的公钥确实属于证书上所声明的实体。

CA的主要职责包括:

  1. 证书颁发:在验证了申请者的身份后,CA会颁发一个包含申请者公钥和身份信息的数字证书。
  2. 证书管理:CA负责跟踪证书的有效期,并在必要时更新或吊销证书。
  3. 信任建立:CA通过在其证书上签名来建立信任链。用户或系统信任CA的证书,因此也信任由该CA签名的任何其他证书。

CA认证过程

  1. 身份验证:申请者必须向CA证明其身份。这通常涉及提供身份证明文件、企业注册信息或其他形式的验证。
  2. 公钥生成:申请者生成一对公钥和私钥。私钥保持秘密,而公钥将包含在证书中。
  3. 证书颁发:CA验证申请者身份后,会创建一个数字证书,将申请者的公钥和身份信息绑定在一起,并使用CA的私钥对证书进行数字签名。
  4. 证书分发:CA将证书分发给申请者,申请者可以将证书安装在服务器上(例如,用于HTTPS的SSL/TLS证书)。

图解数字签名和CA认证

1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

6.然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

7.鲍勃将这个签名,附在信件下面,一起发给苏珊。

8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

11.后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

12.鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13.苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

14.下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

15.首先,客户端向服务器发出加密请求。

16.服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

17.客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

18.如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

19.如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

20.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

数字签名和CA认证分别防止了哪些安全问题?

数字签名防止的安全问题:

  1. 篡改:数字签名确保信息在传输过程中未被篡改。通过比较发送方的公钥解密后的哈希值和接收方对原始信息计算出的哈希值,可以验证信息自签名以来是否保持不变。
  2. 伪造:数字签名防止第三方伪造信息。由于只有持有私钥的发送方才能生成有效的签名,因此即使信息被篡改,也无法伪造有效的签名。
  3. 抵赖:数字签名提供了不可抵赖性,即发送方不能否认曾经发送过该信息。因为签名是基于发送方的私钥生成的,接收方可以使用发送方的公钥来验证签名的有效性。

CA认证防止的安全问题:

  1. 中间人攻击:CA认证通过验证公钥的真实性来防止中间人攻击。在中间人攻击中,攻击者可能会拦截通信,并提供自己的公钥(比如说你想访问淘宝,请求发出后,我假装自己是淘宝,给你发一个我的公钥,你收到后你以为是淘宝的,然后开始与我进行交互,我就窃取了你的信息),使通信双方误认为他们正在与对方直接通信。CA颁发的证书保证了公钥确实属于声称的所有者。
  2. 公钥伪造:CA认证确保公钥不是伪造的。没有CA的证书,攻击者很难伪造一个被广泛信任的公钥。
  3. 信任问题:CA认证解决了互联网上陌生双方之间的信任问题。通过信任由知名CA签发的证书,通信双方可以确信对方的身份是经过验证的。

参考:https://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

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

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

相关文章

全链路追踪 性能监控,GO 应用可观测全面升级

作者:古琦 01 介绍 随着 Kubernetes 和容器化技术的普及,Go 语言不仅在云原生基础组件领域广泛应用,也在各类业务场景中占据了重要地位。如今,越来越多的新兴业务选择 Golang 作为首选编程语言。得益于丰富的 RPC 框架&#xff…

Golang实现Word模板内容填充导出

这里我们使用一个广泛使用且免费处理 .docx 文件的库,github.com/nguyenthenguyen/docx. 安装 github.com/nguyenthenguyen/docx 库 首先,确保你已经安装了 docx 库: go get github.com/nguyenthenguyen/docx使用 docx 库处理 Word 模板 …

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低,会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…

复现open-mmlab的mmsegmentation详细细节

复现open-mmlab的mmsegmentation详细细节 1.配置环境2.数据处理3.训练 1.配置环境 stage1:创建python环境 conda create --name openmmlab python3.8 -y conda activate openmmlabstage2:安装pytorch(这里我是以torch1.10.0为例&#xff09…

VINS-Fusion 回环检测pose_graph_node

VINS-Fusion回环检测,在节点pose_graph_node中启动。 pose_graph_node总体流程如下: 重点看process线程。 process线程中,将订阅的图像、点云、位姿时间戳对齐,对齐后分别存入image_msg、point_msg、pose_msg。pose_msg为VIO后端优化发布的位姿。 一、创建关键帧keyFram…

mac|安装PostgreSQL

1、官网下载:EDB: Open-Source, Enterprise Postgres Database Management 选择需要的版本: 双击得到的.dmg文件 双击,弹窗选择打开,一路next,然后输入你要设置的密码,默认账号名字为:postgres…

项目一缓存商品

文章目录 概要整体架构流程技术细节小结 概要 因为商品是经常被浏览的,所以数据库的访问量就问大大增加,造成负载过大影响性能,所以我们需要把商品缓存到redis当中,因为redis是存在内存中的,所以效率会比MySQL的快. 整体架构流程 技术细节 我们在缓存时需要保持数据的一致性所…

面试场景题系列--(2)短 URL 生成器设计:百亿短 URL 怎样做到无冲突?--xunznux

文章目录 面试场景题:短 URL 生成器设计:百亿短 URL 怎样做到无冲突?1. 需求分析2. 短链接生成算法2.1 自增法2.2 散列函数法2.3 预生成法 3. 部署模型3.1 其他部署方案 4. 设计4.1 重定向响应码4.2 短 URL 预生成文件及预加载4.3 用户自定义…

个人百度百科怎么创建?

百度百科词条分为企业词条、品牌词条、人物词条等,个人百度百科创建的需求量很大,各式各样的人物需求都有。现在凡是要推广个人的人,创建百度百科都是其中一个必要的步骤。 作为一个有知名度的人物,拥有一个百度百科从侧面也证明了…

基于微信小程序+SpringBoot+Vue的自习室选座与门禁系统(带1w+文档)

基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 本课题研究的研学自习室选座与门禁系统让用户在小程序端查看座位,预定座位,支付座位价格,该系统让用户预定座位…

CentOS搭建Apache服务器

安装对应的软件包 [roothds ~]# yum install httpd mod_ssl -y 查看防火墙的状态和selinux [roothds ~]# systemctl status firewalld [roothds ~]# cat /etc/selinux/config 若未关闭,则关闭防火墙和selinux [roothds ~]# systemctl stop firewalld [roothds ~]# …

ARM功耗管理之autosleep和睡眠锁实验

安全之安全(security)博客目录导读 ARM功耗管理精讲与实战汇总参见:Arm功耗管理精讲与实战 思考:睡眠唤醒实验?压力测试?Suspend-to-Idle/RAM/Disk演示? 1、实验环境准备 2、软件代码准备 3、唤醒源 4、Suspend-…

18.jdk源码阅读之CopyOnWriteArrayList

1. 写在前面 CopyOnWriteArrayList 是 Java 中的一种线程安全的 List 实现,基于“写时复制”(Copy-On-Write)机制。下面几个问题大家可以先思考下,在阅读源码的过程中都会解答: CopyOnWriteArrayList 适用于哪些场景…

Profinet转ModbusTCP网关模块的配置与应用详解

Profinet转ModbusTCP网关模块(XD-ETHPN20)是一种常见的工业通信设备,广泛应用于现代工业自动化系统中。通过使用Profinet转Modbus TCP网关模块(XD-ETHPN20)将Profinet协议转换成Modbus TCP协议,实现了不同网…

抓包工具Charles

1、抓包的目的 遇到问题需要进行分析 发现bug需要定位 检查数据传输的安全性 接口测试时,开发给的需求文档不详细 在弱网环境下APP的测试 2、Charles是java语言编写的程序,本质是一个代理服务器,通过拦截服务端和客户端的http请求&#xff0…

【SpringCloud】企业认证、分布式事务,分布式锁方案落地-2

目录 高并发缓存三问 - 穿透 缓存穿透 概念 现象举例 解决方案 缓存穿透 - 预热架构 缓存穿透 - 布隆过滤器 布隆过滤器 布隆过滤器基本思想​编辑 了解 高并发缓存三问 - 击穿 缓存击穿 高并发缓存三问 - 雪崩 缓存雪崩 解决方案 总结 为什么要使用数据字典&…

【Dison夏令营 Day 30】如何用 Python 创建平台游戏(下篇)

几十年来,平台游戏一直是深受玩家喜爱的游戏类型,它提供了令人兴奋的挑战和令人怀念的游戏玩法。在本教程中,我们将指导您使用 Python 中的 PyGame 库构建自己的平台游戏。 无论您是希望深入游戏开发的初学者,还是希望探索 Pygame…

【OpenCV C++20 学习笔记】基本图像容器——Mat

【OpenCV C20 学习笔记】基本图像容器——Mat 概述Mat内部结构引用计数机制颜色数据格式 显式创建Mat对象使用cv::Mat::Mat构造函数矩阵的数据项 使用数组进行初始化的构造函数cv::Mat::create函数MATLAB风格的初始化小型矩阵通过复制创建Mat对象 Mat对象的输出其他普通数据项的…

77.WEB渗透测试-信息收集-框架组件识别利用(1)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:76.WEB渗透测试-信息收集- WAF、框架组件识别(16) java&#xff…

HarmonyOS入门-状态管理

View(UI):UI渲染,指将build方法内的UI描述和Builder装饰的方法内的UI描述映射到界面。 State:状态,指驱动UI更新的数据。用户通过触发组件的事件方法,改变状态数据。状态数据的改变,引起UI的重新渲染。 装…