Fonctionnement des daemons

Depuis macOS 26 (version 26.6.2 au moment de l’analyse), deux processus système – knowledgeconstructiond et son compagnon – s’exécutent en arrière‑plan. Leurs fichiers résident dans ~/Library/IntelligencePlatform, un répertoire protégé par le contrôle d’accès complet du disque (TCC Full Disk Access). Le répertoire contient cinquante‑et‑une bases SQLite en texte clair, dont la plus critique est graph.db. Chaque daemon lit l’ensemble des sources autorisées du système (Contacts, Calendrier, Photos, Messages, Mail, localisation, etc.) et injecte les données dans ce magasin.

Structure du graphe de connaissances

Le fichier graph.db est un triple store : chaque ligne représente un sujet, un prédicat et un objet. Le vocabulaire compte 181 classes d’entités (personnes, applications, événements…) et 278 prédicats décrivant les relations (par ex. isParentOf, attendedEvent). Les objets peuvent être des valeurs simples (nom, date) ou d’autres entités, créant ainsi les arêtes du graphe. En plus du triple store, des tables annexes conservent les logs de communication (qui, quand, via quelle application, direction), les déplacements, les signaux matériels (Wi‑Fi, Bluetooth, charge, lumière ambiante) et un flux nommé ContextualUnderstanding.PhysicalSocial qui répertorie les personnes détectées autour de l’utilisateur avec des intervalles temporels.

Mécanismes d’inférence et modèles

La majorité des triples provient d’une copie directe (nom tiré de Contacts, participant d’un événement du Calendrier). Les relations plus complexes sont générées par des modèles embarqués. Deux classificateurs XGBoost, empaquetés sous forme de modèles CoreML (EntityTagging_Family.mlmodelc et EntityTagging_FamilyAndFriends.mlmodelc), évaluent 144 caractéristiques comportementales – par ex. surnoms communs, adresse partagée, fréquence des messages, co‑apparition dans les photos – pour attribuer une probabilité de lien de parenté (valeur entre 0 et 1). Les scores sont stockés dans entityTagging.db, une table distincte contenant une ligne par personne et dix‑sept colonnes de relations (famille, parent, enfant, collègue, ami, etc.). Un autre ensemble de modèles d’embedding compare les empreintes de visage et les métadonnées afin de déterminer si deux enregistrements correspondent à la même personne. Enfin, le LLM on‑device d’Apple analyse le contenu des messages pour enrichir les visages détectés avec un nom et une relation, à condition que le bundle Apple Intelligence soit activé. Chaque entrée du graphe possède ainsi un champ de confiance, exprimé comme une probabilité décimale.

Risques de sécurité et exploitation

Le graphe est stocké en texte clair ; toute compromission du disque ou une élévation de privilèges permettant d’obtenir le droit Full Disk Access donne un accès direct à l’ensemble des relations personnelles de l’utilisateur. Le fait que les données soient centralisées crée un point unique de défaillance : un attaquant disposant du fichier graph.db peut reconstituer les réseaux sociaux, les habitudes de déplacement et les liens familiaux, puis les injecter dans un LLM externe pour générer des attaques de social engineering très ciblées. Le projet open‑source iKnow expose une interface de lecture du graphe, démontrant la facilité avec laquelle un script malveillant pourrait extraire ces informations. Aucun mécanisme de chiffrement au repos n’est indiqué dans la documentation officielle, ce qui accentue la surface d’exposition.