返回资讯中心
外部精选
软件工程
#社区热议

研究揭露每台Mac自2022年起内置未公开的家人关系分类系统

来源标题:Every Mac comes with an (undocumented) family member classifier

安全研究者Dario Pasquini发布分析,指出自macOS 13(2022年)起每台Mac都内置一对守护进程,专门构建关于用户身份、人际关系、通讯对象、行踪与行为的个人知识图谱。该图谱还包含家庭关系分类功能,作者同时提供了可查看自身图谱的工具。

Hacker Newsinfwhispers2026/11/7 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

第八级 技术报告 开篇 由 Bishop(Dario Pasquini)执笔 2026-10-28 Apple 个人知识图谱剖析 自 macOS 13(2022 年)起,每一台 Mac 都自带一对守护进程,它们存在的唯一目的就是构建一张关于你的图谱:你是谁、你认识谁、这些人与你以及彼此之间是什么关系、你如何与他们沟通、你去过哪里、做了什么、什么时候做的。本文中,我们将深入这套系统的运作方式,并提供一个工具,让你得以窥探属于自己的那张图谱。

一个家族式的分叉:e2 上的一匹马同时攻击白方的王、后、车和象。白方的棋子就是这张图谱所描述的家庭;那匹马则是存储,距离每一个棋子都只有一步之遥。白方自己上一步 18.e3 清空了它此刻所在的格子。白方被将军,只有一个合法应手 Kh1;随后那匹马吃掉了后。将军落在接受条款的人头上,而失去的却是别人。

3r1rk1/pp2qppp/8/3p1b2/8/1NQ1P1B1/PP2nPPP/2R2RK1 w - - 1 19

如果我告诉你,自 2022 年起每一台 Mac 都自带一对守护进程,它们存在的唯一目的就是构建一张关于你和你周围之人的图谱:你是谁、你认识谁、这些人与你以及彼此之间是什么关系、你如何与他们沟通、你去过哪里、和谁一起、做了什么、什么时候做的。这张图谱在设备本地构建,交叉引用机器上几乎一切数据:通讯录、日历、照片、信息、邮件、位置、屏幕使用时间,以及一长串行为信号。更重要的是,它以一个可查询的存储形式存在,供 LLM 从中检索(据称如此)。你会信吗?

嗯,事情就是这样,而有趣的是,关于这套机制在你的 Mac 上究竟如何运作,几乎没有任何文档。最接近官方描述的是 man page(man 8 knowledgeconstructiond),而你所能得到的全部内容就是这些:

NAME knowledgeconstructiond – 一个分析设备上的内容以构建通用知识图谱的守护进程。 DESCRIPTION knowledgeconstructiond 分析此设备上的内容,以帮助构建一张代表设备与用户的知识图谱。它与 intelligenceplatformd 协同工作,承担部分繁重的处理任务,以生成该知识图谱。

此前的工作:平心而论,Apple 自己的研究人员确实在 2023 年发表过一篇论文,介绍这种图谱构建背后的技术。但关于它如何被集成进 macOS,几乎只字未提:哪些版本运行它,以及究竟收集和推断了哪些内容的确切清单。而对于下文讨论的“亲属关系”推断,更是一字未提。另外,我们个人是在 2026 年 8 月对 macOS 26 中的 Apple Intelligence 包做安全研究时碰到它的;但在此几个月前,Nic Lydon 也发现了同一个数据库,并写成了《I Built a Personal Knowledge Graph. Apple Had Already Built One on My Laptop.》一文。

这篇博文记录了我们对知识图谱实际行为所做的一些分析工作,以便你(用户)能更好地理解这套机制如何运作,并对图谱中关于你、你的家人和朋友究竟存了些什么有所了解。文中所有内容均采集自 macOS 26(写作时为 26.6.2)。

为此,我们开源了一个本地仪表盘(iKnow),你可以用它读取自己 Mac 上个人知识图谱的内容。

最后,我们稍微跑个题,看看我们最擅长的事:武器化与利用。我们做一个思想实验(适用于任何此类个性化系统),展示如果这样一个知识库落入坏人手中会发生什么,以及一个“隐私单点故障”如何被利用,以你或许从未想过的方式威胁你(当与一个解除了对齐限制的 LLM 结合时)。

这两个守护进程把工作成果存放在 ~/Library/IntelligencePlatform,这是一个由 SQLite 数据库(共 51 个数据库)组成的目录,以明文存储,但位于受 TCC 完全磁盘访问权限保护的区域内。

其中最有趣的当属 graph.db。它是一个三元组存储,使用一套包含 181 个实体类和 278 个谓词的词汇表:每一行都是一个主语、一个谓词和一个宾语。主语是一个实体(一个人、一个应用、一个事件);宾语要么是一个普通值(一个名字、一个账号、一个日期),要么是另一个实体——图谱的边正源于此。谓词才是有意思的部分:它说明了系统认为两者之间存在何种关系。

(我) 这台 Mac 的所有者 9100000000007919 PS500 雇主 CS165 雇佣关系 关系类型 PS45 成员 Halden Labs 一个组织 9100000000013724 STABLE_GRAPH · 同一条边,即它所对应的两行

主语 谓词 relationshipId relationshipPredicate 宾语 9100000000007919 PS500 4412 PS1 CS165 9100000000007919 PS500 4412 PS45 9100000000013724

每一行还带有 confidence、sources、sourceDuplicates 和 timestamp

图谱中的一条边(合成数据):一个人,以及存储认定为其雇主的组织。PS500 是 predicate.json 赋予“雇主”的 id 谓词,而它的取值范围并不是一个组织,而是一个关系类型——因此一条边其实是共享同一个 relationshipId 的两行,一行指明关系的种类,另一行指向另一个实体。下表中的 46 个关系类型类正是为此而存在,这也正是让一条边能够拥有自己的置信度、并可在日后被撤回的原因。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →