TousAntiCovid ne fonctionne toujours pas en tâche de fond entre iPhone

Nicolas Furno |

TousAntiCovid, le nouveau nom de l’app StopCovid proposée par le gouvernement français depuis le mois de juin, utilise le Bluetooth pour identifier les autres utilisateurs de l’app autour de vous. Comme toutes les apps de traçage de contacts qui sont apparues depuis le début de la pandémie de Covid-19, elle doit fonctionner à l’arrière-plan pour être efficace. Mais comme elle n’utilise pas l’API fournie par Apple et Google, l’app française doit le faire en tenant compte des restrictions de chaque plateforme.

Avant même la sortie de StopCovid, nous avions un doute sur la possibilité pour une app tierce de maintenir le Bluetooth d’un iPhone actif en permanence. À l’époque, nous parlions d’un « angle mort sur iPhone », en notant que l’app ne devrait plus fonctionner correctement une fois le smartphone d’Apple en veille. Du moins, pas sans un smartphone Android à proximité pour « réveiller » l’app. Peu après, le Secrétaire d'État chargé du Numérique s’était voulu rassurant : Cédric O. avait maintenu que l’app fonctionnait « très correctement », même sur les iPhone.

avatar DarkChocolâte | 

🦆

avatar meza | 

Bravo pour l’enquête !

avatar julien74 | 

Rien de neuf mais maintenant on a la preuve....
Si sûr 3 smartphones, un est un Androïd, cela va avoir pour conséquence que les 2 iPhones communiquent entre eux? Ou juste les iPhone avec le Androïd?

avatar Florent Morin | 

En théorie, tous devraient communiquer entre eux. En théorie, car on a eu quelques fois où l'app s'affichait comme activée alors qu'elle n'émettait aucun signal.

avatar julien74 | 

@FloMo

C’est donc vraiment du bricolage et c’est triste que l’on s’entête à utiliser un algo, qui par conception a des trous dans la raquette. Comme si on avait besoin de ça vu la situation.

avatar fixb | 

Bravo pour cet article.

Une preuve de plus de l’amateurisme total de ce gouvernement.

avatar Malouin | 

@fixb

... C’est plutôt un mal typiquement français !
Notre technocratie a encore eu le dernier mot.

avatar fousfous | 

Au moins le confinement ce sera efficace, dommage que le gouvernement se soit ENCORE réveillé en retard...

avatar kinon | 

Ah bon, tu penses donc que le confinement aurait été accepté facilement si le gouvernement l'avait décrété alors que les courbes étaient encore qu'en augmentation légère il y a 15 jours?
Tout le monde leur serait tombé dessus, toi le premier, déja qu'encore maintenant certains les accusent de faire peur inutilement alors que les courbes sont exponentielles...
Les ya ka sans réfléchir c'est pénible.

avatar fousfous | 

@kinon

Ça aurait pourtant été la décision à prendre, et il me semble que c'est depuis début octobre que je dis qu'il faut reconfiner (ou au moins faire quelque chose).
Mais en attendant, attendre que la situation soit catastrophique ne me semble pas être une bonne stratégie.
On a 15 jours de retard sur le virus, à partir de là il faut anticiper. Et comme on sait modéliser une exponentielle, c'est pas compliqué de savoir où on en sera sans rien faire.
C'est pas pour rien que la 2 eme vague a été prévu pour octobre dès la fin du confinement...

avatar minipapy | 

Même si c’est effectivement une sérieuse limite technique, les lieux publics où l’on ne trouve que des iPhones doivent être extrêmement rares, voire inexistants.

Les situations dans lesquelles un cas contact n’est pas identifié en raison de la présence de seuls iPhones sont logiquement marginales en comparaison des contacts non identifiés car l’application n’est tout simplement pas installée.

L’astuce technique, qui consiste à réveiller l’application iOS grâce à un téléphone Android ne me parait pas si aberrante.

En revanche, il est clair que cela pose d’autres problèmes (interop,...).

avatar fousfous | 

@minipapy

Sauf que vu comme l'application est peu installée, c'est pas sûr qu'il y ai d'autres téléphone android avec l'application installée et active,

avatar minipapy | 

@fousfous

Effectivement. Mais API Google/Apple ou non, une faible adoption rend de toute façon l’application peu efficace.

avatar kinon | 

A ce matin 4,6 millions d’installées.. pas si mal après une semaine.

avatar Malouin | 

Seul contre le monde entier...

avatar apple78310 | 

Mdr quelle bande guignols, c’est effrayant

avatar minitoine | 

Tiens je me posais une question. Si je prends le code source, que je le modifie. Pensez vous que je puisse envoyer plein d’identifiants aux autres autour de moi ? Type plein de positif par exemple. Non pas que ça m’intéresse, mais bon, il est verrouillé le système ?

avatar mmenfin | 

@minitoine

Il me semble que c’est le serveur central qui gère les infos de tests positifs, pas les téléphones directement.

avatar Florent Morin | 

@mmenfin

Un serveur pourrait tout à fait faire office de passerelle.

Il recevrait les vrais identifiants sur serveur StopCovid.

Ensuite, il ferait en sorte que des apps ou des Raspberry Pi distribuent ces vrais identifiants.

En gros, ça ferait comme si un seul utilisateur était allé partout.

Puis il envoie les identifiants collectés au serveur central.

Il y a de bonnes chances dans le volume qu’un malade ait été en contact avec le faux utilisateur.

Et donc, tous ceux qui ont été croisés sont considérés cas contact.

C’est un risque connu.

avatar Frodon | 

Dans toute application/service centralisé, une attaque "man-in-the-middle" est possible, en particulier sur des points d'accès réseau publiques.

Et dans ce cas, l'ordinateur qui fait office de "fausse borne WiFi" peut récupérer et modifier les données transmises, puisque tout transite par lui.
Il peut donc renvoyer de fausses alertes aux téléphones, et même mélanger les identifiants anonymes contact pour remonter des faux contacts au serveur StopCovid.

Après pas sûr que cela motive beaucoup d'apprenti pirates de faire ça ;) Mais techniquement c'est faisable ;)

avatar Florent Morin | 

@Frodon

Plus maintenant. StopCovid fait du pinning SSL. Globalement, c’est solide.

avatar Frodon | 

Ok, tant mieux, ça aurait été inquiétant si elle ne le faisait pas ;)

avatar Florent Morin | 

@Frodon

ROBERT mis à part, l’app est plutôt bien sécurisée.

Avec l’API native, ce serait une des meilleures apps anti-covid.

avatar dodomu | 

@minitoine

Non vous ne pourrez pas, car le signal envoyé par l’application c’est juste un identifiant « coucou je suis machin », machin étant un identifiant aléatoire changé périodiquement pour éviter que cela puisse être utilisé pour vous tracer.
Tout les téléphone autour du votre écoutent ces messages, et les stockent de leur côté (aujourd’hui, à 12h42, j’ai croisé machin pendant 20 minutes).
Votre téléphone stocke aussi de son côté les messages qu’il a émis (aujourd’hui, de 12h à 13 heure, je disais à tout le monde que j’étais machin).
A ce stade, les téléphones sont capables de savoir qui ils ont croisé et pendant combien de temps, mais pas de savoir s’il le porteur du téléphone émetteur était contaminé ou pas. Pour cela, et pour garantir l’anonymat, il faut un tiers de confiance, ici un serveur contrôlé par le gouvernement.
Si vous vous déclarez positif sur votre application, votre téléphone vas contacter ce serveur et lui envoyer la liste des identifiant qu’il a émis (ce jour ci, de 12h à 13 je disais à tout le monde que j’étais machin), en plus d’un qrcode délivré par le laboratoire ayant réalisé le test, cela permet d’éviter que n’importe qui se déclare positif.
Maintenant que le serveur a la liste des identifiants positifs, chaque téléphone peut périodiquement lui demander « j’ai croisé machin hier de 12h42 à 13h02, tu sais s’il t’a dit qu’il était positif ? », et le serveur puis lui répondre soit qu’il ne le connaît pas, auquel cas rien ne se passe, soit qu’il le connaît, et à ce moment on vérifie si par exemple vous avez été au contact plus de 15 minutes, et si oui l’application vous émet une notification.
Voilà le fonctionnement résumé en version simplifiée, j’espère que c’est assez clair 😊

avatar gardiolan | 

@dodomu

Merci, c'est la première fois que je comprends concrètement le fonctionnement ! 😊

avatar Florent Morin | 

@dodomu

Et si un serveur se met entre les deux et se fait passer pour une app ? Ce serveur distribue des identifiants (récupérés via le serveur StopCovid) à une multitude d’appareils. Les appareils lui redonnent les identifiants récoltés. Et le serveur transmet tous les identifiants récoltés au serveur StopCovid. Dans le lot, il y aura bien un contaminé. Et là, tout le monde se croit cas contact.

Possible ?

avatar dodomu | 

@FloMo

J’ai un peu de mal à comprendre ce que vous voulez dire , mais j’imagine que le sens est le même que votre dernier message un peu au dessus, je vais donc me baser sur celui ci pour vous répondre : 😊

