这是用户在 2024-6-12 5:53 为 https://security.apple.com/blog/private-cloud-compute/ 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?


私有云计算:云计算中 AI 隐私的新前沿


由苹果安全工程与架构(SEAR)、用户隐私、核心操作系统(Core OS)、服务工程(ASE)和机器学习与人工智能(AIML)撰写


苹果智能是个人智能系统,它为 iPhone、iPad 和 Mac 带来了强大的生成式模型。对于需要使用更大的基础模型对复杂数据进行推理的高级功能,我们创建了私人计算云(PCC),这是一个开创性的云端智能系统,专门设计用于私密的人工智能处理。 有史以来第一次,私有云计算将苹果设备行业领先的安全性和隐私性扩展到云端,确保发送到 PCC 的个人用户数据不会被除用户之外的任何人访问——甚至不是苹果公司。采用定制的苹果芯片和为隐私而设计的加固操作系统构建,我们相信 PCC 是迄今为止在规模上部署的最先进的云 AI 计算安全架构。







苹果长期以来一直倡导设备端处理作为用户数据安全和隐私的基础。仅存在于用户设备上的数据在定义上就是分散的,不会受到任何集中式攻击点的威胁。当苹果负责云中的用户数据时,我们使用最先进的安全措施来保护它——对于最敏感的数据,我们认为端到端加密是我们最有力的防御手段。 对于云服务,如果端到端加密不适用,我们力求以临时方式处理用户数据或使用不相关的随机化标识符来模糊用户的身份。


云中的安全隐私人工智能处理提出了一个艰巨的新挑战。数据中心中强大的 AI 硬件可以使用大型、复杂的机器学习模型来满足用户的请求——但它需要对用户的请求和相关的个人数据进行解密访问。这排除了使用端到端加密的可能性,因此迄今为止,云 AI 应用程序一直采用传统的云安全方法。这些方法存在几个关键挑战:


  • 云人工智能的安全和隐私保障难以验证和执行。如果一家云人工智能服务声称不会记录某些用户数据,通常安全研究人员无法验证这一承诺——而且服务提供商往往也无法持久地执行它。例如,新版本的 AI 服务可能会引入额外的例行日志记录,无意中记录敏感的用户数据,而研究人员却无法检测到这一点。 同样地,在故障排除会话期间,终止 TLS 的外围负载均衡器可能会记录数千个用户请求的日志。

  • 在云端提供运行时透明度给 AI 服务是困难的。云端的 AI 服务通常是黑盒性质的:供应商通常不会指定他们用于运行服务的软件堆栈的详细信息,而这些细节往往被视为专有技术。 即使云人工智能服务仅依赖于安全研究人员可检查的开源软件,用户设备(或浏览器)也没有广泛部署的方法来确认其连接的服务的运行版本是否为声称的未修改版本,或者检测在服务上运行的软件是否已更改。

  • 云人工智能环境的特权访问强限制执行具有挑战性。云人工智能服务的运行复杂且规模化成本高昂,其运行时性能和其他运营指标不断受到云服务提供商站点可靠性工程师和其他管理人员的监控和调查。 在服务中断和其他严重事件期间,这些管理员通常可以使用高度特权访问服务,例如通过 SSH 和等效远程 shell 接口。虽然对这些特权、紧急接口的访问控制可能设计良好,但在它们处于活动状态时,很难对它们施加可执行的限制。 例如,在停机期间尝试从实时服务器备份数据的服务管理员可能会在过程中无意地复制敏感的用户数据。更恶劣的是,勒索软件操作员等犯罪分子通常会努力破坏服务管理员的凭据,以利用特权访问接口并窃取用户数据。


当使用苹果设备(如 iPhone 和 Mac)进行本地计算时,安全性和隐私优势是显而易见的:用户控制自己的设备,研究人员可以检查硬件和软件,运行时的透明性通过 Secure Boot 得到密码学保证,而苹果没有特权访问权限(具体来说,数据保护文件加密系统密码学地防止苹果禁用或猜测给定 iPhone 的密码)。


