苹果生态的机器学习和同态加密

news2024/10/30 17:08:47

1. 引言

Apple认为隐私是一项基本人权。其保护用户隐私的工作遵循一系列隐私原则,其中一项原则是优先使用设备上的处理。通过在用户设备上本地执行计算,有助于最大限度地减少与 Apple 或其他实体共享的数据量。当然,用户可以请求由机器学习 (ML) 提供支持的设备体验,这些体验可以通过查找服务器上托管的全局知识来丰富。为了在提供这些体验的同时坚守Apple对隐私的承诺,Apple实施了多种技术,以帮助确保这些服务器查找是私密的、高效的和可扩展的。

图1:同态加密下的同态加法

用于实现这一目标的关键技术之一是同态加密 (homomorphic encryption,HE),这是一种能够对加密数据进行计算的加密形式(见上图)。HE 的设计方式是,客户端设备在将查询发送到服务器之前对其进行加密,服务器对加密查询进行操作并生成加密响应,然后客户端对其进行解密。服务器不会解密原始请求,甚至无法访问解密密钥,因此 HE 旨在在整个过程中保持客户端查询的私密性。

Apple将 HE 与其他隐私保护技术结合使用,以实现各种功能,包括私人数据库查找和机器学习。还使用了许多优化和技术来平衡 HE 的计算开销与大规模生产应用程序的延迟和效率需求。

本文将分享如何将 HE 与私人信息检索 (PIR) 和私人最近邻搜索 (PNNS) 等技术结合使用的概述,并详细介绍如何在生产中结合这些技术和其他隐私保护技术来支持增强型照片视觉搜索,同时保护用户隐私。

将 HE 引入 Apple 生态系统提供了隐私保护,能够通过私人服务器查询丰富设备上的体验,并且为了让开发者社区更容易在自己的应用程序中采用 HE,开源了一个 HE 库:

  • https://github.com/apple/swift-homomorphic-encryption
    • 更多详情,参考:2024年7月30日博客 Announcing Swift Homomorphic Encryption

2. 苹果对同态加密的实现

苹果对 HE 的实现需要允许 ML 工作流中常见的操作高效地大规模运行,同时实现极高的安全性。当前已经实现了Brakerski - Fan-Vercauteren (BFV) HE 方案:【BFV 基于环学习误差 (ring learning with errors,RLWE) 硬度问题,具有量子抗性。】

  • Zvika Brakerski 2012年论文《Fully Homomorphic Encryption without Modulus Switching from Classical GapSVP》
  • Junfeng Fan 和 Frederik Vercauteren 2012年论文《Somewhat Practical Fully Homomorphic Encryption 》

该方案支持非常适合计算的同态操作(如点积或余弦相似度)在 ML 工作流中常见的嵌入向量上。并使用可实现后量子 128 位安全性的 BFV 参数,这意味着它们可以针对经典和潜在的未来量子攻击提供强大的安全性(详细解释见2024年2月21日博客iMessage with PQ3: The new state of the art in quantum-secure messaging at scale)。

HE 在客户端需要在服务器上查找信息同时保持查找计算加密的环境中表现出色。本文将:

  • 首先展示 HE 如何单独实现隐私保护服务器查找精确匹配和隐私信息检索 (PIR),
  • 然后描述如何在将近似匹配与隐私最近邻搜索 (PNNS) 相结合时使用 ML 为更复杂的应用程序提供服务。

3. 私人信息检索(PIR)

前序博客有:

  • Private Information Retrieval私有信息检索
  • Piano-PIR:Extremely Simple, Single-Server PIR with Sublinear Server Computation