Un serveur pourrait tout à fait faire office de passerelle.
Il recevrait les vrais identifiants sur serveur StopCovid.
> Vous voulez dire façon « man in the middle » ? Avec un faux serveur qui se place entre les applications des téléphones des gens et le serveur réel ? C’est tout à fait possible d’établir un tel faux serveur, mais si la communication est chiffrée (et c’est sûrement le cas) il sera impossible de lire son contenu, donc impossible d’intercepter et de lire une requête envoyée au serveur du gouvernement.
Quand à se faire passer pour le serveur officiel , c’est techniquement possible, mais si l’application mobile est faite correctement, elle n’acceptera que le certificat possédé par le serveur officiel du gouvernement, et refusera donc de discuter avec un serveur pirate.
L’application étant open source, on peut en créer une version qui sera configurée pour dialoguer avec le serveur pirate, mais on ne pourra l’installer que sur ses propres appareils, il sera donc difficile de toucher un large public avec notre fausse application pirate...

Il recevrait les vrais identifiants sur serveur StopCovid
> Que voulez vous dire par là ?
Si vous voulez dire intercepter les identifiants générés par des téléphones lambdas, c’est impossible comme dit ci dessus.
Si vous voulez dire récupérer la liste des identifiants déclarés positifs au Covid directement depuis le serveur, je pense que c’est impossible : si c’est bien fait, le serveur ne vous donnera pas la liste des identifiants contaminés, mais votre téléphone lui envoi la liste des identifiants croisé, et c’est le serveur qui dans son coin regarde s’il y a une correspondance entre les deux listes. Si oui, il cherche à établir si les contacts ont duré un certain temps (15 minutes). Si oui, le serveur renvoie comme message à l’application qu’un contact avec une personne positive au Covid-19 à été détecté, sinon il lui renvoie qu’il y a rien à signaler.

Ensuite, il ferait en sorte que des apps ou des Raspberry Pi distribuent ces vrais identifiants.
En gros, ça ferait comme si un seul utilisateur était allé partout.
> Tout ce que j’ai dis au dessus s’applique à la communication entre l’application et le serveur, et comme dis précédemment, il est quasiment impossible de corrompre cette chaîne.
Cela dit, et je pense que c’est ce dont vous voulez parler (je compte sur vous pour me corriger si je me trompe 😉), il doit être possible d’enregistrer les émissions Bluetooth d’identifiants entre les applications, de téléphones à téléphones, et de les rediffuser à grande échelle sur tout le territoire, en espérant que dans le tas des identifiants captés au moins l’un d’eux se déclare positif au Covid-19, et fasse ainsi de tout le monde des cas contacts.

Puis il envoie les identifiants collectés au serveur central.
Il y a de bonnes chances dans le volume qu’un malade ait été en contact avec le faux utilisateur.
Et donc, tous ceux qui ont été croisés sont considérés cas contact.
> Si l’on parle de communication de téléphone à serveur, on ne pourra pas soumettre de façon pirate des enregistrements positifs sans le qrcode d’un laboratoire d’analyse.
Cependant, si dans la première phrase le « il » désigne un téléphone lambda ayant reçu les enregistrements légitimes enregistrés puis diffusés largement par des rapsberry pi par exemple, alors oui c’est possible.

C’est un risque connu.
> Effectivement, mais je vois plusieurs façon de contourner le problème : le serveur du gouvernement sait combien de fois l’application a été activée. Si une proportion trop grande des téléphones activés se met à dire qu’elle a été en contact avec tel identifiants le même jour au même moment, on peut se douter qu’il y a anguille sous roche.
Autre façon de faire, un enregistrement de personne positive devant être activé par un qrcode délivré par un laboratoire, on peut imaginer que ce qrcode fasse référence au lieux visités par la personne positive. Lors de la vérification par le serveur des potentiels cas contact, si un cas contact est confirmé, le serveur pourrait renvoyer la liste des lieux visités par la personne contaminée, et le propriétaire du téléphone censé être cas contact peut alors vérifier si elle a bien été dans ces lieux ou pas (si l’application me dit que je suis cas contact de quelqu’un vivant à Nantes et que je n’ai jamais quitté Marseille, je suis en droit de me demander s’il n’y a pas une touille dans le potage...)
Aussi, monter un tel parasitage à l’échelle du pays serait extrêmement coûteux, il faudrait une quantité énorme d’appareils pirates pour couvrir un territoire donné, même si l’on peut imaginer ne piéger que quelques endroits partis les plus peuplés, ou brassant beaucoup de monde (supermarchés, lieux de culte, salle de spectacle, ...)
Et dernier argument, quel serait l’intérêt d’un tel sabotage ? Qui aurait intérêt à mettre le bazar dans les capacités de la France à détecter des cas de Covid permis sa population ? Il doit bien y en avoir, mais tirer sur une ficelle comme celle ci serait (je pense) très coûteux en matériel et en organisation, en plus de ne pas être très discret et facilement repérable (mais pas facilement contrable à priori, même si quelque chose peut tout à fait m’avoir échappé 😙)

