浅析基于可验证计算的可信云计算Word文档下载推荐.docx

上传人:b****3 文档编号:14397985 上传时间:2022-10-22 格式:DOCX 页数:5 大小:21.31KB
下载 相关 举报
浅析基于可验证计算的可信云计算Word文档下载推荐.docx_第1页
第1页 / 共5页
浅析基于可验证计算的可信云计算Word文档下载推荐.docx_第2页
第2页 / 共5页
浅析基于可验证计算的可信云计算Word文档下载推荐.docx_第3页
第3页 / 共5页
浅析基于可验证计算的可信云计算Word文档下载推荐.docx_第4页
第4页 / 共5页
浅析基于可验证计算的可信云计算Word文档下载推荐.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

浅析基于可验证计算的可信云计算Word文档下载推荐.docx

《浅析基于可验证计算的可信云计算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《浅析基于可验证计算的可信云计算Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。

浅析基于可验证计算的可信云计算Word文档下载推荐.docx

用户如何相信云提供商执行的程序结果是正确的?

如何确保存储在远端的数据的完整性和私密性?

检测远程服务器返回的结果是否正确的传统解决方案有以下几种:

(1)采用审计的方法,即随机选取服务器执行的一小部分程序进行验证,这就可能发生错误执行的程序没有被服务器验证的情况,所以说这种方法必须假设错误执行的程序的发生频率是很小的;

(2)利用可信硬件和远程证明来保证远程服务器运行的程序是正确的,但是这种方法必须假设云提供商是完全可信的,由于硬件基础设施是在云提供商的控制之下,如果云提供商内部人员恶意控制了可信硬件(如CPU、TPM),就无法保障云提供商运行的程序的机密性和可验证性.而且还需要假设存在一个可信链,而运行时可信链的建立在可信计算领域依然是一个难题.事实上,在实际的云计算应用场景中这两个假设通常是无法满足的.在云计算场景中,用户无法完全相信云提供商,即使用户出于声誉的考虑相信云提供商本身,也无法相信其内部管理人员;

(3)采用冗余计算的方法,用户可以让多个远程服务器把相同的程序执行多次,然后检测他们返回的结果是否一致.但这在云计算中也是行不通的,云计算中的软硬件平台配置通常是相同的,而这违背了冗余计算中错误必须是不相关的假设,且远程服务器很容易窜通,合谋返回一个错误的程序执行结果.

而可证明数据持有(ProvableDataPossession,PDP)方法和可恢复证明(ProofofRetrievability,POR)方法可以用来确保存储在远端的数据的完整性,避免云提供商删除和篡改数据.相比PDP方法,POR除了能确保数据的完整性之外,还能确保数据的可恢复性,但是PDP和POR无法确保在云提供商端执行的程序的正确性.另一方面,基于复杂性理论的交互式证明系统(InteractiveProofsystem,IPs)和概率可验证证明系统(ProbabilisticallyCheckableProofsystem,PCPs)以及密码学理论构造的可验证计算协议能以很高的正确率检测出远程服务器返回的程序执行结果是否正确并且不需要对远程服务器(云提供商)做任何假设.可验证计算协议致力于设计验证者与证明者之间的协议,协议允许在计算能力上相对较弱的验证者(如云计算中的用户)将其程序发送到一个计算能力强大的,但不可信的证明者(例如云提供商),并要求证明者执行其发送的程序.所设计的协议应确保证明者不但返回程序的执行结果给验证者,并且使得验证者相信这个程序执行结果是正确的.其主要目标是使得服务器在发送程序执行结果的同时提供程序正确执行的证据,而用户验证证据的过程必须要比用户自己执行程序的开销小(当然有时由于资源比如存储的限制,用户根本无法自己执行程序,在这种情况下是指和假设用户有足够的资源执行程序时的开销相比要小).

2问题描述和协议设计原则问题描述:

验证者V把程序f和输入变量x发送给证明者P,P计算f(x),并把f(x)赋值给变量y,返回y给V,然后V和P以如下方式进行交互:

(1)如果y=f(x),那么P应该能向V证明y的正确性,即使得V接受y.其中,证明可以通过回答V提出的一些问题完成,也可以通过给V提供一个证书完成.