许多用例需要设备从服务器数据库私下检索与查询完全匹配的内容,如检索适当的企业徽标和信息以与收到的电子邮件一起显示(该功能将于今年晚些时候在 iOS 18 的邮件应用程序中推出)、提供来电显示信息或检查 URL 是否被归类为成人内容(就像父母为孩子的 iPhone 或 iPad设置内容限制时所做的那样。为了保护隐私,应在不泄露查询本身的情况下检索相关信息,如在这些情况下,向用户发送电子邮件的企业、呼叫用户的电话号码或正在检查的 URL。

  • 使用私人信息检索的功能——来电显示:
    在这里插入图片描述
  • 使用私人信息检索的功能——邮件:
    在这里插入图片描述
  • 使用私人信息检索的功能——网站过滤:
    在这里插入图片描述

对于这些工作流程,使用私人信息检索 (PIR),这是一种私人关键字值数据库查找形式。在此过程中,客户端拥有一个私人关键字,并试图从服务器检索相关值,而无需下载整个数据库。为了保持关键字的私密性,客户端在将其发送到服务器之前会对其进行加密。服务器在传入的密文和其数据库之间执行 HE 计算,并将生成的加密值发送回请求设备,该设备对其进行解密以了解与关键字相关的值。在整个过程中,服务器不会了解客户端的私人关键字或检索到的结果,因为它对客户端的密文进行操作。如,在 Web 内容过滤的情况下,URL 被加密并发送到服务器。服务器使用其数据库中的 URL 对密文执行加密计算,其输出也是密文。此加密结果被发送到设备,在设备上解密以确定是否应根据家长限制控制阻止该网站。

4. 私人最近邻搜索(PNNS)

对于需要近似匹配的用例,使用 Apple 的私有最近邻搜索 (private nearest neighbor search,PNNS),这是一种高效的私有数据库检索过程,用于对向量嵌入进行近似匹配,如2024年10月论文《Scalable Private Search with Wally》中所述。使用 PNNS,客户端加密向量嵌入并将生成的密文作为查询发送到服务器。服务器执行 HE 计算以进行最近邻搜索,并将生成的加密值发送回请求设备,请求设备解密以了解其查询嵌入的最近邻居。与 PIR 类似,在整个过程中,服务器不会了解客户端的私有嵌入或检索到的结果,因为它对客户端的密文进行操作。

通过将 PIR 和 PNNS 等技术与 HE 和其他技术相结合,能够构建利用大型服务器端数据库信息的设备体验,同时保护用户隐私。

5. 在生产中实施这些技术

增强型照片视觉搜索功能允许用户在其照片库中搜索特定位置,如地标和兴趣点,这是通过将 ML 与 HE 和私人服务器查找相结合而实现的实用功能的典型示例。使用 PNNS,用户的设备可以私下查询 Apple 维护的热门地标和兴趣点的全球索引,以查找其照片库中描绘的地点的近似匹配。用户可以在其设备上使用以下方式配置此功能:设置 → 照片 → 增强型视觉搜索。
图3 使用私人最近邻搜索对照片进行增强视觉搜索
该过程从设备上的 ML 模型开始,该模型分析给定的照片以确定是否存在可能包含地标的“感兴趣区域”(region of interest,ROI)。如果模型在“地标”域中检测到 ROI,则为该图像区域计算矢量嵌入。嵌入的尺寸和精度会影响发送到服务器的加密请求的大小、HE 计算需求和响应大小,因此为了满足大规模生产服务的延迟和成本要求,嵌入在加密之前被量化为 8 位精度。

客户端将向其发送请求的服务器数据库被划分为嵌入集群的不连贯的子部分或分片。这有助于减少计算开销并提高查询效率,因为服务器可以将 HE 计算集中在数据库的相关部分上。用户设备上有一个预先计算的集群码本,其中包含集群分片的质心。这使客户端能够在本地运行相似性搜索以识别嵌入的最近分片,该分片将添加到加密查询并发送到服务器。

识别与查询相关的数据库分片可能会泄露有关查询本身的敏感信息,因此使用差分隐私 (differential privacy,DP) 和 iCloud Private Relay作为匿名网络。使用 DP,客户端会在发出真实查询的同时发出虚假查询,因此服务器无法分辨哪些是真实的。查询也会通过匿名网络路由,以确保服务器无法将多个请求链接到同一个客户端。为了运行 PNNS 进行增强视觉搜索,Apple系统确保每个用户的照片库都有强大的隐私参数,即 ( ε , δ ) (ε,δ) (ε,δ)-DP,其中 ε = 0.8 ε=0.8 ε=0.8 δ = 1 0 − 6 δ =10^{-6} δ=106。更多详情参考2024年10月论文《Scalable Private Search with Wally》。

处理这些查询的服务器群利用了 Apple 现有的 ML 基础架构,包括以倒排索引表示的全局地标图像嵌入的矢量数据库。服务器根据客户端查询中的索引识别相关分片,并使用 HE 计算此加密空间中的嵌入相似度。然后,将候选地标的加密分数和一组相应的元数据(如地标名称)返回给客户端。

为了优化服务器-客户端通信的效率,所有相似度分数都合并为一个指定响应大小的密文。

客户端解密对其 PNNS 查询的回复,该回复可能包含多个候选地标。然后,专门的轻量级设备重排模型使用高级多模态特征描述符预测最佳候选者,这些描述符包括视觉相似性得分、本地存储的地理信号、受欢迎程度以及地标的索引覆盖率(以消除候选者权重过高的影响)。当模型识别出匹配项后,照片的本地元数据将使用地标标签进行更新,用户在设备上搜索地标名称时可以轻松找到照片。

6. 结论

Apple 正在使用 HE 来履行其保护用户隐私的承诺,同时构建丰富的设备体验,其中包含从服务器数据库私下查找的信息。通过结合使用 PIR 和 PNNS 等隐私保护技术、设备上和服务器端 ML 模型以及其他隐私保护技术来实现 HE,能够提供增强视觉搜索等功能,而不会向服务器透露有关用户设备上内容和活动的任何信息。将 HE 引入 Apple 生态系统对于实现这一点至关重要,并且还可以帮助提供宝贵的全球知识来为设备上的 ML 模型提供信息,同时保护用户隐私。借助最近开源的swift-homomorphic-encryption,开发人员现在可以同样地构建利用服务器端数据同时保护用户隐私的设备体验。

参考资料

[1] 苹果机器学习研究中心 2024年10月24日博客 Combining Machine Learning and Homomorphic Encryption in the Apple Ecosystem

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

甲骨文云免费20G对象存储挂载到VPS

准备条件 1.一个获取到免费vps的甲骨文账号Cloud Infrastructure | Oracle 2.一台需要挂载的VPS跳转中 - 有云短链接 3.用到的开源项目https://github.com/s3fs-fuse/s3fs-fuse 一、甲骨文账号端操作 1.1获取存储桶名称和名称空间 进入甲骨文账号,依次如图打开-存储-存储桶…

开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的

1. Mini-Omni2 是什么? Mini-Omni2 是一个开源的多模态语言模型,旨在模拟 GPT-4o 的视觉、语音和文本处理能力。它能够理解和生成视觉、听觉和文本内容,并支持实时的语音输出和灵活的双工交互。 Mini-Omni2 由清华大学和 Inspirai 的研究人…

【C++】string 类深度解析:探秘字符串操作的核心

快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 目录 💯前言 💯为什么要学习 string 类 (一)简化操作 (二)确保安全 (三…

卷积神经网络实验三:模型优化(1)

作者有话说: 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试,虽然接触深度学习有一年了,但是对于模型的优化仅仅是局限于理论上。通过这一次的实验,我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问…

clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群

前提条件:先了解集群搭建流程是什么样,需要改哪些配置,有哪些环境,这个文章目的是简化部署。 clickhouse运维篇(一):docker-compose 快速部署clickhouse集群 clickhouse运维篇(二&am…

嵌入式浏览器 -- Chromium VS Firefox

嵌入式浏览器概念 嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒…

CSP-J2024入门级T3:小木棍

题目链接 CSP-J2024T3:小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数,满足如下条件: 拼出这个数恰好使用

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程 Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程前言 OpenCV概述核心功能优势特点应用领域安装与使用 OpenCV_contrib概述核心功能具体模块 安装与使用一、准备工作二、下载OpenCV和OpenCV_contrib三、编译和安装OpenCV四、…

shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘

查找美国安全局漏洞 nww.nsa.gov(美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行,可以使用host参数,得到域名再去…

nrm的使用

在安装nrm之前,要先完成node.js的安装。 1、nrm的介绍 ‌nrm(npm registry manager)是一个npm源管理器,允许用户在不同npm源之间快速切换。 关于npm和nvm的介绍,详见文章nvm的使用-CSDN博客。 解释:比如…

图片懒加载(自定义指令)

----------------------------------------------------------- 图片懒加载自定义指令使用mock模拟随机图片列表组件如下(主要内容):配置自定义指令 图片懒加载 实现思路 使用自定义指令实现通用图片懒加载(在图片到达视口内时再…

socket编程---UDP

目录 一、socket 二、socket接口 1.流程原理 2.代码 前言 提示:这里可以添加本文要记录的大概内容: socket编程又称套接字编程,指进行网络通信程序的编写 提示:以下是本篇文章正文内容,下面案例可供参考 一、soc…

R语言机器学习算法实战系列(十四): CatBoost分类算法+SHAP值 (categorical data gradient boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍CatBoost的原理CatBoost的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割设置数据对象调节参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC Curv…

创建ODBC数据源SQLConfigDataSource函数的用法

网络上没有这个函数能实际落地的用法说明&#xff0c;我实践后整理一下&#xff1a; 1.头文件与额外依赖库&#xff1a; #include <odbcinst.h> #pragma comment(lib, "legacy_stdio_definitions.lib") 2.调用函数&#xff1a; if (!SQLConfigDataSourceW(…

HCIP-HarmonyOS Application Developer V1.0 笔记(一)

HarmonyOS的系统特性 硬件互助&#xff0c;资源共享;一次开发&#xff0c;多端部署;统一OS&#xff0c;弹性部署。 分布式软总线&#xff1a;分布式任务调度、分布式数据管理、分布式硬件虚拟化的基座 18N的独立设备 1个手机&#xff0c;8种设备&#xff08;车机&#xff0c…

upload-labs靶场Pass-21

upload-labs靶场Pass-21 本关上传方法众多&#xff0c;但是应该考察的是数组后缀绕过&#xff0c;所以我的上传围绕此展开 1.分析源码 $is_upload false; // 初始化上传状态为false $msg null; // 初始化消息变量为null// 检查是否有文件上传 if(!empty($_FILES[upload_fi…

【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译

最近学习sylar项目&#xff0c;编译项目时遇到链接库不匹配的问题&#xff0c;记录下自己解决问题过程&#xff0c;虽然过程很艰难&#xff0c;但还是解决了&#xff0c;以下内容供大家参考&#xff01; undefined reference to 问题分析 项目编译报错 /usr/bin/ld: ../lib/lib…

网络服务ssh

Linux 网络基础 一、知识回顾 网络地址&#xff1a;互联网协议地址&#xff08;IP地址&#xff09;为互联网上每一个网络或主机分配一个逻辑地址&#xff0c;IP地址工作在网络层。 ​ IP的分类&#xff1a;IPV4 IPV6 物理地址&#xff1a;物理地址&#xff08;MAC地址&…

Git获取本地仓库和常用指令

一、获取本地仓库 1&#xff09;在电脑的任意位置创建一个空目录&#xff08;例如test01&#xff09;作为我们的本地Git仓库 2&#xff09;进入这个目录中&#xff0c;点击右键打开Git bash窗口 3&#xff09;执行命令git init&#xff08;初始化当前目录为一个git仓库&…

解决报错:JDK版本不正确

加载maven过程中&#xff0c;控制台报错&#xff1a; Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.…