然而,为了处理更复杂的要求,苹果智能需要能够从云端的更大、更复杂的模型中寻求帮助。为了使这些云端请求达到我们用户对我们的设备所期望的安全和隐私保证,传统的云服务安全模型并不是可行的起点。相反,我们需要首次将我们行业领先的设备安全模型带到云端。


本文的其余部分是对私有云计算的初步技术概述,在私有云计算进入测试版后,我们将深入探讨。我们知道研究人员会有很多详细的问题,我们期待在我们的后续文章中回答更多问题。


设计私有云计算


我们开始构建私有云计算时设定了以下核心要求:


  1. 个人用户数据的无状态计算。私有云计算必须仅使用其接收到的个人用户数据来满足用户的请求。这些数据永远不能被除用户之外的任何人访问,甚至不能被苹果员工访问,即使在处理过程中也不行。而且,在响应返回给用户之后,这些数据也不能通过日志记录或调试等方式被保留下来。 换句话说,我们想要一种强有力的无状态数据处理形式,其中个人数据在 PCC 系统中不留任何痕迹。

  2. 可强制执行的保障。当安全与隐私保障完全可以通过技术手段强制执行时,这些保障是最强的,这意味着必须能够约束和分析所有对整个私有云计算系统保障至关重要的组件。以我们之前提到的例子为例,很难在调试会话期间推断出 TLS 终止负载均衡器可能会如何处理用户数据。 因此,PCC 的核心安全和隐私保障不能依赖于这样的外部组件。同样地,收集服务器指标和错误日志等操作要求必须通过不会削弱隐私保护机制的方式来支持。

  3. 无特权运行时访问权限。私有云计算不得包含能够绕过 PCC 隐私保证的特权接口,即使是在解决停机或其他严重事件的情况下也不行。这也意味着 PCC 不得支持在运行时扩大特权访问范围的方式,例如通过加载其他软件。

  4. 不可针对性攻击性。攻击者不应能够尝试破坏属于特定、目标私有云计算用户的个人数据,而无需尝试对整个 PCC 系统进行广泛破坏。即使对于非常复杂的攻击者,这必须保持正确,他们可以尝试对供应链中的 PCC 节点进行物理攻击,或试图获得恶意访问 PCC 数据中心。 换句话说,有限制的 PCC 妥协必须不能允许攻击者将特定用户的请求引导到被攻陷的节点;针对用户应该需要广泛的攻击,这很可能会被检测到。 为了更直观地理解这一点,可以将其与传统的云服务设计进行对比,在这种设计中,每个应用服务器都被配置了整个应用程序数据库的数据库凭据,因此一旦某个应用服务器被攻破,攻击者就可以访问任何用户的敏感数据,即使该用户没有与该应用服务器有任何活跃会话。

  5. 可验证的透明度。安全研究人员需要能够高度自信地验证我们的私有云计算隐私和安全保证与公开承诺相匹配。我们已经有一个早期要求,即我们的保证必须具有可执行性。假设安全研究人员有足够的系统访问权限,他们应该能够验证这些保证。 但最后一个要求——可验证的透明度,更进一步,消除了假设:安全研究人员必须能够验证私有云计算的安全和隐私保证,并且他们必须能够验证在 PCC 生产环境中运行的软件与他们在验证保证时检查的软件相同。


这是一组非常特殊的要求,我们认为它代表了对传统云服务安全模型的世代飞跃。


介绍私有云计算节点


私有云计算信任根基于我们的计算节点:定制的服务器硬件,将苹果硅芯片的强大和安全性带入数据中心,采用与 iPhone 相同的硬件安全技术,包括 Secure Enclave 和安全启动。我们将这种硬件与新的操作系统配对:一种经过加固的 iOS 和 macOS 基础子集,专门定制以支持大型语言模型(LLM)推理工作负载,同时呈现极窄的攻击面。 这使我们能够利用 iOS 安全技术,如代码签名和沙箱隔离。


