Coronavirus : le code source de l'API Exposure Notification maintenant disponible

Stéphane Moussie |

Apple et Google ont chacun rendu disponible le code source de l'API Exposure Notification fonctionnant au cœur de leur système d'exploitation mobile respectif. Les deux acteurs ont procédé par étapes pour rendre public le fonctionnement de leur solution commune servant de base à des applications de traçage de contacts dans le cadre de la lutte contre le coronavirus.

Apple et Google ont commencé au printemps par publier les spécifications, qui ont été ajustées après les retours de la communauté, puis ont mis l'API à disposition et Google a proposé un exemple complet de code serveur en open source.

Voici maintenant l'API elle-même, telle qu'elle est implémentée dans iOS et Android. D'après le développeur Florent Morin, elle est sans surprise par rapport aux spécifications. Elle est d'ores et déjà utilisée par une vingtaine de pays, dont la Suisse, l'Italie, l'Allemagne et le Japon.

Les applications de traçage de contact, qu'elles utilisent l'API d'Apple/Google ou bien une technologie maison (comme c'est le cas de StopCovid en France), connaissent des fortunes diverses en Europe. Les volumes de téléchargements sont très différents d'un pays à l'autre et leur utilité reste encore à démontrer.

avatar oboulot | 

Bonjour ! Merci pour l’info MacG mais il y a un lien pour consulter ce code source ?

avatar Stéphane Moussie | 
@oboulot : oups. C'est ajouté !
avatar r e m y | 

Ce que je reproche le plus à cette API c'est la consommation de batterie! Ça va mieux avec iOS13.6 mais c'est encore très contraignant (je ne tiens plus la journée sans devoir recharger mon iPhone quand j'active l'une des apps de traçage, que ce soit l'italienne ou l'allemande)

