支持区块链的物联网边缘计算:应对隐私、安全及其他挑战

1. 引言

联网设备的数量每年都在呈指数级增长。诸如无人机、联网车辆、可穿戴设备、智能机器人等设备在源头产生了海量数据。边缘计算正成为处理这些物联网(IoT)设备生成数据的事实架构。边缘计算平台的日益成熟以及5G和Wi‐Fi 6[1]等新兴技术的发展,正在加速边缘计算的采用。

在过去的十年中,区块链技术作为电子现金系统诞生,并通过加密货币、智能合约和去中心化应用等多种形式不断发展。本文提出的一种可能的去中心化应用是支持区块链的物联网边缘计算 [2]。当前论文是此项工作的延伸。本文的结构如下。第2节介绍了支持区块链的物联网边缘计算解决方案的相关背景、先前的工作、所提出的架构以及实施中的挑战。第3节描述了与数据隐私相关的问题,并重点阐述了基于可信执行环境的方法来应对这些挑战的可能解决方案。第4节解释了如何确保计算完整性并验证结果。下一节重点讨论了与支付相关的挑战;随后的章节解释了打包与部署方面的挑战。最后是结论部分。

2. 背景

2.1 物联网边缘计算

典型的基于物联网的应用拥有产生数据的传感器,并将数据发送到附近的网关。网关设备随后将数据发送至云服务器进行进一步处理或存储。雾计算和边缘计算架构[3]通过利用靠近数据源的资源,有助于减轻云基础设施上的计算和存储资源负载。边缘计算有助于降低数据传输成本和延迟,并缓解基于中心云的架构所面临的可扩展性挑战。边缘计算正成为物联网解决方案不可或缺的一部分,大多数领先的物联网云平台[4, 5]也已将其作为服务内容提供。

2.2 区块链

区块链作为比特币[6]加密货币——一种点对点电子现金系统被引入。区块链是一种分布式账本形式,账本的副本由所有参与者持有;当大多数节点对新状态达成一致时,新的条目将被追加到账本中。一些区块链实现进一步发展,提供了智能合约[7]机制——这些是可在每个区块链节点上执行的程序,如果变更经过大多数节点成功验证并达成共识,将导致区块链的状态变更。

区块链的实现可以是公开且无需许可的,任何新节点都可以加入区块链网络来读取信息并提议新区块。另一种形式的区块链则是私有且需许可的,它限制了区块链网络的成员资格以及提议区块的权限。目前存在多种开源框架[8, 9],可帮助您创建私有且需许可的区块链,使用高级编程语言编写智能合约,并构建区块链应用。

其中一个可能的应用是在[2]中提出的支持区块链的物联网边缘计算。下一节描述了该解决方案的高层架构。

示意图0

2.3 现有架构

在典型的物联网应用中,数据采集由物联网传感器采集的数据被发送到连接的网关。网关设备通常具有长距离连接能力,可将数据发送到远程服务器进行下游处理。

在边缘计算架构中,部分数据处理(如聚合或分析)可以在更靠近网关的位置进行。网关设备可能不具备边缘处理所需的足够资源。在所提出的解决方案中,可以通过租用所需的计算资源来执行边缘处理;区块链可以促进这一机制。

所提出解决方案的组件架构如图1所示。涉及的主要组件有:

2.3.1 区块链网络

这是一个许可的区块链网络。所有节点都设有端点,外部客户端应用程序可通过这些端点提交交易请求。网络会验证传入的交易,并在分布式账本中记录这些交易。

2.3.2 客户端或请求者

网关设备充当请求方,其中,它会创建一个用于处理计算密集型任务(即作业)的交易;处理所需的输入是来自物联网传感器的时间序列数据。

2.3.3 去中心化存储

所需的输入数据文件将可上传至去中心化存储,如星际文件系统(IPFS)[10]。可执行代码和所需的工件也可以上传至此。

2.3.4 资源出借者

任何用户都可以作为资源出借者加入资源出借者。资源出借者将出借其计算资源以执行任务。

