密码学(三)

news2024/12/30 2:48:02

文章目录

  • 前言
  • 一、Software Attestation Overview
  • 二、Authenticated Key Agreement
  • 三、The Role of Software Measurement

前言

本文来自 Intel SGX Explained

请参考:
密码学(一)
密码学(二)

一、Software Attestation Overview

依赖于可信处理器的系统的安全性取决于软件认证。由可信硬件建立的隔离容器中运行的软件可以请求硬件对一小段认证数据进行签名,生成认证签名。除了认证数据之外,签名的消息还包括一个唯一标识容器内软件的测量值。因此,认证签名可以用来说服验证者,认证数据是由特定的软件生成的,该软件托管在由可信硬件从外部干扰隔离的容器内。

在本节中讨论的每个硬件平台都使用略有不同的软件认证方案。平台的差异在于在隔离容器内执行的软件数量、提供给容器内软件的隔离保证以及获取容器测量的过程。每个可信硬件平台的威胁模型和安全属性直接源于上述设计选择,因此,对认证的良好理解是讨论现有平台之间差异的先决条件。

二、Authenticated Key Agreement

软件认证可以与密钥协商协议结合使用,因为软件认证提供了密钥协商协议所需的身份验证。由此产生的协议可以向验证者保证它已与托管在由可信硬件创建的隔离容器内的特定软件建立了共享密钥。下一段概述了增强的协议,以Diffie-Hellman密钥交换(DKE)[43]作为密钥交换协议的示例。

验证者开始执行密钥交换协议,并将第一个消息gA发送给安全容器内的软件。容器内的软件生成第二个密钥交换消息g
B,并要求可信硬件认证两个密钥交换消息的密码哈希值h(gA||gB)。验证者接收第二个密钥交换消息和认证签名,并通过检查下图所示的信任链中的所有签名来对安全容器内的软件进行身份验证。
在这里插入图片描述
上图表明了软件认证中的信任链由制造商密钥作为根开始,该密钥为安全处理器的认证密钥生成背书证书。处理器使用认证密钥生成认证签名,该签名包含容器的密码哈希和容器内部软件生成的消息。

在软件认证中使用的信任链以硬件制造商拥有的签名密钥为根,验证者必须对其进行信任。制造商充当证书颁发机构(CA,§ 3.2.1),为其生产的每个安全处理器提供一个唯一的认证密钥,用于生成认证签名。制造商还为每个安全处理器的认证密钥颁发背书证书。该证书表示该密钥用于软件认证。认证策略通常规定,至少认证密钥的私钥应存储在防篡改硬件中,并且仅用于生成认证签名。

安全处理器通过存储容器内加载的代码和数据的密码哈希来标识每个隔离容器。当处理器被要求对一段认证数据进行签名时,它使用与容器相关联的密码哈希作为认证签名中的测量值。验证者在使用认证密钥的背书证书验证处理器的认证密钥之后,确保签名有效,并验证签名中的测量值属于其期望与之通信的软件。

通过检查认证链中的所有链接,验证者对密钥交换中的另一方进行了身份验证,并确保它现在与期望的运行在受信任硬件上的隔离容器中的软件共享一个密钥。

三、The Role of Software Measurement

用于标识安全容器内部软件的测量值始终使用安全散列算法计算。可信硬件设计在其安全散列函数选择和提供给散列函数的数据方面存在差异。然而,所有设计都共享一个原则,即构建安全容器的每一步都会向其测量散列中添加数据。

软件认证背后的理念是计算机的所有者可以在安全容器中加载任何她希望的软件。然而,假定计算机所有者有动机参与一个分布式系统,其中通过软件认证对她构建的安全容器进行身份验证。如果不需要进行软件认证,计算机所有者可以构建任何没有约束的容器,这将使得无法对容器内部软件的安全属性进行推理。

根据上述论证,基于软件认证的可信硬件设计必须假设每个容器都参与软件认证,并且远程方将拒绝与其报告的测量值与分布式系统作者设置的预期值不匹配的容器进行交互。

例如,云基础设施提供商应该能够使用由可信硬件提供的安全容器在其计算机上运行任何所需的软件。然而,该提供商通过向客户租用其基础设施来赚钱。如果安全意识强的客户只愿意租用由可信硬件提供的容器,并使用软件认证对其使用的容器进行身份验证,那么云提供商将有强烈的经济激励按照客户的规格构建容器,以便容器通过软件认证。

容器的测量值是使用安全散列算法计算的,因此构建与预期测量相匹配的容器的唯一方法是按照分布式系统作者指定的确切步骤序列进行操作。安全散列函数的加密属性保证,如果计算机所有者在任何方面偏离指定的步骤序列,所创建的容器的测量值将与分布式系统作者预期的值不匹配,因此容器将被软件认证过程拒绝。

因此,宣称可信硬件设计的测量方案可以保证安全容器中的某个属性具有特定的值是有意义的。这个短语的确切含义是属性的值决定用于计算容器测量值的数据,因此预期的测量散列实际上为属性指定了预期值。在正确使用软件认证的分布式系统中,所有容器都将具有给定属性的所需值。

例如,为云基础设施设计的可信硬件使用的测量方案应该保证容器的内存是使用客户内容进行初始化的,通常称为映像(image)。

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

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

相关文章

kubernetes Adminssion Webhook 准入控制器 (ImagePolicyWebhook)

开头语 写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 介绍 原理 流程 Admission Webhook 准入控制器Vebhook是准入控制插件的一种,用于拦截所有向APISERVER发送的…

