Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FRAUG StopCovid19 : Le point sur les applications de tracing Bluetooth

FRAUG StopCovid19 : Le point sur les applications de tracing Bluetooth

L’état français comme de nombreux états européens et mondiaux réfléchit à lancer une application mobile pour tracer les utilisateurs et les notifier lorsqu’ils ont croisé une personne infectée. Le consensus technique actuel se porte sur une application listant les contacts grâce au Bluetooth plutôt que de la géolocalisation pour GPS. C’est une solution plus respectueuse des données privées. En tant que développeur d’application nous avons un rôle à jouer dans ce débat, je vous propose un panorama des connaissance sur le sujet pour vous faire votre propre avis. Je ne suis pas personnellement impliqué dans le développement d’une de ses applications et essayerai de vous présenter un avis le plus neutre possible sur toutes les initiatives actuelles.

Mathieu Hausherr

May 06, 2020
Tweet

More Decks by Mathieu Hausherr

Other Decks in Technology

Transcript

  1. Mathieu Hausherr (@mhausherr) FRAUG Stop-COVID19 Application de tracing Bluetooth 08/05/2020

    : on me signale une erreur, le TxPower est disponible sur iPhone depuis iOS 13. Le pages concernées sont annotées en rouge
  2. Je ne rentrerai pas dans les détails techniques Mais chaque

    slide embarque un lien pour aller plus loin
  3. COVID-19 Pandémie mondiale Confinement en France, fin prévu le 11

    mai https://www.gouvernement.fr/info-coronavirus/carte-et-donnees
  4. Qui tester ? Dès lors qu’une personne aura été testé

    positive, nous engagerons un travail d’identification et le test de tous ceux, symptomatiques ou non, qui auront eu un contact rapproché avec elle. Tous ces cas contacts seront testés et seront invités à s’isoler, compte tenu des incertitudes sur la durée d’incubation. https://www.gouvernement.fr/partage/11519-declaration-du-premier-ministre-sur-la-strategie-nationale-du-plan-de-deconfinement-a-l-assemblee
  5. Les brigades Nous constituerons des brigades chargées de remonter la

    liste des cas contacts, de les appeler, de les inviter à se faire tester en leur indiquant à quel endroit ils doivent se rendre, puis à vérifier que ces tests ont bien eu lieu et que leurs résultats donnent lieu à l’application correcte de la doctrine nationale. https://www.gouvernement.fr/partage/11519-declaration-du-premier-ministre-sur-la-strategie-nationale-du-plan-de-deconfinement-a-l-assemblee
  6. Les brigades Qui avez-vous croisé ? Au travail : Antoine

    D. et Bertrand E. Et le soir j'ai mangé chez mon beau-frère Christophe F.
  7. GPS Solution naïve Peu respectueux de la vie privée Google

    possède déjà cette information en partie https://policies.google.com/privacy
  8. Tracing Pas besoin de savoir où, ni le nom de

    la personne. Il suffit de qualifier le contact. On retient juste : J'ai croisé A.D. le 12 au matin, à moins d'un mètre pendant une heure.
  9. BLE Hardware différent / Protocole différent Pas d'appairage iOS 5.0

    / Android 4.3 https://www.bluetooth.com/learn-about-bluetooth/bluetooth-technology/radio-versions/
  10. GATT Usage pour l'IoT Exemple : thermomètre Service Environment Sensing

    0x181A Characteristic Temperature 0x2A6E https://www.bluetooth.com/specifications/gatt/characteristics/
  11. Beacon Envoie un signal, toujours le même, toutes les x

    secondes Permet la géolocalisation indoor Protocoles propriétaires : ex iBeacon https://en.wikipedia.org/wiki/Bluetooth_low_energy_beacon
  12. Tracing Bluetooth Le téléphone diffuse un identifiant par BLE comme

    un beacon mobile Les autres téléphones stockent pour chaque téléphone qu'ils croisent cet identifiant https://github.com/DP-3T/documents
  13. Calcul de distance Souvent présentée sous forme discrète Plus précis

    autour de 1m https://developer.apple.com/documentation/corelocation/clproximity
  14. Calcul de distance RSSI puissance mesurée TxPower puissance de calibrage

    à 1m 2<N<4 facteur environnemental Apple ne fournit pas de TxPower https://iotandelectronics.wordpress.com/2016/10/07/how-to-calculate-distance-from-the-rssi-value-of-the-ble-beacon/ Correction : le TxPower est disponible depuis iOS 13
  15. Impact sur la batterie Protocole prévu pour être peu gourmand,

    6 fois moins que le WiFi Estimote : durée de vie 4-5 ans https://www.researchgate.net/figure/Power-Consumption-Test-for-Bluetooth-ZigBee-and-Wi-Fi_tbl1_318054538
  16. Permissions de localisation Android 9 (API level 28) ou moins

    ACCESS_COARSE_LOCATION Android 10 ou plus ACCESS_FINE_LOCATION Pourquoi : Localisation Indoor https://developer.android.com/guide/topics/connectivity/bluetooth
  17. Fonctionnement en arrière plan Le BLE nécessite un service en

    Foreground Un service en Foreground doit être accompagnée d'une Notification PRIORITY_LOW ou plus https://developer.android.com/guide/components/services
  18. Fonctionnement en arrière plan Cette notification est entièrement configurable Text

    + Image + Actions Pourquoi : Indique un potentiel usage de la batterie https://developer.android.com/guide/components/services
  19. Failles de sécurité Exemple : BlueFrag Android 8 et 9

    Corrigé par Google Faites vos mise à jour de sécurité https://insinuator.net/2020/02/critical-bluetooth-vulnerability-in-android-cve-2020-0022/
  20. Fonctionnement en arrière plan L'application peut scanner en arrière plan

    mais pas émettre Workaround : les applications Android se comportent comme des iBeacons https://blog.human-friendly.com/ios-bluetooth-low-energy-in-the-background
  21. Désactivation Le bouton Bluetooth du centre de contrôle ne désactive

    pas le Bluetooth Il ne permet plus de se connecter à de nouveaux périphériques Il se réactive après 5h https://support.apple.com/fr-fr/HT208086
  22. Désactivation Le bouton des préférences du téléphone désactive bien le

    Bluetooth https://support.apple.com/fr-fr/HT208086
  23. Principe de base Le téléphone génère un identifiant différent (éphémère)

    toute les 30 minutes et le diffuse (broadcast) par BLE Les autres téléphones stockent pour chaque téléphone qu'ils croisent un identifiant éphémère et des meta datas (date, durée...) https://github.com/DP-3T/documents
  24. PEPP-PT Projet européen qui regroupe des initiatives Open Source Finalement

    choix d'une implémentation "centralisée" https://github.com/pepp-pt/pepp-pt-documentation
  25. ROBERT Mon téléphone génère les identifiants éphémères à partir d'un

    identifiant stable et d'un secret partagé avec l'autorité sanitaire L'identifiant stable est connu de moi seul https://github.com/ROBERT-proximity-tracing/documents
  26. ROBERT Si je suis malade j'envoie à l'autorité sanitaire les

    identifiants éphémères (+meta datas chiffrées) des personnes que j'ai croisées Chaque jour je demande à l'autorité sanitaire si mon identifiant stable est à risque https://github.com/ROBERT-proximity-tracing/documents
  27. ROBERT Avec mon identifiant stable l'autorité sanitaire peut savoir si

    un identifiant éphémère m'appartient Elle évalue mon risque avec les meta datas Sans cet identifiant elle ne sait rien https://github.com/ROBERT-proximity-tracing/documents
  28. DP-3T Mon téléphone génère les identifiants éphémères directement Si je

    suis malade j'envoie à l'autorité sanitaire mes identifiants éphémères (sans meta datas) https://github.com/DP-3T/documents
  29. DP-3T Tout les jours tous les identifiants éphémères des personnes

    infectées sont envoyés à tout le monde Si j'en connais un j'évalue le risque avec les meta datas que j'ai stockées https://github.com/DP-3T/documents
  30. DP-3T Low-cost decentralized : un identifiant permet de générer le

    suivant. Si je partages celui du jour où je suis contaminé ce seul identifiant suffit Unlikable decentralized : ... https://github.com/DP-3T/documents
  31. "Centralisé" L'autorité sanitaire stocke des identifiants éphémères de personnes qui

    ont croisé des malades Le rapprochement avec l'identifiant stable est fait une fois par jour coté serveur. Cette information n'est pas stockée "Décentralisé" L'autorité sanitaire stocke tous les identifiants éphémères des malades Les identifiants éphémères des malades sont envoyés sur tous les téléphones. Cette information n'est pas stockée
  32. Calcul du risque Croiser quelqu'un ne suffit pas à être

    en risque : Combien de temps ? À quelle distance ? Croiser quelqu'un qui a croisé quelqu'un peut être un risque Qui valide ? Il faut garantir que la personne qui se déclare malade soit testée dans des conditions correctes Protection avec un code Attention à l'auto- diagnostique
  33. Annonce historique Logo Apple et Google sur le même document

    Protocole commun https://www.apple.com/covid19/contacttracing
  34. Principe Décentralisé / Proche de DP-3T Low-Cost Bas niveau (pas

    d'app) En beta pour l'instant https://www.apple.com/covid19/contacttracing
  35. Google Pas besoin de mise a jour Android. Tout est

    dans les Play Services. Beta fermée Play Services pour l'instant Application de démo https://blog.google/documents/68/Android_Exposure_Notification_API_documentation_v1.2.pdf
  36. Google Pas de permission de localisation Pas besoin de notification

    Anonymisation du type de téléphone https://blog.google/documents/68/Android_Exposure_Notification_API_documentation_v1.2.pdf
  37. Apple iOS 13.5 Beta 3 accessible aux développeurs Pas de

    date de sortie pour l'instant Application de démo https://developer.apple.com/documentation/exposurenotification
  38. Apple Permission différente Background illimité Partage du TxPower Anonymisation du

    type de téléphone https://developer.apple.com/documentation/exposurenotification Correction : le TxPower est disponible depuis iOS 13
  39. Que cherchent-ils ? Pas d'application = rien n'est imposé Configurable

    par les États selon 9 critères = Apple et Google ne sont pas médecins Mode décentralisé imposé https://developer.apple.com/documentation/exposurenotification/enexposureconfiguration
  40. class TemporaryExposureKey { byte[] keyData; long rollingStartNumber; long rollingDuration; @RiskLevel

    int transmissionRiskLevel; } class ExposureInformation { long dateMillisSinceEpoch; int durationMinutes; int attenuationValue; @RiskLevel int transmissionRiskLevel; int totalRiskScore; } https://developer.apple.com/documentation/exposurenotification
  41. struct ExposureKey { let keyData: Data let rollingStartNumber: ENIntervalNumber let

    transmissionRiskLevel: ENRiskLevel } struct Exposure { let date: Date let duration: TimeInterval let totalRiskScore: ENRiskScore let transmissionRiskLevel: ENRiskLevel let attenuationValue: ENAttenuation } https://developer.apple.com/documentation/exposurenotification/building_an_app_to_notify_users_of_covid-19_exposure
  42. Pour qui ? Les États Les ONGs impliqués dans la

    santé Les entreprises reconnues dans la santé Les institutions médicales ou d'enseignement https://developer.apple.com/news/?id=03142020a
  43. Équipe projet Projet piloté par l'INRIA Nombreux acteurs reconnus dans

    leur domaine https://www.inria.fr/fr/stopcovid
  44. Équipe projet Les membres de l’écosystème des contributeurs de StopCovid,

    à la date du 25 avril 2020 Encore plus d'acteurs pertinents https://www.inria.fr/fr/stopcovid
  45. Équipe projet Toutes les bonnes volontés ? Ou un projet

    ingérable ? Il faudra faire un bilan sur la qualité et les délais une fois l'application publiée https://www.inria.fr/fr/stopcovid
  46. Orange négocie avec Apple 2 solutions pour rendre ROBERT compatible

    : Beacon en arrière plan Possibilité de générer les identifiants éphémères + accès aux meta datas https://www.lefigaro.fr/secteur/high-tech/stopcovid-orange-en-charge-des-discussions-avec-apple-20200430
  47. Recul du gouvernement Pour l’heure, compte tenu des incertitudes sur

    cette application, je serais bien en peine de vous dire si elle fonctionne, et comment elle fonctionnera précisément. Je ne doute pas que les ingénieurs travailleront d’arrache-pied et réussiront à faire fonctionner ce projet. https://www.gouvernement.fr/partage/11519-declaration-du-premier-ministre-sur-la-strategie-nationale-du-plan-de-deconfinement-a-l-assemblee
  48. Article de Cédric O Revient sur l'application Défend le choix

    d'un protocole centralisé et dénonce le choix d'Apple et Google sur le fond pas par principe Annonce un test le 11 mai https://medium.com/@cedric.o/stopcovid-ou-encore-b5794d99bb12
  49. App Android Leak et analyse de l'application Android en cours

    de développement https://twitter.com/fs0c131y/status/1256883168185114625
  50. Dinum / BetaGouv Service de l'état à l'origine entre autre

    de data.gouv.fr Héberge un projet Github pour l'application StopCovid Le signal est fort : l'application sera open source https://github.com/betagouv/StopCovid
  51. Dinum / BetaGouv Le projet GitHub est supprimé La DINUM

    sort du projet, il ne s'agit pas forcement d'une remise en cause de l'open source https://www.acteurspublics.fr/evenement/recours-aux-gafam-centralisation-les-choix-techniques-sur-stopcovid-ont-attise-les-tensions-au-sein-de-letat
  52. Risques-tracage.fr Chercheurs (INRIA, CNRS, ...) Liste des attaques "low tech"

    Pointe les limites de tous les systèmes, centralisés comme décentralisés https://risques-tracage.fr
  53. Laquadrature.net Doute du taux d'utilisation et donc de l'efficacité Pointe

    le risque d'aller plus loin https://www.laquadrature.net/2020/04/14/nos-arguments-pour-rejeter-stopcovid/
  54. Singapour TraceTogether première application basée sur ces principes N'a pas

    empêché le confinement Fonctionne "mieux" au premier plan sur iOS https://tracetogether.zendesk.com/hc/en-sg/articles/360044846854-Does-TraceTogether-need-to-be-in-the-foreground-to-work-Can-I-use-other-apps-
  55. Bluetrace Système centralisé Propose un mode BLE+GPS Open Source /

    basé sur Firebase Adopté en Autriche, envisagé en Nouvelle Zélande https://bluetrace.io
  56. Allemagne Initiateur de PEPP-PT 1er mai annonce du support du

    protocole d'Apple et Google https://www.welt.de/wirtschaft/article207653833/Corona-App-Google-und-Apple-liefern-deutsche-Entwickler-muessen-nachziehen.html
  57. UK Application validée par Apple depuis le 4 mai Système

    centralisé https://www.bbc.com/news/technology-52532435
  58. “Si 60% des gens utilisent l'app ça stoppe le virus”

    https://science.sciencemag.org/content/early/2020/04/09/science.abb6936.full
  59. Pas un traitement miracle Est-ce qu'on se pose la bonne

    question ? Une application mobile peut-elle guérir d'une maladie ? L'impact de cette application sur l'organisation des tests est-il positif ?