(2)如果yf(x),V能以很高的概率拒绝接受y.可验证计算协议的设计必须满足3个基本原则:

(1)协议应该使得验证者的开销比其在本地执行程序f(x)的开销要低,但可以允许证明者为达到协议的目标产生合理的开销,因为提供运行程序的正确性保障本身就需要用户付出一定的代价,在云计算实际场景中,表现为云提供商可能会对需要提供程序正确执行证据的用户收取额外的费用;

(2)不能假设证明者完全遵守协议,也就是说证明者可能是恶意的,这和云计算中不能假设云提供商是完全可信的实际场景也是十分吻合的;

(3)f应该是通用程序,然而在具体的协议设计中,可能需要对f表示的程序做一些假设,从而通过限制可验证计算协议适用的应用程序种类使得协议的性能达到实际应用场景的要求,但是可验证计算协议的设计原则依然是尽量能表示通用程序.

通常的安全保障工具比如说病毒检测关注的都是不正确的行为的识别和防范,可验证计算协议则有所不同,其不关心证明者可能的不正确行为,比如犯了什么错误,出现了什么故障等等,而只关心其执行程序的结果是否是正确的,却无法推测程序错误执行的原因.这和云计算中用户对于程序执行的要求也是相符的.

3协议流程和关键

3.1可验证计算协议流程

可验证计算协议的流程主要包括编译处理和证明系统,具体流程如图1所示.首先是编译处理阶段,验证者V和证明者P将高级语言(比如C语言)编写的程序转换成一组布尔电路集(根据协议的不同,也可以是其他计算模型比如算术电路集或者约束集等).接下来,P和V进行一系列协议交互,不失一般性,这里用布尔电路集C表示程序f.V把输入变量x传输给P,P计算C,输出程序执行结果y和C正确执行的一组轨迹{C,x,y}给V,{C,x,y}也称为C的一个可满足性赋值z.其中,C正确执行的一组轨迹是指C的输入线路被赋值为x,输出线路被赋值为f(x)时,电路集中所有电路门的赋值集合.在程序执行的过程中,证明者P获得了正确计算电路的执行轨迹{C,x,y}.如果P声称的输出y是不正确的,即y不等于f(x),那么对于{C,x,y},就不可能存在一个有效的执行轨迹(电路C正确计算的一个证明).因此,如果P能够对{C,x,y}构建一个有效的执行轨迹,那么就一定能使得验证者V相信它返回的结果是正确的.显然,电路正确计算过程中的各个门的赋值本身就能说明存在有效的执行轨迹.但是,如果需要V依次验证所有电路门在计算电路过程中的值,进而确定程序是否正确执行,这个工作量和V本地执行f是相当的,这就违背了可验证计算协议设计的基本原则.所以,图中第步就需要证明者对程序执行轨迹编码,生成一个很长的字符串,并使得不同的执行轨迹生成的编码在所有不同的位置的取值是不相同的.这样,验证者就可以通过检查随机选择的编码的特定的位置的取值,来验证执行轨迹的有效性,进而对返回的结果采取特定的测试来确定证明者返回的结果是否正确.

3.2可验证计算协议的理论依据

理解可验证计算协议的原理和流程关键在于理解两个等价关系,如3.1节所述,可验证计算协议的流程主要包括编译处理和证明系统.其中,编译处理阶段,编译器完成高级语言程序到电路集或者约束集(可以看做方程组)等计算模型的转化,其实现的理论依据在于等价关系:

程序执行的正确性等价于电路集或者约束集可满足问题.

4计算模型生成原理流程

