Association sans compte : comment Peering décide à qui faire confiance
La plupart des outils de bureau à distance demandent de créer un compte pour qu'une entreprise décide si deux appareils vont ensemble. Peering se passe de l'entreprise et vous le demande à vous, avec six chiffres.
Chaque appareil est sa propre identité
La première fois que Peering s'exécute sur un Mac ou un iPhone, il génère une paire de clés P-256 et garde la moitié privée dans le Keychain de cet appareil. Cette clé est l'identité de l'appareil, définitivement. Il n'y a ni nom d'utilisateur, ni mot de passe, ni serveur qui en détienne une copie. À chaque démarrage de l'app, elle signe un nouveau certificat autosigné sur cette clé, et les autres appareils épinglent la clé, pas le certificat.
Cela compte, car un certificat autosigné ne prouve rien à lui seul. Il dit « cette clé a produit ce certificat », pas « voici le Mac de votre salon ». Il faut que quelque chose relie une clé à un appareil physique, et ce quelque chose, c'est vous.
Les six chiffres
Quand un iPhone rencontre un Mac pour la première fois, les deux écrans affichent un code à six chiffres. Vous confirmez qu'ils sont identiques. Si c'est le cas, chaque appareil mémorise la clé de l'autre. Sinon, quelqu'un s'est glissé entre les deux et vous refusez.
Ce code n'est ni aléatoire ni un mot de passe. C'est une courte empreinte de toute la négociation : les identifiants des deux appareils, des clés à usage unique fraîches de chaque côté, des nombres aléatoires à usage unique de chaque côté, et la clé d'identité du Mac. Concrètement, ce sont les quatre premiers octets d'un SHA-256 calculé sur ces champs, réduits à six chiffres décimaux. Si un attaquant relaie la connexion, le Mac et l'iPhone voient chacun une transcription différente, donc un nombre différent.
Pourquoi s'engager d'abord
Un code à six chiffres n'a qu'un million de valeurs, donc un attaquant astucieux pourrait essayer des clés à usage unique jusqu'à ce que les deux côtés affichent par hasard le même nombre. Le protocole ferme cette porte avec une étape d'engagement puis de révélation :
- Chaque côté envoie d'abord une empreinte de sa clé à usage unique et de son nombre aléatoire.
- Ce n'est qu'une fois les deux empreintes reçues que l'un ou l'autre révèle les vraies valeurs.
- Chaque côté vérifie la révélation par rapport à l'empreinte reçue plus tôt.
Comme l'attaquant doit s'engager avant de rien voir, il ne peut pas ajuster ses valeurs pour qu'elles concordent. Il ne lui reste qu'un tirage à l'aveugle, avec une chance sur un million d'obtenir un code identique à chaque tentative, et une tentative ratée se manifeste par une différence que vous pouvez voir.
Le raccourci du code QR
Si vous scannez le code QR du Mac, il n'y a rien à comparer à l'œil. Le code QR contient un secret de 16 octets que seule une personne qui regarde l'écran du Mac peut avoir. L'iPhone s'en sert pour calculer une preuve (un HMAC sur la négociation), et le Mac l'accepte comme preuve que la personne qui associe les appareils est physiquement devant le Mac. Sans cette preuve, le Mac demande à son propre utilisateur d'approuver.
Après l'association, la confiance est une comparaison de clés
Chaque connexion suivante est une session TLS 1.3 dans laquelle les deux côtés présentent leur clé. L'iPhone prend la clé du Mac dans le certificat qu'il a réellement reçu, jamais dans ce que le Mac affirme dans un message, et la compare à celle qu'il a mémorisée, en temps constant. Une clé différente, c'est pas de connexion. Plus rien ne vous est demandé après la première fois.
Si un Mac prétend « je vous connais déjà » mais que votre iPhone ne détient aucune clé mémorisée pour lui, l'iPhone refuse. L'affirmation ne prouve rien, car un inconnu pourrait la faire tout aussi facilement.
Le pas à pas pratique se trouve dans le guide d'association. Pour savoir ce qui arrive à la connexion une fois établie, voir ce que le relais peut voir.
Questions
Peering a-t-il besoin d'un compte ou d'une adresse e-mail ?
Non. Chaque appareil crée sa propre clé et la stocke dans son propre Keychain. L'association se fait avec un code à six chiffres que vous comparez sur les deux écrans.
De quoi le code d'association à six chiffres protège-t-il ?
De quelqu'un qui s'interposerait entre votre iPhone et votre Mac. Le code est dérivé de toute la négociation, donc un homme du milieu produit des codes différents sur les deux écrans et vous voyez la différence.