密码学(二)
文章目录
- 前言
- 一、Certificate Authorities
- 二、Key Agreement Protocols
前言
本文来自 Intel SGX Explained
请参考:密码学(一)
一、Certificate Authorities
非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。这个假设非常关键,因为非对称密钥系统的整个安全性依赖于某些操作只能由与公钥对应的私钥的所有者执行。
更具体地说,如果Eve能够让Bob相信她自己的公钥属于Alice,那么Eve可以产生似乎来自Alice的消息签名。
这种情况下,Eve可以中间人攻击的方式,截取Alice和Bob之间的通信,冒充Alice并使用自己的公钥作为Alice的公钥,然后代表Alice签署消息。
如果Bob错误地信任Eve的公钥,他可能会被欺骗,接受被篡改或伪造的消息作为来自Alice的真实通信。这可能导致各种安全风险,包括未经授权的访问、数据篡改或错误信息传播。
为了减轻这种风险,建立安全可信的机制来分发和验证公钥非常重要。这可以涉及使用由受信任的第三方实体(称为证书颁发机构或CA)颁发的数字证书,或者采用去中心化的信任模型,如信任网络,其中个人对彼此的公钥进行数字签名以建立信任。
在密码学中,认证和证书颁发机构(Certification Authority,简称CA)是负责验证身份和颁发数字证书的机构。它们在建立和维护公钥基础设施(Public Key Infrastructure,简称PKI)中起着关键作用。
密码学(一)的介绍性材料假设每个参与方通过具有完整性保证的信道传输他们的公钥。但实际上,这并不是一个合理的假设,安全分发公钥仍然是一个尚未解决的研究问题。
最广泛采用的解决公钥分发问题的方法是证书颁发机构(Certificate Authority,CA)系统,它假设存在一个受信任的机构,该机构的公钥被安全地传输给系统中的其他所有参与方。
在CA系统中,信任的根源是由一个或多个CA机构拥有的根证书。这些根证书的公钥被预先分发给参与方,以确保其可靠性。然后,CA机构可以颁发数字证书,将公钥与实体的身份信息绑定在一起,并用CA机构的私钥对数字证书进行签名。其他参与方可以使用CA机构的公钥验证数字证书的有效性和真实性。
通过使用CA系统,参与方可以相信从CA机构获得的数字证书,因为它们具有信任的根源和可验证性。这种机制解决了公钥分发的问题,确保了公钥的可靠性和身份的验证。
证书颁发机构(CA)负责安全获取每个参与方的公钥,并发行将参与方的身份(例如,“Alice”)与其公钥绑定的证书,如下图所示:
上图表明了证书是由证书颁发机构(发行者)签名的陈述,将一个主体的身份与一个公钥绑定起来。
在这个过程中,参与方需要向CA提交其公钥以进行注册。CA会验证参与方的身份,并确保其公钥的真实性和可信度。一旦验证通过,CA将发行一个数字证书,其中包含参与方的身份信息和对应的公钥。
这个数字证书包含了许多信息,如证书的颁发者(即CA的身份)、证书的持有者(即参与方的身份)、公钥以及其他元数据。为了确保数字证书的完整性和真实性,CA会使用自己的私钥对证书进行签名。其他参与方可以使用CA的公钥来验证证书的签名,从而确认证书的有效性和真实性。
一旦参与方获得了数字证书,它们可以使用证书中的公钥来进行安全通信。在加密通信中,发送方可以使用接收方的公钥加密消息,而接收方则使用自己的私钥解密消息。在数字签名中,发送方可以使用自己的私钥对消息进行签名,接收方可以使用发送方的公钥验证签名的真实性。
通过CA系统的运作,参与方可以信任其他参与方的公钥,因为它们通过由受信任的CA颁发的数字证书进行验证和确认。
总结而言,证书颁发机构(CA)负责安全地获取每个参与方的公钥,并发行将参与方的身份与其公钥绑定的数字证书。这确保了公钥的真实性和可信度,为参与方之间的安全通信提供了基础。
证书实质上是由证书发行者(通常是CA)的私钥生成的加密签名。由发行者签名的消息声明了一个公钥属于一个主体。证书消息通常包含标识符,说明证书的预期用途,例如“此证书中的密钥只能用于签署电子邮件消息”。证书消息通常还包括发行者认证策略的标识符,该策略总结了发行者采取的措施,以确保主体的公钥的真实性。
在CA系统中的一个主要问题是没有明显的方法来撤销证书。撤销机制对于处理私钥意外暴露的情况非常重要,以避免攻击者使用证书冒充被损害的主体。虽然已经开发了先进的证书撤销系统,但防止密钥被泄露的首要措施是为证书添加过期日期。
在一个CA系统中,每个参与方都会提供自己的证书和公钥。任何信任CA并已安全获取CA的公钥的参与方都可以使用下图所示的过程来验证任何证书。
上图表明了由CA颁发的证书可以被任何已安全获取CA公钥的参与方验证。如果证书有效,其中包含的主体公钥可以被信任为属于证书所标识的主体。
一个主要的缺点是CA系统中,CA的私钥成为攻击的目标。通过尽量减少对CA私钥的使用,可以在一定程度上减少其被攻击的机会。上述描述的机构成为根CA,他们的私钥仅用于生成中间CA的证书,而中间CA则负责为系统中的其他参与方生成证书,如下图所示:
上图表明了一个层次化的CA结构旨在减少根CA私钥的使用,降低其被攻击的风险。在这种结构中,根CA的私钥仅用于签署中间CA的证书。
中间CA位于根CA和最终用户之间,负责为系统中的各方(包括最终用户)发放和签署证书。中间CA拥有自己的私钥,用于签署最终用户的证书。
通过将证书签署的责任分布在多个层级的CA之间,层次化结构减少了对根CA私钥的依赖。这有助于减轻根CA私钥被攻击的风险。即使中间CA的私钥遭到攻击,也只会影响到由该中间CA签署的证书,而不会危及整个系统的安全。
在层次化的CA系统中,唯一安全分发给所有参与方的公钥是根CA的公钥。因此,当两个参与方希望进行交互时,每个参与方都必须提供自己的证书,以及颁发CA的证书。例如,给定上图中的层次结构,Alice可以通过提供她的证书以及Intermediate CA 1的证书来向Bob证明她的公钥的真实性。Bob首先使用上上图中的步骤,通过根CA的公钥验证Intermediate CA 1的证书,从而确保Intermediate CA 1的公钥的真实性。然后,Bob使用Intermediate CA 1的公钥验证Alice的证书,因为他现在信任Intermediate CA 1的公钥。
通过这个过程,Bob可以验证Alice的证书,并相信其中包含的公钥确实属于Alice。这种逐级验证的方法确保了证书链的完整性和真实性。每个参与方都需要验证对方的证书,并建立起信任关系,以确保安全通信和身份验证。
总结而言,在层次化的CA系统中,只有根CA的公钥安全地分发给所有参与方。因此,当两个参与方希望进行交互时,每个参与方都必须提供自己的证书和颁发CA的证书。通过逐级验证证书链,可以建立起信任关系,并确保通信双方的公钥的真实性和可信性。
在大多数国家,政府为其公民发放身份证,因此充当了证书颁发机构的角色。身份证是一种证书,将主体的身份(完整的法定姓名)与主体的外貌(用作公钥)绑定在一起,如下图所示:
上图表明了身份证是一种证书,将一个主体的完整法定姓名(身份)与主体的外貌特征绑定在一起,而外貌特征则充当了公钥的作用。
每个政府的身份证发放操作都受到法律的监管,因此身份证的发行日期可以用来追踪构成其认证政策的法律。此外,身份证的安全性(尚)不依赖于密码学原语。相反,身份证包括物理安全措施,旨在防止篡改和防伪。
身份证发放的过程受到法律的规范和监管。政府制定了相关法律和政策来管理身份证的发放和使用。发行日期可以反映出身份证所遵循的具体法律和政策。
此外,身份证的安全性主要依赖于物理安全措施,而非密码学原语。身份证通常包括多种物理特征和安全措施,旨在防止篡改和防伪。这些措施可能包括防伪特殊材料、水印、芯片技术、防伪标记等。物理安全措施的设计目的是使身份证更难以伪造和篡改,以保护个人身份的安全性。
二、Key Agreement Protocols
在 密码学(一)中介绍的对称密钥原语的初始设计假设,当两个参与方希望进行交互时,一方生成一个秘密密钥,并使用具有机密性和完整性保证的通信渠道与另一方共享。然而,在实际应用中,很少有预先存在的安全通信渠道可用。
密钥协商协议用于两个参与方建立共享的秘密密钥,只需要一个具有完整性保证的通信渠道。下图概述了Diffie-Hellman密钥交换(DKE)协议,该协议可以帮助读者直观地理解密钥协商协议的工作原理。
上图表明了在Diffie-Hellman密钥交换(DKE)协议中,Alice和Bob在一个共享的秘密密钥K = gAB mod p上达成一致。一个观察到gA mod p和gB mod p的对手无法计算出K。
DHE协议的基本思想是,两个通信参与者(通常是Alice和Bob)可以在公开的通信渠道上协商一个共享密钥,而无需事先共享任何秘密信息。DHE协议的安全性基于离散对数问题。
以下是DHE协议的步骤:
(1)参数生成:在协议开始之前,需要选定一组公开的参数。这些参数包括一个大素数p和一个生成元g,它们被所有通信参与者共享。
(2)密钥协商:
Alice和Bob各自选择一个私密的随机数a和b。
Alice计算公钥A = g^a mod p,并将A发送给Bob。
Bob计算公钥B = g^b mod p,并将B发送给Alice。
(3)密钥计算:
Alice收到Bob的公钥B后,计算共享密钥K = B^a mod p。
Bob收到Alice的公钥A后,计算共享密钥K = A^b mod p。
(4)密钥确认:Alice和Bob现在都拥有相同的共享密钥K,可以用于加密和解密通信。双方可以相互确认密钥的正确性,例如通过发送哈希值或其他验证信息。
DHE协议的关键优势在于即使在公开信道上进行通信,也能够协商出一个秘密的共享密钥。然而,DHE协议本身并不提供身份验证和消息完整性保护。因此,在实际应用中,通常会将DHE与数字证书和其他安全机制结合使用,以确保通信的安全性。
本文关注使用密钥协商协议构建更大系统,因此我们不会解释DKE中的数学细节,也不会证明其正确性。我们注意到Alice和Bob都派生出相同的共享秘密密钥K = gAB mod p,而不会传输K。此外,在DKE中传输的消息,即gA mod p和gB mod p,对于窃听者Eve来说是不足以确定K的,因为有效地解决gx mod p中的x是一个被认为非常困难的开放问题。
确实,密钥协商协议需要具有完整性保证的通信渠道。如果主动攻击者Eve可以篡改Alice和Bob传输的消息,她可以执行中间人攻击(MITM攻击),如下图所示:
上图表明了任何密钥协商协议都容易受到中间人攻击,如果通信渠道没有得到适当的保护。在中间人攻击中,主动攻击者可以拦截并操纵两个参与方之间的通信,冒充每个参与方以建立不同的共享密钥。
在密钥协商协议中,攻击者可以拦截Alice和Bob之间的消息,并与他们分别建立不同的共享密钥。然后,攻击者可以在Alice和Bob之间转发消息,使他们相信彼此直接进行通信。这让攻击者能够窃听通信并可能篡改消息。
此外,攻击者还可以在冒充另一个参与方的情况下向Alice或Bob发送自己的消息。这使得攻击者能够注入恶意内容、伪造消息,或者欺骗受害者执行有利于攻击者的操作。
为了降低中间人攻击的风险,必须确保通信渠道的完整性和真实性。可以通过使用数字签名或证书等技术验证通信各方的身份,并采用提供机密性和完整性保证的安全通信协议(如SSL/TLS)来实现。
在中间人攻击中,Eve拦截Alice的第一个密钥交换消息,并向Bob发送自己的消息。然后,Eve拦截Bob的回应并替换为自己的回应,发送给Alice。Eve实际上与Alice和Bob分别执行密钥交换,与他们各自建立共享密钥,而Bob和Alice都不知道Eve的存在。
在与Alice和Bob建立共享密钥之后,Eve可以选择观察Alice和Bob之间的通信,通过转发消息来实现。例如,当Alice发送消息时,Eve可以使用K1(她与Alice之间的共享密钥)对其进行解密,然后使用K2(她与Bob之间建立的密钥)对消息进行加密。虽然Bob仍然接收到Alice的消息,但Eve已经能够查看其内容。
此外,Eve可以冒充通信中的任一方。例如,Eve可以创建一条消息,并使用K2对其进行加密,然后将其发送给Bob。由于Bob认为K2是他与Alice之间建立的共享密钥,他将相信Eve的消息来自Alice。
可以通过对协议中发送最后一条消息的一方(在我们的示例中是Bob)进行身份验证,并让其对密钥协商消息进行签名来防止中间人攻击。当存在CA系统时,Bob使用他的公钥对密钥协商消息进行签名,并向Alice发送他的证书,以及任何中间CA的证书。Alice验证Bob的证书,确保证书所标识的主体是她所期望的(即Bob),并验证与她和Bob之间交换的密钥协商消息与Bob提供的签名匹配。
总之,可以使用密钥协商协议从非对称密钥签名方案中引导对称密钥原语,其中只有一方需要能够对消息进行签名。
相关文章:

密码学(二)
文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考:密码学(一) 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…...

mysql进阶-视图
目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图: 2.4 删除视图: 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称,它可以帮助我们简化查询,主要用于报表查询:例如…...
力扣-34. 在排序数组中查找元素的第一个和最后一个位置
文章目录 力扣题目代码 力扣题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算…...

Cesium笔记 初始化 使用Vue-Cesium 组件
参考 A Vue 3 based component library of CesiumJS for developers | Vue for CesiumVue for Cesium, a Vue 3.x based component library of CesiumJS for GISerhttps://zouyaoji.top/vue-cesium/#/zh-CN/component/quickstart...

QTday2作业
思维导图: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数; 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",…...

scVI与MultiVI
scVI:https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI:https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html 目录 scVI生成推理任务 MultiVI生成推理 scVI single cell variational inference提出了一个…...

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计
一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…...

2、UML类图
UML(Unified Modeling Language)统一建模语言,用来进行设计软件的可视化建模语言。 2.1 类图概述 类类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。类图是面向对象建模的主要组成部分。 2.…...

2023 年度合辑 | 出海大年的全球化产品洞察和服务动向
2023 年度合辑 年度关键词 出海&全球化 出海 & 全球化通信服务全面升维 出海大年,融云全球互联网通信云作为“全球化最佳基础设施”之一,发挥技术沉淀和实践积累带来的核心优势,结合市场变化对出海 & 全球化通信服务进行了全方位…...