J’espère avoir bien compris ce que vous vouliez dire 😄

avatar Florent Morin | 

@dodomu

Globalement, l’idée est en effet de « simuler » un (ou plusieurs) gros device virtuel (le serveur) et ses connexions Bluetooth seraient dispatchées sur des devices réels.

Sans casser la sécurité HTTPS, ni créer de faux identifiants, de fausses informations sont remontées car au final le serveur central ROBERT est dupé sur ses entrées.

La connexion HTTPS est régulière : indétectable côté serveur.

Côté Bluetooth, ce sont de vrais identifiants qui sont transmis : indétectable par les autres appareils.

> Et dernier argument, quel serait l’intérêt d’un tel sabotage ? Qui aurait intérêt à mettre le bazar dans les capacités de la France à détecter des cas de Covid permis sa population ?

Si c’est le chaos en France sur les tests, etc... c’est une opportunité pour les pays concurrents. Le pays est déjà fragile économiquement. Il ne faut pas grand-chose pour le mettre à genoux.
Et ça peut être un point d’entrée s’il y a une forte adoption de l’app.
Le tout est d’attendre un taux d’adoption maximal pour créer un effet de panique. Il ne faut pas le sortir trop tôt car le problème pourrait être résolu sans trop d’impact.

Quand on voit la saturation du serveur quand il y a quelques centaines de milliers de connexions, on sait que ça n’a pas été conçu en anticipant ce genre de problème.

avatar alohabobo | 

@dodomu

Merci beaucoup pour cet éclairage !

avatar mirando | 

Comme si on fréquentait des gens qui ont des Android ;-)

avatar GaspardNic92 | 

Je viens aussi de constater avec stupéfaction que l’appli requiert iOS 11, non installable sur des iPhone de seniors (mes parents), pourtant la cible visée !!!

avatar Nico_Belgium | 

@GaspardNic92
L’an dernier - graphique le plus récent que j’ai pu trouver - la part de marché des appareils actuellement en service sous iOS 11 ou supérieure était de 92% des appareils

https://www.bhmag.fr/actualites/part-marche-ios-12-passe-80-appareils-apple-40736

Ce qui veux dire qu’elle est certainement encore supérieure aujourd’hui maintenant que iOS 13 et iOS 14 sont passés par la.

Même les appareils qui ont jusqu’à 5 à 7 ans sont compatibles avec iOS 14. Pour des appareils compatibles iOS 11 il faut remonter encore bien plus loin.

Édit: après vérification, le plus vieux appareil compatible avec iOS 11 est l’iPhone 5S sorti en 2013. Ce qui veux dire qu’il faut remonter à l’iPhone 5 sortis en 2012 pour trouver un appareil non compatible. Soit un iPhone de 9 ans 😅

Bref devoir modifier le code pour supporter une version antérieure à iOS 11 apporterait beaucoup de complication pour un public très largement minoritaire. Cela se comprend donc qu’ils aient mis la barre à cet endroit

Et - ça c’est un avis personnel - je trouve que « des iPhone de senior » ça veux pas dire grand chose 🤷‍♂️ il y a sûrement des senior avec des smartphones +- récents et d’autres avec des vieux iPhones. Tout comme il y a des jeunes avec des téléphones à touches et d’autres avec le dernier iPhone 12 pro max XS plus 😅.

Donc pour moi l’équation iOS plus vieux supporte = plus de senior visé ne tient pas forcément la route 🤷‍♂️.

( par contre les appareils utilisant l’API d’Apple doivent obligatoirement tourner sous iOS 13.5 minimum. Ce qui est déjà bien plus problématique)

avatar AppleDomoAdepte | 

Je m’apercois que je n’avais pas compris.
Je pensais que le dysfonctionnement consistait en l’arrêt de l’application pas à une interruption du Bluetooth.

Question bête, quand on a une Apple Watch la connexion Bluetooth semble maintenue.
C’est suffisant pour que TAC fonctionne ?

avatar Florent Morin | 

@AppleDomoAdepte

Non.

avatar Nicolas Furno | 

@AppleDomoAdepte

Rien à voir, le Bluetooth est maintenu actif en permanence par iOS, mais les apps n’y ont pas accès. Cela explique que l’API officielle au niveau du système fonctionne correctement, elle.