2.3.5 工作节点

资源出借者拥有工作节点,计算任务或作业在此实际执行。一旦作业在工作节点上成功执行,资源所有者便将输出作为交易提交到区块链网络。

2.4 用例

所提出的架构可部署于物联网传感器产生大量数据且边缘的处理需求无法由边缘可用资源满足的场景。这可能适用于监控摄像头,其中捕获的视频流需要被处理,以分析某种威胁场景或分析视频内容,并生成视频内容的可搜索的索引存储库 [11]。

2.5 挑战

在实现上述解决方案时可能面临的挑战包括:

  1. 在外部工作者上运行时保护代码和数据隐私
  2. 确保预期代码确实被执行,并且工作节点/资源出借者共享的执行输出未被篡改
  3. 建立适当的奖励系统以激励资源出借者
  4. 打包和分发以确保在沙箱环境中执行。

这些挑战及其可能的解决方案将在后续章节中讨论。

3. 隐私

资源出借者拥有工作节点,用于在给定的输入数据上执行计算任务。边缘分析处理可能从简单的聚合到复杂的机器学习推理不等,后者使用某些机器学习模型并针对给定的作业输入数据预测输出。无论哪种情况,所执行的代码、输入数据以及任何机器学习模型都应受到保护。这项工作 [12] 表明,有可能从训练好的神经网络模型中提取敏感数据,如社会安全号码(SSN)。此外,每个任务的输入数据也可能暴露敏感信息。

利用硬件辅助可信执行环境(TEEs),应有可能缓解上述问题。在过去几年中,硬件供应商一直在积极改进硬件辅助的 TEEs [13, 14, 15]

3.1 可信执行环境

TEE 在主处理器中提供了一个安全区域。代码和数据可以驻留在该区域。即使设备上的系统软件遭到破坏,它也能确保数据隐私和完整性方面的安全。主流的 TEE 包括英特尔软件防护扩展(SGX)[13]、ARM TrustZone 技术[14]和 AMD 内存加密技术。

假设大多数工作节点可能是具有空闲计算资源的台式机和/或笔记本电脑,本文主要关注基于 Intel SGX 的方法。

示意图1

3.1.1 概念信任关系

基于英特尔 SGX 的安全远程计算的 IP 如图2所示。数据所有者无需信任远程计算机的基础设施所有者——即资源出借者,而只需信任远程计算机硬件的制造商(英特尔)。

自从 Intel SGX 的发布以来,它吸引了众多研究人员的关注。研究人员已经开发出许多应用原型,其中一些应用于机器学习领域 [17–20],也有一些在区块链领域提出了应用[21, 22]。此外,还提出了一些基于英特尔 SGX 的开发框架[23–27, 31, 32]

3.1.2 隐私保护

Intel SGX 应用开发者可以使用英特尔提供的软件开发工具包(SDK)开发应用程序。当应用程序在用户空间执行时,会创建一个称为飞地的隔离内存区域。操作系统和其他进程无法访问飞地内的代码和数据(参见图3)。当启动启用 SGX 的应用程序时,它包含两个部分:安全部分和非安全部分,其中安全部分驻留在飞地中。当调用飞地代码内的函数时,它可以访问飞地数据,而飞地数据的访问仅限于该飞地内部的代码;当函数返回后,代码仍保留在受保护内存中。SGX 确保了飞地代码和数据的机密性与完整性。

让我们重新审视需要保护机器学习模型和输入数据隐私的任务场景。这些数据可以使用对称加密密钥进行加密,然后上传到去中心化存储。在远程工作机器上,不可信代码可以下载加密的模型和数据。如果密钥存在于飞地数据中,则在该飞地内运行的代码可以解密模型和任务输入数据。这确保了机器学习模型和任务输入数据的机密性。我们需要建立一个安全通道,以便从外部(可能是区块链节点或专用服务器)将密钥安全地发送到飞地。为此,飞地应进行远程证明,具体将在下一节中描述。

示意图2

4. 结果验证