python 基础笔记
基本数据类型 函数 lamda 匿名函数 成员方法 类 类与对象 构造方法 魔术方法 私有成员 私有方法 继承 注解 变量注解 函数注解 Union类型 多态 参考链接:黑马程序员python教程,8天python从入门到精通,学python看这套就够了_哔哩哔哩_bilib…...
[原创][R语言]股票分析实战[8]:因子与subset的关系
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...
uniapp使用tcp和udp的区别和例子
在Node.js中,主要有三种socket:TCP,UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例: TCP socket TCP socket提供了可靠的、面向连接的通信流,适用于需要可靠传输的应用,例如Web浏览器的HTTP请…...

静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.co…...

APP出海需知——Admob广告变现竞价策略
越来越多的出海公司更加重视应用的广告变现,Admob因其提供丰富的广告资源,稳定的平台支持,被广泛采用接入。 Admob广告变现策略 1、bidding竞价策略 Bidding目前是Admob广泛推广的较成熟的变现方案,当竞价网络和瀑布流混合时&a…...

微服务实战系列之API加密
前言 随着一阵阵凛冽寒风的呼啸,新的年轮不知不觉滚滚而来。故事随着2023的远去,尘封于案底;希望迎着新年,绽放于枝头。在2024新岁启航,扬帆破浪之时,让烦恼抛洒于九霄,让生机蓬勃于朝朝暮暮。 …...
android apk文件的签名问题
android的APK文件实际上是一个jar文件。jar的意思是瓶、罐,那就意味着jar文件是一个用来存放android应用相关文件的容器。事实上,它也确实如此,它只是一个带或不带压缩的zip文件,当你把.apk后缀改成.zip后,就能对此进行…...