企业提升客户体验的实用技巧与策略

什么是客户体验?通俗点说,他是客户和企业在互动过程中收获的感受和印象。这个过程包括接触、预购、购买、使用、售后整个阶段。 联想到我们自己购买产品的过程,对一家店或者品牌的感受,绝不仅仅从产品的功能体验感和质量上获得的…

如何在Android Glide中结合使用CenterCrop和自定义圆角变换(图片部分圆角矩形)

如何在Android Glide中结合使用CenterCrop和自定义圆角变换(图片部分圆角矩形) 在Android开发中,使用Glide加载图片时,我们经常需要对图片进行特定的处理,比如裁剪和圆角变换,特别是一些设计稿,…

【51单片机】点亮第一个LED灯(含创建文件等基础操作)

51单片机现在不仅是电子信息专业学生的必修课,也是进入嵌入式领域的踏脚石。 本系列将会按照江科大的视频进行,也算是相当于一个笔记,进行巩固 实现第一个LED灯的点亮其实并不复杂,重要的是有一些准备工作比较繁琐,就…

关于“Python”的核心知识点整理大全63

目录 20.2.11 使用 Git 跟踪项目文件 1. 安装Git 2. 配置Git 3. 忽略文件 .gitignore 注意 4. 提交项目 20.2.12 推送到 Heroku 注意 20.2.13 在 Heroku 上建立数据库 20.2.14 改进 Heroku 部署 1. 在Heroku上创建超级用户 注意 注意 20.2.11 使用 Git 跟踪项目文件…

两种方式实现mysql截取年月日

select date_format(now(), %Y-%m-%d) select substring(now(), 1, 10)

MySQL面试题(下)

一.面试题案例 二.思维导图 一.面试题案例 1.查询学过「张三」老师授课的同学的信息 select s.*,c.cname,t.tname,sc.score from t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc where t.tidc.cid and c.cidsc.cid and sc.sids.sid and t.tnam…

使用 TypeVar 创建 Self 类型变量,方便用户在 Pycharm 编辑器中链式调用校验方法

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、相关回顾 使用 Raise…

linux centos 账户管理命令

在CentOS或其他基于Linux的系统上,账户管理涉及到用户的创建、修改、删除以及密码的管理等任务。 linux Centos账户管理命令 1 创建用户: useradd username 这将创建一个新用户,但默认不会创建家目录。如果想要创建家目录,可以…

Mac电脑好用的修图软件:Affinity Photo 2中文 for Mac

Affinity Photo 2提供了广泛的图像编辑和调整工具,使用户能够对照片进行精确的编辑和改进。它支持图像裁剪、旋转、缩放、变形等操作,以及曝光、色彩、对比度、饱和度等调整。 非破坏性编辑:软件采用非破坏性编辑方式,即对原始图…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(1) 质量刚体的在坐标系下运动

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

【高效开发工具系列】idea注释设置

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【idea】idea 开发快捷键

在Java开发中,有一些常用的快捷键和工具,可以提高开发效率。以下是一些常见的Java开发常用到的功能和快捷键: IDE快捷键: 代码大小写切换: ctrlshiftu 格式化代码:Ctrl Alt L,会让代码更整…

GC9118S—低压 5V 全桥驱动芯片,可替代TMI8118,应用于摄像机,机器人技术等产品上

GC9118S 是一款低压 5V 全桥驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。 GC9118S 能提供高达 1.1A 的持续输出电流。可以工作在 2~6V 的电源电压上。具有 PWM(IN/IN)输入接口…

UE5 C++(十四)— Interface的使用

文章目录 接口(Interface)介绍接口在C中的应用接口在UE中的使用 接口(Interface)介绍 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现&#x…

Linux进程通信之管道

目录 1、无名管道 1.无名管道的特点 2.pipe函数创建管道 3.图例 2、命名管道(FIFO) 1.命名管道的特点 2.mkfifo 函数-创建命名管道 3.示例 1.循环读取数据 2.循环写入数据 1、无名管道 管道通常指的就是无名管道, 1.无名管道的特点…

Support Vector Machine 建模(基于三种数据集)

目录 一、 SVM 对于 Iris 数据集的处理 建模: 二、 SVM 对于 弯月数据集的处理 建模: 三、 SVM 对于 direct marketing campaigns (phone calls)数据集的处理 建模: Support Vector Machine (SVM)是一种机器学习算法,属于监…

数据结构排序——选择排序与堆排序(c语言实现)

数据结构排序——选择排序与堆排序(c语言实现) 今天继续排序的内容: 文章目录 1.选择排序1.1基本介绍1.2代码实现1.2.1基础款1.2.2进阶款 2.堆排序2.1基本介绍2.2代码实现 1.选择排序 1.1基本介绍 选择排序(Selection Sort&#…

RTMP vs SRT:延迟与最大带宽的比较

引言 文来自Haivision的白皮书,比较了RTMP和SRT两种流媒体协议的优缺点,并通过实验测试了两种协议在延迟和最大带宽两方面的表现。 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频…

Labelimg打标工具编译版使用介绍——免安装conda等python虚拟环境,简单易用上手快,不容易报错

首先直接给出免积分的下载地址,开源软件,直接共享给csdn的各位开发者,求个三连不过分吧。点赞关注收藏。谢谢各位支持 资源地址如下 1 打开D:\xxxxx\labelImg\data内的predefined_classes.txt文件, 修改其中的类别为自己需要的…