Pour des raisons professionnelles (déplacements frequents en Europe) j'ai plusieurs apps CoViD sur mon iPhone pro (imposé par l'employeur). Mais autant je peux laisser StopCovid active en permanence (sur 24h il est rare qu'elle atteigne 1% de la conso batterie), autant je dois penser à désactiver les apps Immuni (Italie) ou CoronaWarnApp (Allemagne) quand je ne suis pas dans l'un de ces Pays.

Avec iOS13.6 sur une journée normale de boulot, avec l'API activée, c'est entre 25 et 30% de conso de la batterie (journalisation des expositions au CoViD se retrouve systématiquement en tête des apps consommatrice). Avec les versions antérieures d'iOS c'était même entre 60 et 70% !!!

(L'API n'est pas inclue dans les bêtas d'iOS14. J'espere que c'est parce qu'ils sont en train de la réécrire pour corriger ce point...)

avatar oboulot | 

@r e m y

Merci du retour ! Comme quoi l’app Stop Covid de notre gouvernement ne méritait sûrement pas le bashing dont certains ici s’étaient mis un point d’ordre.

avatar lmouillart | 

Techniquement et sur Android ça ne me consomme quasi aucune ressource, donc au moins là-dessus effectivement StopCovid c'est au poil, pour le reste, aucune idée en dehors de la faible utilité vu que c'est trop peu utilisé.

avatar Nitneuqq | 

@r e m y

Sur les 10 derniers jours, la « Journalisation des expositions au COVID-19 » m’a pris 2% de batterie en moyenne. Ton iPhone doit avoir un problème.

avatar r e m y | 

@Nitneuqq

C'est un 6S (le modèle le moins cher qu'Apple propose pour les flottes d'entreprises ...), je pense que la version de la puce Bluetooth doit jouer (d'autant que tous mes collègues, avec des 6S également donc, font le même constat d'une consommation très élevée).
Par contre StopCovid qui utilise également le bluetooth (et apparaît bien dans les apps actives en arrière-plan, heure par heure, dans la consommation batterie) reste en dessous de 1% sur 24h...

Copie d'écran il y a quelques semaines avec iOS13.5
https://tinyurl.com/yapyzexs

Copie d'écran réalisée à l'instant avec iOS13.6
https://tinyurl.com/yy4942ee

avatar Florent Morin | 

@r e m y

Le fonctionnement de l’API Exposure Notification lui garantit d’être active en permanence. C’est assez clair au niveau du code. L’objectif est d’assurer un fonctionnement permanent optimal pour éviter de rater des contacts.
De manière basique, les apps compatibles Exposure n’ont pas besoin d’être relancées au redémarrage suite à une mise à jour pour capter des contacts.

Forcément, cela a un impact sur l’autonomie de l’appareil.

L’API Bluetooth par défaut est plutôt optimisée pour l’autonomie. En temps normal, le fait d’une communication Bluetooth moins bonne a peu d’impact.

StopCovid utilise l’API Bluetooth optimisée pour l’autonomie et n’a pas l’accès aux API garantissant un fonctionnement permanent. Donc forcément l’autonomie est meilleure.

Mais, vu les résultats, si on compare le nombre de personnes se déclarant malades et le nombre de contacts informés, il y a un soucis côté StopCovid. Soucis reconnu côté StopCovid qui travaille certainement à résoudre le problème.

Et Apple travaille certainement à améliorer l’autonomie en conservant l’efficacité.

avatar r e m y | 

@FloMo

Je suis incapable de vérifier le bon fonctionnement de ces apps. Tout ce que je constate c'est qu'elles sont bien actives en permanence: chaque heure du jour et de la nuit, quand on regarde la consommation batterie, je retrouve aussi bien "notification exposition CoViD" que "StopCovid" (indiquée comme fonctionnant en arrière-plan).
L'une consomme moins de 1%, l'autre me vide la batterie m'obligeant à emporter avec moi une batterie de secours car je ne tiens pas la journée en déplacement.

Copie d'écran il y a quelques semaines avec iOS13.5
https://tinyurl.com/yapyzexs

Copie d'écran réalisée à l'instant avec iOS13.6
https://tinyurl.com/yy4942ee

avatar Florent Morin | 

@r e m y

Rien de surprenant.

La solution Apple utilise un système qui est prévu pour fonctionner en permanence.

La solution StopCovid s’appuie sur un système prévu pour fonctionner ponctuellement, qui réussit à se réveiller par des astuces dans le code.

Après, faut-il un système qui fonctionne comme prévu ou un système qui préserve la batterie ?

avatar r e m y | 

@FloMo

Mon point n'est pas que ce soit surprenant ou pas surprenant... juste que je reproche à cette API de consommer énormément ce qui est contraignant du fait de mes déplacements (si j'oublie ma batterie de secours, je suis sûr de me retrouver sans téléphone en milieu d'après-midi)

Maintenant, il y a d'autres processus utilisant également le Bluetooth en permanence sur mon iPhone (notamment les AirPods), sans que ça n'ait jamais eu un tel impact sur mon autonomie!

avatar Florent Morin | 

@r e m y

Le Bluetooth audio fonctionne complètement différemment du Bluetooth en mode « beacon ».

La bonne solution est de remonter l’info à Apple en participant au programme d’amélioration des produits.

avatar John McClane | 

@FloMo

"La bonne solution est de remonter l’info à Apple en participant au programme d’amélioration des produits."

Comment fait-on ? J’aimerais faire remonter des bugs sur certaines apps justement.

avatar Florent Morin | 

@John McClane

Le mieux est de s’inscrire au programme beta.
Ça permet d’être dans le cycle de développement des produits Apple. Avec l’assistant d’évaluation, on peut remonter les bugs plus facilement.

Sinon, il y a tout simplement l’assistance Apple, disponible en ligne ou via l’app mobile.

avatar John McClane | 

@FloMo

Merci, je vais voir ça. Ça fait des mois que je peste contre des bugs tout bêtes dans l’app Livres, mais j’ai l’impression que personne chez Apple ne s’en soucie car rien ne bouge...

avatar Florent Morin | 

@John McClane

En fait, avec des screenshots et des choses précises, ils solutionnent les bugs en général.

Mais ils priorisent selon la récurrence du bug en question.

L’important est d’être précis pour qu’ils puissent reproduire systématiquement le bug.

avatar John McClane | 

@FloMo

Dans le programme Bêta tu veux dire ?

avatar Florent Morin | 

@John McClane

Oui

avatar John McClane | 

@FloMo

Ok merci ! 👍

avatar Bigdidou | 

@FloMo

« Après, faut-il un système qui fonctionne comme prévu ou un système qui préserve la batterie ? »

Comme prévu par quoi et par qui ?
Stop Covid ne fonctionne pas comme prévu par ses développeurs ?

Et puis si consommer jusqu’à 30%, c’est fonctionner comme prévu, et bien je préfère une app qui ne fonctionne pas comme prévu.

avatar Florent Morin | 

@Bigdidou

Fonctionner comme prévu, c’est capter les contacts en permanence. Pas par intermittence, sinon ça ne sert à rien.

avatar Bigdidou | 

@FloMo

« Fonctionner comme prévu, c’est capter les contacts en permanence. Pas par intermittence, sinon ça ne sert à rien. »

C’est capter les contacts quand c’est nécessaire.

avatar Bigdidou | 

@FloMo

« il y a un soucis côté StopCovid. Soucis reconnu côté StopCovid qui travaille certainement à résoudre le problème. »

Sauf qu’Apple a promis, il;me semble, de bloquer toute mise à jour.
Je ne sais pas où ça en est, cette histoire.

avatar Florent Morin | 

@Bigdidou

Apple bloque les mises à jour quand la vie privée est en danger.

Le soucis actuel est que le nombre de notifications est nettement inférieur au nombre de signalements. Au mieux, une notification a été envoyée au cercle familial proche.

Si le fonctionnement nominal n’est pas au point, il n’y a pas lieu de s’inquiéter de la vie privée sur l’App Store.

Par contre, quand ce problème sera réglé, l’app devra également se mettre en ordre de marche par rapport à la vie privée suite à la mise en demeure reçue par la CNIL.

Heureusement que l’API G/A avait été rejetée par StopCovid suite aux inquiétudes concernant la vie privée et la fiabilité de la solution. S’en est presque risible.

Et tout les incriminations du gouvernement vis-à-vis de G/A tombent à l’eau, évidemment.

avatar Bigdidou | 

@FloMo

« Apple bloque les mises à jour quand la vie privée est en danger. »

SyMich nous avait expliqué ici qu’Apple avait annoncé son intention de ne pas valider une nouvelle version de l’app qui utiliserait la même « astuce » pour « réveiller » les appareils.
Rien à voir avec la vie privée qui n’est de toute façon pas en danger avec StopCovid.

Sinon, je ne savais pas qu’Apple avait bloqué TikTok, Facebook, et j’en passe.

avatar Florent Morin | 

@Bigdidou

Je me souvenais plus de cette anecdote.
Mais OK.

> Rien à voir avec la vie privée qui n’est de toute façon pas en danger avec StopCovid.

Ce n’est pas ce que dit la CNIL qui a envoyé une mise en demeure au Ministère de la Santé.

https://www.igen.fr/app-store/2020/07/stopcovid-la-cnil-releve-plusieurs-irregularites-116341

Sachant que c’était vendu comme un avantage par rapport à la solution G/A...

> Sinon, je ne savais pas qu’Apple avait bloqué TikTok, Facebook, et j’en passe.

Sauf que les règles des réseaux sociaux sont claires par rapport à la vie privée.
D’ailleurs, quand ça dérape, ils sont éjectés. Comme le fameux VPN de Facebook par exemple.

J’ai eu le cas chez un client (je travaille essentiellement pour des grands groupes). Le prestataire utilisait les API Apple Music pour espionner les utilisateurs après validation. On avait une semaine pour redresser la barre. Mon client a dit « on est trop gros, ils le feront jamais ». J’ai du expliquer que c’était prévu mais pas dans le planning de la boîte. L’app a été expulsée comme promis au bout d’une semaine. Normal.

avatar Bigdidou | 

@FloMo

« Le prestataire utilisait les API Apple Music pour espionner les utilisateurs après validation »

Oui, enfin ce que reproche la CNIL à StopCovid n’est pas une volonté d’espionner mais un défaut d’information et de mise en œuvre de certaine sécurité qui lui paraissent nécessaire.
StopCovid n’a aucune vocation d’espionner qui que ce soit.

avatar Florent Morin | 

@Bigdidou

Complètement d’accord sur ce point. Je ne suis pas du tout complotiste.

Je ne pense pas que le Gouvernement ait de mauvaises intentions, si ce n’est accuser G/A de non-respect de la vie privée à tort.

Par contre, le sujet de la vie privée et de la sécurité a été relégué au second rang pour privilégier la souveraineté et une hypothétique « IA ».

Et pour être très clair : si le Gouvernement avait choisi sa propre solution MAIS décentralisée pour rester souverain tout en faisant le max pour la vie privée, cela me conviendrait parfaitement. Ce serait en théorie moins efficace (qui connaît mieux le matériel Apple que Apple ?) mais au moins ça n’amène pas de risque.

avatar pat3 | 

@r e m y

"Pour des raisons professionnelles (déplacements frequents en Europe) j'ai plusieurs apps CoViD sur mon iPhone pro (imposé par l'employeur). Mais autant je peux laisser StopCovid active en permanence (sur 24h il est rare qu'elle atteigne 1% de la conso batterie), autant je dois penser à désactiver les apps Immuni (Italie) ou CoronaWarnApp (Allemagne) quand je ne suis pas dans l'un de ces Pays. "

Tu ne pourrais pas créer un script Raccourci pour ça ?

avatar heero | 

De mon coté en 24h l'application japonaise COVID-19 Contact App (Exposure Notifications) utilise 4% de ma batterie (iPhone XS sous 13.6) (2% depuis ce matin)

avatar fondoeil | 

Le masque et la distanciation sociale ne vident en rien la batterie : c’est peut-être la solution idéale 😉
Mais non, StopCovid est la solution idéale pour les anxieux qui veulent à tout prix y croire : l’application utilise peu la batterie et elle ne signale que rarement un contact. Mais on se sent protégé. C’est top ! Elle fonctionne donc comme prévu, car la technologie française domine une nouvelle fois le monde 😊 C’est comme le Rafale ou les produits Archos, qui connaissent le même succès mondial que la solution française pour le Covid ! Ils sont tellement bons dans leur domaine 💪 Il revient quand O ? Parce qu’il nous manque profondément...

avatar John McClane | 

@fondoeil

"Il revient quand O ? Parce qu’il nous manque profondément..."

Il est parti ??? 🎉

avatar Inconnu-Soldat | 

Tout faux dommage. Pour qu’il y ait contamination il faut être en contact au minimum un quart d’heure d’ou la fausseté de cette assertion (pas besoin donc de fonctionnement en continu, et c’est encore plus stupide quand il n’y a personne dans le voisinage). Autre erreur et assertion fausse, StopCovid n’est là ni pour rassurer ni pour empêcher la contamination première mais pour avertir en cas de possible contamination.

Enfin votre diatribe anti-française ne vous place pas comme un être supérieur si fier de sa critique, mais juste comme un bouffi d’orgueil.
StopCovid a subi les foudres totalement injustifiées, abondantes, violentes des Media, politiques, et des sites comme celui-ci ayant pur conséquence son succès faible. Et ce sont ceux qui ont contribué à cette faible audience qui en rendent responsable l’application tout comme le violeur vous responsable la femme violée de l’avoir été. Enfin considérer que StopCovid serait un échec et l’API un succès alors que cette dernière avec les initiateurs couvrant 99 % des OS des mobiles ne sont pas foutus d’avoir rallié plus de 20 pays, dont à peine quelques uns sur les 30 pays de l’Europe élargie, sur les 200 pays contaminés est de la pure foutaise.

avatar Florent Morin | 

@Inconnu-Soldat

> StopCovid a subi les foudres totalement injustifiées, abondantes, violentes des Media, politiques, et des sites comme celui-ci ayant pur conséquence son succès faible.

Il faut voir le bon côté : si cela avait été un succès de téléchargements et d’usage, la mise en demeure de la CNIL se serait probablement transformée en condamnation.

avatar Ali Baba | 

Tiens, tout est écrit en Objective-C... aucune ligne de Swift.

avatar Florent Morin | 

Et du C ainsi que de l'Objective-C++ ce qui est plutôt rare.
Ceci étant, ils ont écrit quelques macros qui reprennent les principes du Swift.

avatar Inconnu-Soldat | 

StopCovid a, elle, été développée en SWIFT

CONNEXION UTILISATEUR