密码学(二)

文章目录

  • 前言
  • 一、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)颁发的数字证书,或者采用去中心化的信任模型,如信任网络,其中个人对彼此的公钥进行数字签名以建立信任。

密码学(一)的介绍性材料假设每个参与方通过具有完整性保证的信道传输他们的公钥。但实际上,这并不是一个合理的假设,安全分发公钥仍然是一个尚未解决的研究问题。

最广泛采用的解决公钥分发问题的方法是证书颁发机构(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提供的签名匹配。

总之,可以使用密钥协商协议从非对称密钥签名方案中引导对称密钥原语,其中只有一方需要能够对消息进行签名。

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

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

相关文章

【管理篇 / 恢复】❀ 07. macOS下用命令刷新固件 ❀ FortiGate 防火墙

【简介】随着苹果电脑的普及,很多管理员都会通过苹果电脑对飞塔防火墙进行管理。当防火墙需要命令状态下刷新固件时,在macOS下用命令刷新固件,将会是一个小小的挑战。 首先是硬件的连接,USB配置线的USB一头,接入MAC的U…

抖音在线查权重系统源码,附带查询接口

抖音权重在线查询只需输入抖音主页链接,即可查询作品情况。 搭建教程 上传源码并解压 修改数据库“bygoukai.sql” 修改“config.php” 如需修改水印请修改第40行 如需修改限制次数,请修改第156行 访问域名user.php即可查看访问用户,停…

走近阿里巴巴 揭秘阿里文化之旅

一、【项目背景】 看过去:从18人到近3万人,从50万起家,到市值接近5000亿美元,20年间,阿里步步为营,缔造互联网神话。 看发展:阿里将B系纳入新一轮的核心战略,志在打造世界第五大经…

1389 蓝桥杯 二分查找数组元素 简单

1389 蓝桥杯 二分查找数组元素 简单 //C风格解法1&#xff0c;lower_bound(),通过率100% //利用二分查找的方法在有序的数组中查找&#xff0c;左闭右开 #include <bits/stdc.h> using namespace std;int main(){int data[200];for(int i 0 ; i < 200 ; i) data[i] …

Linux基础知识点-(七-线程)

目录 一、线程和进程 1.1 线程的基本概念 1.2 线程的优缺点 二、创建线程 2.1 pthread_create() - 创建线程函数 三、线程属性 3.1 pthread_attr_t类型 3.2 phread_t类型 四、线程退出 4.1 pthread_exit() 4.2 pthread_join() 4.3 pthread_detach() 一、线程和进…

PyTorch|构建自己的卷积神经网络--池化操作

在卷积神经网络中&#xff0c;一般在卷积层后&#xff0c;我们往往进行池化操作。实现池化操作很简单&#xff0c;pytorch中早已有相应的实现。 nn.MaxPool2d(kernel_size ,stride ) 这种池化叫做最大池化。 最大池化原理很简单&#xff0c;就是一个filter以一定的stride在原…

数据库内核那些事|细说PolarDB优化器查询变换:IN-List变换

导读 数据库的查询优化器是整个系统的"大脑"&#xff0c;一条SQL语句执行是否高效在不同的优化决策下可能会产生几个数量级的性能差异&#xff0c;因此优化器也是数据库系统中最为核心的组件和竞争力之一。阿里云瑶池旗下的云原生数据库PolarDB MySQL版作为领先的云…

golang生成12个月

// GetMonthTimeCycle 获取月份周期 // 参数 year 年份 func GetMonthTimeCycle(year int) (*[]TimeCycle, error) {var yearstart time.Timevar start time.Timevar end time.Timevar no intvar name stringvar loc, err time.LoadLocation("Local")if err ! nil {…

CentOs搭建Kafka集群

Centos7搭建Kafka集群 一、集群规划二、环境准备三、安装kafka集群1、下载kafka安装包2、解压3、配置环境变量4、编辑配置文件①修改broker.id②配置kafka运行日志路径③配置Zookeeper集群地址 5、启动集群6、测试kafka①、创建topic②、查看当前服务器中的所有topic③、生产者…

MySQL复习汇总(图书管理系统)

MySQL图书管理系统&#xff08;49-94&#xff09;源码_71.备份book数据库到e盘的mybook.sql文件(备份文件中要求包含建库命令)-CSDN博客 CROSS JOIN&#xff1a;交叉连接&#xff08;笛卡尔积&#xff09; -- 1、 创建一个名称为book的数据库。 -- 2、 打开book数据库…

文件夹重命名:如何一键完成简体中文文件夹名到繁体中文的批量转换

随着科技的发展&#xff0c;人类越来越依赖计算机和电子设备进行文件管理。在这个过程中&#xff0c;经常会遇到要将简体中文文件夹名转换为繁体中文的情况。这有助于统一文件名的格式&#xff0c;也能提高文件的可读性和检索性。那如何一键完成简体中文文件夹名到繁体中文的批…

建筑模板每平方价格怎么算?

在建筑行业中&#xff0c;建筑模板是一种常用的辅助材料&#xff0c;主要用于浇筑混凝土时形成所需的结构形状。了解建筑模板的定价方式对于预算控制和成本估算至关重要。本文将详细介绍建筑模板每平方米价格的计算方法。 1. 建筑模板的类型和特点建筑模板的种类繁多&#xff0…

YogaPro 16s 安装Ubuntu23.04 教程

一、 制作启动盘 官网下载Ubuntu23.04镜像&#xff0c;安装rufus软件&#xff0c;按照下图设置相应格式&#xff0c;然后点击开始即可 二、 磁盘空间分配 流程&#xff1a; 此电脑右键管理 -> 选择磁盘管理 -> 选中D盘 -> 压缩卷 -> 选择需压缩的内存即可 三、…

“火火的”动态(myBlink of csdn)

集结我的人气Blink索引列表&#xff0c;Python脚本自动生成于2024年01月06日。 生成本篇笔记Html超文本的Python脚本源码地址&#xff1a;https://blog.csdn.net/m0_57158496/article/details/135415239#codes (本笔记适合初通Python&#xff0c;熟悉六大基本数据类型(str字符串…

原子操作类原理剖析

UC包提供了一系列的原子性操作类&#xff0c;这些类都是使用非阻塞算法CAS实现的&#xff0c;相比使用锁实现原子性操作这在性能上有很大提高。 由于原子性操作类的原理都大致相同&#xff0c;所以只讲解最简单的AtomicLong类的实现原理以及JDK8中新增的LongAdder和LongAccumu…

Django 10 表单

表单的使用流程 1. 定义 1. terminal 输入 django-admin startapp the_14回车 2. tutorial子文件夹 settings.py INSTALLED_APPS 中括号添加 "the_14", INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib…

服务器故障与管理口与raid

一&#xff0c;服务器常见故障 1&#xff0c;系统不停重启进入不了系统 排查是否是硬件故障&#xff0c;系统盘是否损坏&#xff08;硬盘灯红色&#xff0c;黄色&#xff0c;绿色&#xff09; 查看系统第一启动项是那种方式(硬盘 网络网卡 光驱 U盘) bios 是否双系统&#x…

鉴源论坛 · 观模丨浅谈Web渗透之信息收集(下)

作者 | 林海文 上海控安可信软件创新研究院汽车网络安全组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 信息收集在渗透测试过程中是最重要的一环&#xff0c;“浅谈web渗透之信息收集”将通过上下两篇&#xff0c;对信息收集、…

ChatGPT学习笔记——大模型基础理论体系

1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …