Un chercheur en sécurité connu sous le pseudonyme Zerotistic a analysé, protocole par protocole, la façon dont Apple distribue et déchiffre les positions partagées via Find My. Sans Mac ni iPhone, il est parvenu à faire fonctionner ce partage de localisation sous Linux.

© Apple
© Apple

L'idée de base était de pouvoir automatiser des alertes de géofencing à partir d'une position déjà partagée par un ami sur Find My. Il a fallu environ une semaine de rétro-ingénierie pour reconstituer l'ensemble de la chaîne technique d'Apple, laquelle se décompose en quatre étapes.

1 - Se faire passer pour un appareil Apple

Le premier problème a été de se connecter au bon endroit. Un compte iCloud classique donne accès à ses propres appareils, mais pas à l'ancienne API qui gère le partage de position entre amis, baptisée Find My Friends. C'est parce que chez Apple, chaque service demande sa propre autorisation : se connecter à iCloud ne suffit pas à prouver qu'on a le droit d'utiliser Find My, un peu comme un badge d'entrée dans un immeuble qui n'ouvre pas automatiquement toutes les portes des bureaux à l'intérieur. Cette API porte encore ce nom en interne chez Apple (fmyf), un reste de l'époque où Find My Friends existait comme application séparée de Find My iPhone, avant leur fusion en 2019 sous l'app unique Find My, Localiser en français.

Pour obtenir la bonne autorisation, le chercheur est passé par GrandSlam, le système qu'utilise Apple pour vérifier l'identité d'un compte lors d'une connexion. Une fois connecté de cette manière, il a pu demander un accès à IDS, un service interne d'Apple qui reconnaît les appareils et leur permet d'échanger des messages chiffrés entre eux. IDS est le même système qui fait fonctionner iMessage. C'est en quelque sorte le carnet d'adresses privé qui dit à Apple quels appareils appartiennent à quel compte, et qui a le droit de parler à qui.

2 - Obtenir un certificat reconnu par Apple

Avoir accès à IDS ne suffisait pas encore à être reconnu comme un véritable appareil Apple. Il a fallu obtenir un certificat signé par Apple, lequel prouve que la machine Linux est un appareil légitime. Pour cela il faut respecter un certain nombre de règles bien précises. Cela inclut la génération d'une clé de sécurité (RSA de 2048 bits) et d'une signature au format SHA-1, le tout emballé dans un fichier au format que les systèmes Apple utilisent en interne pour ce genre d'échange, un "plist", compressé pour l'occasion. Une fois ce certificat accepté, la machine Linux a encore dû s'enregistrer comme appareil "Find My", non pas pour un seul service, mais pour six fonctions liées à la localisation en même temps, regroupées par Apple sous une même famille de services.

apple find my localiser

3 - Convaincre l'appareil de l'ami de renvoyer sa clé secrète

La partie la plus difficile a consisté à récupérer la clé qui permet de déchiffrer la position de l'ami, sans recréer le partage depuis le départ. Concrètement, quand deux personnes partagent leur position sur Find My, l'appareil qui envoie sa position détient une clé secrète, laquelle sert à protéger cette information. Le chercheur a envoyé à Apple une demande particulière, portant le nom "distributeKeys". Celle a pour effet de demander à l'appareil de son ami de renvoyer cette clé secrète, mais cette fois vers le nouvel appareil Linux fraîchement enregistré.

C'est en réalité un mécanisme tout à fait normal chez Apple. Quand quelqu'un change d'iPhone, son nouvel appareil doit lui aussi recevoir les clés des partages de localisation déjà en place, sans que chacun de ses amis n'ait besoin de recréer le partage de son côté. Le chercheur s'est simplement servi de ce mécanisme prévu pour les nouveaux appareils.

4 - Déchiffrer la position une fois la clé récupérée

La clé reçue voyage elle-même dans un message protégé. Elle est chiffrée grâce à un échange mathématique appelé ECDH. Cela permet à deux appareils de se mettre d'accord sur un secret commun sans jamais faire circuler ce dernier en clair sur le réseau. Le message est signé numériquement pour garantir qu'il vient bien de l'appareil attendu. Une fois cette clé en sa possession, le chercheur a pu interroger SearchParty, le service d'Apple qui conserve les positions sous forme chiffrée. Il a ensuite déchiffré localement les coordonnées grâce à cette même clé et à un second système de chiffrement, l'AES-GCM. Il a alors obtenu une position réelle et à jour, avec une marge de précision et un horodatage, exactement ce qu'affiche normalement l'application Find My sur un iPhone.

Notons qu'ici, il n'y a aucune faille qu'Apple devrait corriger. Seule une position déjà volontairement partagée a pu être consultée, sans possibilité d'inviter de nouveaux contacts, ni de modifier un partage existant. Ces travaux ont toutefois l'intérêt de montrer un peu plus en détail le fonctionnement du service de géolocalisation d'Apple. La firme de Cupertino n'a jamais détaillé ce dernier, sans doute pour empêcher un tiers de concevoir un objet compatible. Apple a plusieurs partenaires, à l'image de Segway ou Belkin qui, on suppose, paient des droits de licence pour s'inviter au sein de l'application Localiser