另一个挑战是确保工作节点实际上正在执行代码并共享由代码生成的相同结果。

远程认证服务可以提供被证明软件的身份以及软件篡改评估 [28]。该过程如下所述。

4.1 远程证明

飞地作者/开发者添加一个自签名证书,也称为飞地签名 – SIGSTRUCT。飞地签名包含的信息可让 Intel SGX 架构检测飞地文件的任何部分是否被篡改。当飞地加载时,CPU 会计算飞地代码和数据的 256 位哈希,称为 MRENCLAVE。该值将与飞地签名 SIGSTRUCT 中的值进行比对。

证明是一种向远程实体展示飞地以正确方式实例化的机制。在我们的案例中,证明将确保远程工作节点正在执行正确的代码。该过程工作如下:

远程方在本例中可以是区块链节点或服务器组件,它向运行在工作节点上的应用程序发送证明挑战。作为回应,远程方会收到来自飞地生成的证明报告(报价)。远程方将此证明报告转发给 Intel 鉴权服务(IAS),由其使用增强型隐私标识(EPID)组进行验证签名方案 [28]。证明结果确认飞地是否已加载所需代码。证明报告还可包含清单或自定义数据,例如飞地生成的临时公钥。远程方可以使用飞地的公钥加密密钥、密钥或凭证,然后与飞地共享。

在飞地内部加载的数据是易失性的,在飞地退出之前,这些数据会通过使用 CPU/飞地特定密封密钥进行加密来实现持久化(参见图4)。

使用共享密钥,飞地代码执行产生的结果被加密,并可通过区块链和去中心化存储进行共享。

证明可确保在飞地中执行的是有效代码;它还能实现远程密钥的共享,该密钥可用于加密/解密输入数据和输出结果。

示意图3

5. 奖励系统

资源出借者应获得支付当有效结果提交并被请求方接受时。请求方很可能会创建多个作业,而资源出借者将选择其中许多作业进行执行。在当前系统中,即使这些交易发生在同一组参与方之间,每个作业都会产生一系列区块链交易。通过使用单向支付通道,这些交易可以被批量处理并在链下执行。

5.1 支付通道

要启动一个支付通道,需要创建安全存款,这需要一笔区块链交易。当双方就结算状态 [30] 达成一致后,需要另一笔区块链交易来释放已存入的资金。中间支付转账不会记录在区块链上。安全存款将保障资源出借者利益,使其能够进入支付通道。对于资源出借者提交的每个作业结果,将从安全存款中释放一笔微支付。该支付不会立即转账,而是将状态变更记录在链下。当双方对当前状态达成一致时,进行支付结算——这可以通过多签协议实现。如果任一方未发起关闭操作,该通道将定时自动结算,并以最后一个有效状态为准。

通过支付通道进行微支付可确保保护资源出借者和请求方双方的利益。智能合约可以强制执行,当资源出借者提交的结果有效(基于签名)时,进行微支付应被释放。资源出借者的最大风险等于单次微支付的成本。

6. 打包与部署

应在远程工作节点上执行的应用程序应在沙箱环境中执行,以确保输出的确定性,且独立于底层操作系统。与原生部署相比,使用 Docker、Kubernetes 等基于容器的环境开销最小 [33]。

尽管已有支持 SGX 的 Docker 镜像可用,但 Docker 对 SGX 的支持尚未完全实现。该工作 [34] 比较了多种容器技术对 SGX 的支持情况。在飞地页面缓存(EPC)、远程证明以及确保降低性能开销方面仍存在挑战。根据 [36],Kubernetes 集群可支持 SGX。微软 Azure 机密计算平台已宣布基于 Kubernetes 的部署 [35]。

7. 结论

基于区块链的物联网边缘计算边缘计算的实现将隐私和完整性视为主要挑战。基于英特尔 SGX 的解决方案似乎在实际实施中能够应对这些挑战。然而,采用基于 SGX 的方法在容器环境中的打包与分发方面,又带来了安全性和性能开销等新挑战。基于代币的奖励系统可以使用单向支付通道来实现。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