searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一次性程序的外包计算应用

2024-06-07 09:49:58
8
0

一、技术背景

    外包计算是一种算力委托方式,拥有计算资源的一方通过出售算力来获取收益,而算力不足的一方可以将计算的数据和方法传输给算力出售方进行计算,得到计算结果。

    计算结果可信是一个非常重要的前提条件,即如何确保计算方严格按照提供的数据和方法进行计算,而没有伪造计算结果。传统的外包计算,一般采用三种方法实现计算结果可信:

1)直接依赖计算方的公信力,其问题是不能利用非信任方的算力,存在可能因软硬件故障导致的计算错误,没有技术上的可靠性保证。

2)依赖可信执行环境的硬件手段,其问题是仅支持拥有特定硬件资源的计算节点,算力资源较少,成本高昂。

3)使用复杂的可验证计算技术,其问题是计算量相对原始计算呈数量级增长,导致计算成本过高,且一般仅针对特定计算,适用范围具有较大的局限性。

    计算方伪造计算结果的过程一般为:逆向计算程序,识别出计算结果格式,根据格式要求填充伪造数据。在现有的外包计算中,计算程序是可以不断重复使用的,因此作恶方只需付出一次逆向计算程序的成本,就能获取伪造同类计算任务计算结果的能力,而无需再消耗计算成本进行真实计算。目前对抗计算程序被逆向分析的主要技术有:

1)代码混淆(Obfuscation),将计算机程序的源代码或机器代码,转换成功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以直接作用于程序编译而成二进制文件,可以针对函数、API调用、变量、库、值进行改写,重写部分逻辑,打乱代码格式,添加花指令。

2)自修改代码(Self Modifying Code),指的是程序中的部分代码在运行前处于加密状态,程序运行中执行相关解密操作,恢复为正常功能代码。自修改代码可以实现为在执行过程中才对需要的特定代码片段进行即时解密。

3)虚拟机保护(Virtual Machine Protect) ,是将程序的机器指令转换为字节码,再由虚拟机引擎来控制转换后的字节码执行。经过复杂设计的虚拟机指令集不但可以增加逆向分析的困难,还能做到即使被逆向也无法形成通用的自动化工具。

    一次性程序(One-Time Programs)指的是一种只能计算一次(或扩展为N次)的计算程序,其执行次数达到后就执行“自毁”,无法再次进行计算。一次性程序在通用硬件上存在可通过拷贝副本来实施重试攻击的问题,所有一般需要配合特定硬件(如抗干扰硬件令牌,密钥被查询后自动擦除)实施。

二、一次性程序方案

    对目标计算程序施加代码混淆、自修改代码、虚拟机保护等对抗逆向措施,进行二进制变形,为每个计算任务生成一次性程序,其计算结果携带数据指纹,并使用一次性密钥进行加密,验证方通过解密比对数据指纹来验证结果的有效性。

图一、一次性程序的外包计算结果可信方案

    一次性程序的原始目的是为了防止使用者超过次数执行计算程序,对其思想进行扩展,设计只进行一次计算即可丢弃的一次性程序(这类一次性程序可以称为Disposable Programs),来实现保护计算程序第一次执行结果的目的,而不关心计算程序被多次执行的问题,使得这类一次性程序可以运行在通用硬件上。

    计算结果保护方法是通过计算结果处理程序对计算结果进行“一次性”密钥加密实现。计算结果处理程序所需的“一次性”加密密钥和数据指纹是由密钥计算程序生成。密钥计算程序是一个集成多种加密算法,支持输入参数配置,可用于生成加解密密钥和数据指纹的计算程序。“一次性”指的是密钥计算程序生成的加解密密钥和数据指纹是基于计算任务数据计算得到,它们之间存在强绑定关系,也就具有唯一性。密钥计算程序支持输入参数配置是为了提高所生成加解密密钥和数据指纹的多样性。

    一次性程序生成方法是利用代码混淆、自修改代码、虚拟机保护技术来处理目标计算程序、密钥计算程序和计算结果处理程序,并打包生成最终计算程序。综合利用代码混淆、自修改代码、虚拟机保护技术可以提高计算方作恶的算力成本和时间成本,使其作恶的成本远高于执行真实计算的成本,破坏计算方作恶的经济基础,降低作恶的可能性。提供密钥计算程序和计算结果处理程序,以适配通用的目标计算程序,密钥计算程序在计算执行过程中生成加密密钥和数据指纹,计算结果处理程序接收处理目标计算程序的输出结果。

    计算结果验证是对计算结果进行解密并比对数据指纹的一致性。计算方执行最终计算程序,原始目标计算程序的输出结果会经过计算结果处理程序添加数据指纹并加密生成最终计算结果。验证方在接收最终计算结果后,在本地使用密钥计算程序按相同输入参数计算得到解密密钥和数据指纹,使用该解密密钥对最终计算结果进行解密,然后比对解密得到的数据指纹同本地计算生成的数据指纹是否一致。

    时间有效性,根据目标计算程序和计算任务数据可以预先测算计算任务的算力消耗,把计算任务拆分为多个细粒度的子任务,让单个子任务可以在有限的时间T内完成。时间T可以根据任务的质量要求设置不同的级别。计算方需在时间T内完成计算并回传计算结果,否则可判定计算方存在作恶可能,直接拒绝本次计算结果。施加时间限制可以使计算方在时间上无法完成做恶。   

三、结论

    一次性程序的计算结果可信方案解决了现有外包计算结果可信需要依赖于计算方公信力或计算成本过高的问题。在外包计算中引入一次性程序的思想,为每个计算任务生成一次性程序,结合对抗逆向分析手段和一次性密钥加密技术,提高计算方作恶的成本,破坏作恶的经济基础,实现对外包计算结果的保护。 

0条评论
0 / 1000
w****n
14文章数
1粉丝数
w****n
14 文章 | 1 粉丝
w****n
14文章数
1粉丝数
w****n
14 文章 | 1 粉丝
原创

一次性程序的外包计算应用

2024-06-07 09:49:58
8
0

一、技术背景

    外包计算是一种算力委托方式,拥有计算资源的一方通过出售算力来获取收益,而算力不足的一方可以将计算的数据和方法传输给算力出售方进行计算,得到计算结果。

    计算结果可信是一个非常重要的前提条件,即如何确保计算方严格按照提供的数据和方法进行计算,而没有伪造计算结果。传统的外包计算,一般采用三种方法实现计算结果可信:

1)直接依赖计算方的公信力,其问题是不能利用非信任方的算力,存在可能因软硬件故障导致的计算错误,没有技术上的可靠性保证。

2)依赖可信执行环境的硬件手段,其问题是仅支持拥有特定硬件资源的计算节点,算力资源较少,成本高昂。

3)使用复杂的可验证计算技术,其问题是计算量相对原始计算呈数量级增长,导致计算成本过高,且一般仅针对特定计算,适用范围具有较大的局限性。

    计算方伪造计算结果的过程一般为:逆向计算程序,识别出计算结果格式,根据格式要求填充伪造数据。在现有的外包计算中,计算程序是可以不断重复使用的,因此作恶方只需付出一次逆向计算程序的成本,就能获取伪造同类计算任务计算结果的能力,而无需再消耗计算成本进行真实计算。目前对抗计算程序被逆向分析的主要技术有:

1)代码混淆(Obfuscation),将计算机程序的源代码或机器代码,转换成功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以直接作用于程序编译而成二进制文件,可以针对函数、API调用、变量、库、值进行改写,重写部分逻辑,打乱代码格式,添加花指令。

2)自修改代码(Self Modifying Code),指的是程序中的部分代码在运行前处于加密状态,程序运行中执行相关解密操作,恢复为正常功能代码。自修改代码可以实现为在执行过程中才对需要的特定代码片段进行即时解密。