avatar cham | 

Bien dommage que ça ne fonctionne pas en tâche de fond. Si c le prix à payer pour ne pas donner les clés du camion à Apple/Google... Perso je la garderai ouverte et checkerai de temps en temps. Et puis je me ferai réveiller par un Androïd. Bonne soirée

avatar Simbapple | 

En gros c’est toujours autant inutile pour nous possesseurs d’iPhone ! Quand tu vois une grande partie de l’Europe utiliser l’API d’Apple et de Google.... bel exemple que la France donne encore....

avatar Florent Morin | 

@Simbapple

Oui et non.

La partie « infos » est plutôt riche.

avatar julien74 | 

@Simbapple

On est des éternels Astérix qui se croient assez forts pour résister à l’envahisseur.
Sauf que dans la BD il y a la potion magique.
Dans la vraie vie, non.

avatar Simbapple | 

@julien74

Ouais c’est pas faux !

avatar fousfous | 

@julien74

Y a pourtant un bonhomme aux cheveux long et blanc qui nous proposait sa potion miracle!

avatar Sica | 

Vu que l’appli sous android ne peut pas s’installer sur mon samsung J6 parce qu’il n’est pas « compatible.... » cette appli est une vraie plaie !...

avatar andr3 | 

Donc, en changeant le nom d’une app on supprime les bugs.

Intéressant comme approche 🤔

avatar kristopheman | 

Elle ne fonctionne pas tout court

avatar bunam | 

"Point positif, l’app TousAntiCovid n’a effectivement qu’un impact limité sur la batterie. Ici, sur l’un des iPhone 12 Pro utilisé au quotidien depuis sa sortie : l’app a été comptabilisée pour moins de 1 % de la consommation de batterie."
J'aime bien comme blague, en clair elle fait rien alors heureusement qu'elle consomme rien ;)
Sinon le reste de vos tests, c'est très interessant !!!!

avatar gyomba | 

Et avez-vous testé après avoir installé le widget de l’application ? (On sait jamais lol)

avatar Nicolas Furno | 

@gyomba

Oui, on le voit même dans la vidéo.

avatar koko256 | 

C'est tout de même curieux qu'un téléphone Android puisse réveiller un iPhone en tâche de fond mais qu'un autre iPhone en soit incapable.

avatar dodomu | 

@koko256

C’est en fait assez logique : en théorie n’importe quel OS peut réveiller n’importe quel OS, c’est juste qu’iOS est beaucoup plus restrictif, et coupe l’application dès qu’elle n’est plus active, sauf si elle se fait réveiller.
Android étant plus souple, l’application continue d’émettre même en arrière plan, et peut ainsi donc réveiller tout les OS alentours.
Un iPhone peut donc réveiller un autre iPhone, il faudrait juste que l’un des deux ait l’application ouverte au premier plan, ce que ne font pas la plupart des utilisateurs d’iPhone, qui préfèrent sûrement regarder leur mail ou autres, bref utiliser leur téléphone 😉
Pour ces gens là, la seule possibilité de réveil vraiment réaliste est donc le réveil par un téléphone Android.

avatar kinon | 

Oui et non
Une manière "constructive " de revenir à la réalité:
Si on fait le compte des moments où le risque est quasi nul (dans la rue , chez soi etc...) le problème, bien réel de l'appli, est en fait peu important car les moments à risque sont faciles à identifier: Entrée dans un bar, un moyen de transport ou autre lieu un peu rempli dans lequel on va rester un moment...Dans ces cas on met l'appli au premier plan...
Et ne me dites pas que c'est contraignant :-), ça prend 1 seconde et on manipule sans arrêt son tel pour tout et n'importe quoi, alors hein...
De plus lorsqu'on est dans une de ces zones à risque, vu le nombre, il y a 9 chances sur 10 pour qu'il y ait plusieurs tel Android...
On a tous compris qu'il aurait été plus efficace de prendre les appli de Google et Apple, c'est bon!
Mais on dirait qu'il est particulièrement plaisant de jeter le bébé avec l'eau du bain
Perso lorsque je dispose d'un appareil , quel qu'il soit, et que cet appareil a une faiblesse ou un manque, sur les forums je préfère chercher la meilleure façon de contourner ce défaut pour le minimiser si possible, plutôt que passer mon temps à ressasser ma rancune contre le monde entier, mon pays, son gouvernement ou le fabriquant, et bien sûr ne pas utiliser l'appareil/appli, juste pour le principe :-).
EDIT En attendant il y a déja plus de 6 millions d'utilisateurs de cette appli en à peine plus de 1 semaine.

Pages

CONNEXION UTILISATEUR