目录
摘要
本文作者提出Viosr:帮助用户在受损的云平台和不可信的共享租户中的视频流和机器学习模型提供保密性。
A Privacy-Preserving MLaaS Framework
作者在这里指出他们实现data-oblivious的三个特点:
1.使用混合TEE保护了ML管道中的计算。
2.使用了CPU到GPU的安全交互通道阻止信息泄露。
3.使用一套原语帮助data-oblivious开发。
什么是数据遗忘?
去按照我的理解就是从各个角度确保数据不会泄露的一种方式。上述的三个特点就是实现数据遗忘的具体表现。
混合TEE架构
为什么叫混合TEE架构,因为作者的架构横跨CPU和GPU,并且将视频流的不同模块放置在这些TEEs中。他们采用了将非CNN模块在CPU中运行,CNN模块在GPU中运行来提高效率。
基于访问控制的攻击可以部署在CPU和GPU TEE的任何位置。但是无论安放位置如何,作者提出data-oblivious算法和技术(下文提到)都可以使用。
CPU and GPU TEEs.
CPU TEE采用的是SGX,GPU TEE采用的是Graviton(这个就用不了)。
CPU TEE 运行 GPU的runtime。runtime通过调用ioctl告诉GPU driver管理资源。
ioctl调用被转换成命令提交给命令处理器。用以下两点确保安全:
1.runtime使用身份验证的加密保护命令。2.runtime验证由gpu完成时返回的签名摘要。
runtime加密tee间的通信。
使用Graphene 将非CNN模块移植到Enclave飞地。
通过ioctl调用实现runtime与driver的通信。
Pipeline execution.
1.在CPU TEE内对视频流进行解密,并对每个帧进行遗忘解码。
2.使用遗忘视觉算法从每个帧中提取相同尺寸,相同数量的对象(其中一些是假的)放到原型缓冲区中。
3.将队列中的对象发送到GPU中。
CPU-GPU Communication
通过以下两种方式阻止信息泄露:1.每次传输相同数量的对象。2.CNN以固定速率运行。
作者通过创建虚拟对象来确保CNN速率相同,但会浪费资源。因此提出Oblivious protocol来减少处理虚拟对象。
Oblivious protocol: 对缓冲区的内容进行优先级排序,真对象放到队尾,虚拟对象放到队头。从队尾开始传数据,队头的虚拟对象可能被下一帧的数据覆盖。
CNN Classification on the GPU
CNN的大部分操作为遗忘操作。非遗忘操作可以归类为条件赋值。将条件赋值操作进行一定的替换使其进行遗忘推理。
Oblivious Modules on the CPU
遗忘原语:
1.遗忘赋值(oassign)
2.遗忘排序(osort):采用Bitonic排序网络,它是一种并行排序算法,能够高效地对一系列元素进行排序,特别适用于并行处理架构。其关键特征是能够按升序和降序两种方式对序列进行排序。
3.遗忘数组访问(oaccess):访问数组中的数据但不会泄露它的值。