3)虚拟机保护(Virtual Machine Protect) ,是将程序的机器指令转换为字节码,再由虚拟机引擎来控制转换后的字节码执行。经过复杂设计的虚拟机指令集不但可以增加逆向分析的困难,还能做到即使被逆向也无法形成通用的自动化工具。

    一次性程序(One-Time Programs)指的是一种只能计算一次(或扩展为N次)的计算程序,其执行次数达到后就执行“自毁”,无法再次进行计算。一次性程序在通用硬件上存在可通过拷贝副本来实施重试攻击的问题,所有一般需要配合特定硬件(如抗干扰硬件令牌,密钥被查询后自动擦除)实施。

二、一次性程序方案

    对目标计算程序施加代码混淆、自修改代码、虚拟机保护等对抗逆向措施,进行二进制变形,为每个计算任务生成一次性程序,其计算结果携带数据指纹,并使用一次性密钥进行加密,验证方通过解密比对数据指纹来验证结果的有效性。

图一、一次性程序的外包计算结果可信方案

    一次性程序的原始目的是为了防止使用者超过次数执行计算程序,对其思想进行扩展,设计只进行一次计算即可丢弃的一次性程序(这类一次性程序可以称为Disposable Programs),来实现保护计算程序第一次执行结果的目的,而不关心计算程序被多次执行的问题,使得这类一次性程序可以运行在通用硬件上。

    计算结果保护方法是通过计算结果处理程序对计算结果进行“一次性”密钥加密实现。计算结果处理程序所需的“一次性”加密密钥和数据指纹是由密钥计算程序生成。密钥计算程序是一个集成多种加密算法,支持输入参数配置,可用于生成加解密密钥和数据指纹的计算程序。“一次性”指的是密钥计算程序生成的加解密密钥和数据指纹是基于计算任务数据计算得到,它们之间存在强绑定关系,也就具有唯一性。密钥计算程序支持输入参数配置是为了提高所生成加解密密钥和数据指纹的多样性。

    一次性程序生成方法是利用代码混淆、自修改代码、虚拟机保护技术来处理目标计算程序、密钥计算程序和计算结果处理程序,并打包生成最终计算程序。综合利用代码混淆、自修改代码、虚拟机保护技术可以提高计算方作恶的算力成本和时间成本,使其作恶的成本远高于执行真实计算的成本,破坏计算方作恶的经济基础,降低作恶的可能性。提供密钥计算程序和计算结果处理程序,以适配通用的目标计算程序,密钥计算程序在计算执行过程中生成加密密钥和数据指纹,计算结果处理程序接收处理目标计算程序的输出结果。

    计算结果验证是对计算结果进行解密并比对数据指纹的一致性。计算方执行最终计算程序,原始目标计算程序的输出结果会经过计算结果处理程序添加数据指纹并加密生成最终计算结果。验证方在接收最终计算结果后,在本地使用密钥计算程序按相同输入参数计算得到解密密钥和数据指纹,使用该解密密钥对最终计算结果进行解密,然后比对解密得到的数据指纹同本地计算生成的数据指纹是否一致。

    时间有效性,根据目标计算程序和计算任务数据可以预先测算计算任务的算力消耗,把计算任务拆分为多个细粒度的子任务,让单个子任务可以在有限的时间T内完成。时间T可以根据任务的质量要求设置不同的级别。计算方需在时间T内完成计算并回传计算结果,否则可判定计算方存在作恶可能,直接拒绝本次计算结果。施加时间限制可以使计算方在时间上无法完成做恶。   

三、结论

    一次性程序的计算结果可信方案解决了现有外包计算结果可信需要依赖于计算方公信力或计算成本过高的问题。在外包计算中引入一次性程序的思想,为每个计算任务生成一次性程序,结合对抗逆向分析手段和一次性密钥加密技术,提高计算方作恶的成本,破坏作恶的经济基础,实现对外包计算结果的保护。 

文章来自个人专栏
隐私计算
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0