为了应用IPs和PCPs理论构造可验证计算协议,必须先把高级语言程序转换成IPs和PCPs判定器可以接受的计算模型,比如说电路集和约束集.Cook-Levin理论表明这种转换理论上是可以的,因为任何程序f都可以用图灵机来模拟,同时图灵机可以转换成布尔电路,且不会超过程序的步骤.目前可验证计算协议中编译器都是基于Fairplay和Benjamin编译器设计的,常用的计算模型主要有电路集和约束集两种.Fairplay编译器和通常的硬件编译器不同,不能使用寄存器,没有时序逻辑,通过FairplayWeb网站可以获取该编译器.Fairplay可以用来把高级语言编写的程序编译成一组布尔电路集,但这种高级语言并不是通常所说的高级语言,而是一种类似Pascal或者C语言的子集的程序语言,称为(安全函数定义)SFDL语言.Benjamin提出的编译器继承并改进了Fairplay编译器,用于把高级语言表示的程序编译成一组约束集.这种编译器也引入了一种类似SFDL的高级程序语言,称为扩展函数描述BFDL.不失一般性,本文以Benjamin编译器为例说明从高级语言程序(C语言为例)转化成约束集的原理和工作流程.BFDL的语法很容易理解,很多地方都是从C和Pascal语言继承的.BFDL语言使用C风格的语法,是一种静态类型语言,支持类型引用:

第一部分是类型声明,定义将要使用的数据类型、支持布尔型、整型、结构体和数组.

5可验证计算协议分类

5.1依据编译器复杂程度分类

由第3节所述,可验证计算协议主要流程包括编译处理和证明系统两个阶段,所以下文将依据协议流程对不同协议分类,并说明每种分类的特点和典型协议.

本文提到的协议中的编译处理都是直接使用Fairplay和Benjamin编译器或者对其改进后使用,生成证明系统可以接受的计算模型.依据可验证计算协议使用的编译器的复杂程度,可以分为简单编译器的可验证计算协议和复杂编译器的可验证计算协议.简单的编译器是指不支持内存随机存取的编译器,即不考虑内存概念,假设程序的输入都来源于验证者.简单编译器的可验证计算协议包括GKR、CMT、Thaler、Allspice、Pepper、Ginger、Zaatar和Pinocchio等,其中Pinocchio是第一个直接接受C语言程序的协议,而其他协议则需要先将C语言程序转化为另一种指定的高级语言比如BFDL语言,然后再转化成证明系统可以接受的计算模型.GKR使用算术电路作为计算模型,相比较之前协议使用的布尔电路减少了程序编译的开销.CMT、Thaler、Allspice、Pepper基本沿用了GKR中的编译器,且Pepper对算术电路进行了简化,Ginger扩展了算术电路模型表示的程序种类,使得模型包含浮点数类型,不等测试,逻辑表达式,条件语句等等,因而使得模型能表示的程序更加接近于通用程序.Allspice编译器通过增加了一个静态分析器来自动确定并运行Zaatar或GKR两个协议中效率较高的一个,增加了协议的可扩展性.

复杂编译器的可验证计算协议包括Pantry和BCGTV.复杂的编译器支持内存操作,这更符合实际应用场景.Pantry中的编译器改进了Zaatar和Pinocchio使用的编译器,结合了不可信存储中使用的技术,使用Merkle-hash树来支持内存随机存取.通过构建一个二叉树来表示内存,二叉树的每个叶节点存储相应内存地址的值,每个内部节点存储作用于其子节点的抗冲突哈希函数的值.每当验证者通过(根节点值、内存地址)二元组访问一个内存地址(叶节点)时,证明者可以通过提供沿叶节点到根节点证明路径的所有值来证明其返回值是正确的.证明者欺骗验证者的唯一方法是通过找到哈希函数中的冲突.由于Pantry使用的抗冲突哈希函数的计算函数可以有效地表示成约束集,从而使得内存操作也可以有效的表示成约束集.如果把内存操作也看作普通的程序,就可以实现包含内存操作的程序的可验证计算了.更重要的是,Pantry支持远程输入,这使其能更好的支持MapReduce程序,且在MapReduce程序中为了降低开销定义了GetBlock和PutBlock两种元操作来代替构造Merklehash树6基于交互式证明系统的可验证计算协议本文首先说明交互式证明系统是如何使验证者V确信它接收到的程序执行结果是正确的,.假设要执行的程序是计算输入为x的函数f.首先,验证者在把输入x和f传输给证明者,同时随机选取关于输入的低阶多项式扩展函数的值(比如加权和)作为秘密s,s不依赖于要执行的程序,因此无需在输入要执行的程序之前选取秘密s.接下来,P和V进行一系列交互(d轮,d为电路层数),这些交互的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1