在这个基础上,我们构建了一套以隐私为中心的定制云扩展集。我们排除了传统上对数据中心管理至关重要的组件,如远程 shell 和系统内省及可观测性工具。我们将这些通用软件组件替换为专门构建的组件,旨在确定性提供给 SRE 人员一小套受限的操作指标。 最后,我们使用 Swift on Server 构建了一个新的机器学习堆栈,专门用于托管我们的基于云的基础模型。


让我们再次审视我们的核心私有云计算要求以及我们为实现这些目标而构建的功能。


无状态计算和可强制执行的保证


对于端到端加密的服务,如 iMessage,服务运营商无法访问通过系统传输的数据。这类设计能够保证隐私的关键原因之一是它们防止服务对用户数据执行计算操作。由于私有云计算需要能够访问用户请求中的数据以允许大型基础模型完成它,因此完全的端到端加密不是一种可行的选择。 相反,PCC 计算节点必须具有技术强制执行机制,以确保在处理过程中用户数据的隐私性,并且在其任务周期完成后必须无法保留用户数据。


我们设计了私有云计算,以保证对处理用户数据的方式做出几个承诺:


  • 用户的设备向 PCC 发送数据,仅用于满足用户的推理请求的唯一和排他性目的。PCC 仅使用这些数据来执行用户请求的操作。

  • 用户数据仅在处理请求的 PCC 节点上保留,直到响应返回为止。PCC 在满足请求后会删除用户的数据,并且在响应返回后不会以任何形式保留用户的数据。

  • 用户数据从未向苹果提供 - 即使对生产服务或硬件具有管理访问权限的工作人员也无法获取。


当苹果智能需要调用私有云计算时,它会构建一个请求——由提示、所需的模型和推理参数组成——作为云模型的输入。然后,用户设备上的 PCC 客户端直接使用公钥加密这个请求,这些公钥是它首先确认有效的并且经过密码学认证的 PCC 节点。 这为从用户的设备到经过验证的 PCC 节点的端到端加密提供了保障,确保请求在传输过程中不会被任何外部实体访问。支持数据中心服务(如负载均衡器和隐私网关)运行在该信任边界之外,并且没有解密用户请求所需的密钥,从而有助于我们可执行的保证。


接下来,我们必须保护 PCC 节点的完整性,防止对 PCC 用于解密用户请求的密钥进行任何篡改。该系统使用安全启动和代码签名来强制执行保证,确保只有经过授权且经过密码学测量的代码才能在该节点上执行。所有能够在节点上运行的代码都必须属于由苹果签署、批准特定 PCC 节点并在安全隔离区加载的信任缓存的一部分,以确保在运行时无法更改或修改。 这也确保了无法创建即时编译映射,防止在运行时编译或注入新代码。此外,所有代码和模型资产都使用相同的完整性保护机制,该机制支持已签名的系统卷。最后,安全隔区提供了可执行的保证,即用于解密请求的密钥不能被复制或提取。


私有云计算软件栈的设计旨在确保用户数据不会在信任边界之外泄露或一旦请求完成就保留下来,即使在实现错误的情况下也是如此。安全隔区会在每次重启时随机化数据卷的加密密钥,并且不会持久保存这些随机密钥,从而确保写入数据卷的数据无法跨重启保留。 换句话说,每次 PCC 节点的安全隔区处理器重新启动时,数据卷都会被密码学擦除,这是有强制执行保证的。在 PCC 节点上的推断过程会在请求完成后删除与请求相关的数据,并且用于处理用户数据的虚拟地址空间会定期回收以限制可能意外保留在内存中的任何数据的影响。


最后,为了使我们的可执行保证有意义,我们还需要保护免受可能绕过这些保证的利用。指针认证码和沙箱等技术可以抵抗这种利用,限制攻击者在 PCC 节点内的水平移动。推断控制和调度层使用 Swift 编写,确保内存安全,并使用单独的地址空间来隔离请求的初始处理。 这种内存安全与最小权限原则的组合消除了对推理栈本身的整个攻击类别,并限制了成功攻击可以获得的控制和能力级别。