ATTCK视角下的信息收集:主机发现
目录 1、利用协议主动探测主机存活 利用ICMP发现主机 利用ARP发现主机 利用NetBIOS协议发现主机 利用TCP/UDP发现主机 利用DNS协议发现主机 利用PRC协议发现主机程序 2、被动主机存活检测 利用Browser主机探测存活主机 利用ip段探测主机存活 利用net命令探测主机存活…...

Redis 主从、哨兵和分片集群简单介绍
Redis 主从集群架构 单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建主从集群,实现读写分离 主从同步原理 Replicaition id:每台 master 机器都一个 repl_id,是数据集的表示,若 salv…...

群晖NAS+DMS7.0以上版本+无docker机型安装zerotier
测试机型:群晖synology 218play / DSM版本为7.2.1 因218play无法安装docker,且NAS系统已升级为7.0以上版本,按zerotier官网说法无法安装zerotier, 不过还是可以通过ssh终端和命令方式安装zerotier。 1、在DSM新建文件夹 用于存放zerotier脚…...
Pinia持久化存储插件 pinia-plugin-persist
1、pinia-plugin-persist 作用 pinia-plugin-persist是一个Pinia持久化存储插件,用于将Pinia状态存储到本地持久化存储中,例如localStorage或sessionStorage。 2、安装和使用pinia-plugin-persist 有时候需要把pinia中的数据持久化存储(存到…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...