无特权运行时访问权限


我们设计了私有云计算,以确保特权访问不会允许任何人绕过我们的无状态计算保证。


首先,我们故意不在 PCC 节点上包含远程 shell 或交互式调试机制。我们的代码签名机制防止此类机制加载附加代码,但这种开放式的访问会为破坏系统的安全或隐私提供广泛的攻击面。除了简单地不包含 shell(无论是远程还是其他方式)之外,PCC 节点无法启用开发人员模式,并且不包含调试工作流所需的工具。


接下来,我们构建了系统的可观察性和管理工具,并采取了隐私保护措施,旨在防止用户数据被暴露。例如,系统甚至没有包含通用的日志机制。相反,只有预先指定的、结构化的和经过审计的日志和指标才能离开节点,多个独立的审查层有助于防止用户数据通过这些机制意外地被曝光。 使用传统的云人工智能服务,这些机制可能会允许拥有特权访问权限的人观察或收集用户数据。


这些技术共同提供了可强制执行的保证,即只有特定指定的代码才能访问用户数据,并且用户数据在系统管理期间不会泄露到 PCC 节点之外。

 非针对性


我们在私有云计算方面的威胁模型包括具有物理访问计算节点和高度复杂性的攻击者——也就是说,攻击者拥有资源和专业知识来破坏系统的某些硬件安全属性,并可能提取正在被计算节点积极处理的数据。


我们通过两种方式来防范这种类型的攻击:


  1. 我们通过为 PCC 硬件提供加固供应链来补充 Apple 硅的内置保护措施,使得大规模执行硬件攻击既费用高昂又容易被发现。

  2. 我们通过确保小规模攻击不能被用来针对特定用户的资料来限制其影响。


私有云计算硬件安全始于制造阶段,我们会在每台服务器密封之前对其组件进行盘点和高质量成像,同时激活其防篡改开关。当服务器到达数据中心后,我们会进行广泛的重新验证,在允许服务器为私有云计算节点提供服务之前。 该过程涉及多个苹果团队,他们交叉检查来自独立来源的数据,并且整个过程由与苹果无关的第三方观察者进一步监控。最后,为每个 PCC 节点的根安全隔离 UID 颁发证书。如果用户的设备无法验证其证书,则不会向任何 PCC 节点发送数据。


这些流程广泛地保护硬件免受损害。为了防范更小、更复杂的攻击,这些攻击可能绕过检测,私有云计算采用了一种我们称之为目标扩散的方法,以确保请求不能根据用户或其内容路由到特定的节点。


目标扩散从请求元数据开始,该元数据排除了有关源设备或用户的任何个人身份信息,仅包含有限的相关上下文数据,这些数据是路由到适当模型的必要条件。这是用户请求中唯一可供负载平衡器和其他运行在 PCC 信任边界之外的数据中心组件使用的部分。 元数据还包括基于 RSA 盲签名的一次性凭证,用于授权有效请求而不将其与特定用户绑定。此外,PCC 请求通过第三方操作的 OHTTP 中继进行传递,该中继在请求到达 PCC 基础设施之前隐藏设备的源 IP 地址。这防止攻击者使用 IP 地址来识别请求或将其与个人关联。 这也意味着攻击者必须同时攻破第三方中继和我们负载均衡器才能根据源 IP 地址来定向流量。


用户设备仅对 PCC 节点的一部分进行请求加密,而不是整个 PCC 服务。当被用户设备询问时,负载均衡器返回最有可能准备好处理用户的推理请求的一组 PCC 节点 - 然而,由于负载均衡器没有关于它所选择的节点的用户或设备的识别信息,因此无法为特定用户偏置该集合。 通过这种方式限制能够解密每个请求的 PCC 节点,我们确保即使单个节点被攻破,它也无法解密超过一小部分传入的请求。最后,负载均衡器选择 PCC 节点的过程是可统计审计的,以防范一种高度复杂的攻击,其中攻击者不仅破坏了 PCC 节点,还获得了对 PCC 负载均衡器的完全控制。

 可验证的透明度


我们认为允许安全研究人员验证私有云计算从端到端的完整安全和隐私保证是系统持续获得公众信任的关键要求。传统云服务不会向研究人员提供其完整的生产软件镜像——即使他们提供了,也没有通用的机制来允许研究人员验证这些软件镜像是否与实际运行在生产环境中的内容相匹配。 (一些专门的机制存在,如 Intel SGX 和 AWS Nitro 认证。))


当我们推出私有云计算时,我们将采取非常措施,使 PCC 的每个生产构建的软件镜像都公开可用以供安全研究使用。这个承诺也是一个可执行的保证:用户的设备只会愿意向能够密码学证明运行公开列出的软件的 PCC 节点发送数据。 我们希望确保安全与隐私研究人员能够像检查苹果设备一样,对私有云计算软件进行检查、验证其功能,并帮助识别问题。


我们对可验证透明的承诺包括:


  1. 在不可篡改且密码学防篡改透明日志中发布所有在 PCC 上运行的代码测量结果。

  2. 公开日志和相关二进制软件镜像以供隐私和安全性专家检查和验证。

  3. 发布和维护一组官方工具,供研究人员分析 PCC 节点软件使用。

  4. 通过苹果安全赏金计划奖励重要的研究发现。


每个生产私有云计算软件镜像都将被发布以供独立二进制检查 - 包括操作系统、应用程序和所有相关的可执行文件,研究人员可以验证这些内容与透明度日志中的测量值是否一致。软件将在包含在日志中后的 90 天内或相关软件更新可用后发布,以较早者为准。 一旦发布版本被签署到日志中,就像 iMessage 联系人密钥验证机制使用的基于日志映射的数据结构一样,如果没有检测到,就无法将其删除。


如我们所提到的,用户设备将确保它们仅与运行经过授权和可验证软件映像的 PCC 节点进行通信。具体来说,用户的设备只会将其请求负载密钥包装到那些 PCC 节点的公钥中,这些节点的证明测量值与公共透明日志中的软件发布相匹配。同样,防止加载未经授权软件的严格代码签名技术也确保了 PCC 节点上的所有代码都包含在证明中。


以这种方式使私有云计算软件记录和可检查是我们致力于在平台上支持独立研究的强烈体现。但我们希望确保研究人员能够快速上手、验证我们的 PCC 隐私声明并寻找问题,因此我们采取了三个具体的步骤:


  • 我们将发布一个 PCC 虚拟研究环境:一组工具和映像,用于在配备 Apple 硅芯片的 Mac 上模拟 PCC 节点,并且可以启动经过最小修改以实现成功虚拟化的 PCC 软件版本。

  • 虽然我们正在发布每个生产版 PCC 构建的可执行映像,但为了进一步支持研究,我们将定期发布安全关键 PCC 源代码的子集。

  • 在苹果平台的首次尝试中,PCC 图像将包含 sepOS 固件和 iBoot 引导加载程序的明文,这使得研究人员比以往更容易研究这些关键组件。


苹果安全赏金计划将对整个私有云计算软件堆栈的研究发现提供奖励——特别是对于任何削弱我们隐私声明的问题,将有特别显著的支付。

 敬请期待


私有云计算延续了苹果对用户隐私的坚定承诺。通过先进的技术来满足我们对无状态计算、可执行保证、无特权访问、不可针对性以及可验证透明度的要求,我们相信私有云计算是世界上领先的大规模云人工智能计算安全架构。


我们期待分享更多关于私有云计算(PCC)的技术细节,包括每个核心要求背后的实现和行为。我们特别兴奋的是很快就能邀请安全研究人员首次了解私有云计算软件和我们 PCC 虚拟研究环境。