{"id":6761,"date":"2020-05-12T00:17:05","date_gmt":"2020-05-12T00:17:05","guid":{"rendered":"https:\/\/www.erroussafi.com\/?p=6761"},"modified":"2020-05-12T10:30:34","modified_gmt":"2020-05-12T10:30:34","slug":"bluetrace-le-protocole-ayant-inspire-le-maroc-pour-lapplication-wiqaytna","status":"publish","type":"post","link":"https:\/\/www.erroussafi.com\/index.php\/2020\/05\/12\/bluetrace-le-protocole-ayant-inspire-le-maroc-pour-lapplication-wiqaytna\/","title":{"rendered":"BlueTrace, le protocole ayant inspir\u00e9 le Maroc Pour l&#8217;application Wiqaytna"},"content":{"rendered":"<p>Les minist\u00e8res de la sant\u00e9 et de l&#8217;int\u00e9rieur ont r\u00e9v\u00e9l\u00e9 ce lundi 11 mai les premiers d\u00e9tails sur l&#8217;application de tra\u00e7age des contaminations au Covid-19, dans le cadre d&#8217;une conf\u00e9rence de presse en ligne. Cette application a \u00e9t\u00e9 d\u00e9velopp\u00e9 par plusieurs partenaires (En plus du trio Valyans, Aiox-Labs, et le groupe MedTech, d\u2019autres intervenants entrent dans le processus Berkeley Systems, Dial Technologies, Omnishore, OCP \u00e0 travers 1337, Abweb, Hidden Clouders, l&#8217;ADD et l&#8217;ANRT), et servira dans l&#8217;am\u00e9lioration du protocole de tracage des contacts. S&#8217;inspirant et utilisant fortement le protocole BlueTrace d\u00e9velopp\u00e9 par le gouvernement singaporien, cet article a pour but de d\u00e9tailler le protocole BlueTrace.<\/p>\n<p><!--more--><\/p>\n<h2>Fonctionnement G\u00e9n\u00e9ral<\/h2>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">BlueTrace a \u00e9t\u00e9 concu de telle fa\u00e7on \u00e0 ce que les informations personnelles soient collect\u00e9es une seule fois au moment de l&#8217;enregistrement et ne soient utilis\u00e9es que pour contacter les patients potentiellement infect\u00e9s. De plus, les utilisateurs peuvent se retirer \u00e0 tout moment, effa\u00e7ant toutes les informations personnelles et rendant toutes les donn\u00e9es enregistr\u00e9es introuvables. Le suivi des contacts se fait enti\u00e8rement localement sur un appareil client \u00e0 l&#8217;aide de Bluetooth Low Energy, stockant toutes les rencontres dans un journal d&#8217;historique des contacts retra\u00e7ant les rencontres des 21 derniers jours. <\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Les utilisateurs dans le journal des contacts sont identifi\u00e9s \u00e0 l&#8217;aide d &#8216;\u00abidentifiants temporaires\u00bb temporaires d\u00e9cal\u00e9s d\u00e9livr\u00e9s par l&#8217;autorit\u00e9 sanitaire. Cela signifie que l&#8217;identit\u00e9 d&#8217;un utilisateur ne peut \u00eatre v\u00e9rifi\u00e9e par personne d&#8217;autre que l&#8217;autorit\u00e9 sanitaire aupr\u00e8s de laquelle il est enregistr\u00e9.<\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\"> De plus, comme les identifiants temporaires changent r\u00e9guli\u00e8rement, des tiers malveillants ne peuvent th\u00e9oriquement pas suivre les utilisateurs en observant les entr\u00e9es de journal au fil du temps.<br \/>\n<\/span><\/p>\n<h2>Fonctionnement Technique<\/h2>\n<p><span class=\"tlid-translation translation\" lang=\"fr\"><span class=\"\" title=\"\">Le protocole a deux fonctions de communications principales : <\/span><\/span><\/p>\n<ul>\n<li><span class=\"tlid-translation translation\" lang=\"fr\"><span class=\"\" title=\"\">la journalisation locale des utilisateurs enregistr\u00e9s \u00e0 proximit\u00e9 d&#8217;un appareil<\/span><\/span><\/li>\n<li><span class=\"tlid-translation translation\" lang=\"fr\"><span class=\"\" title=\"\">la transmission du journal \u00e0 l&#8217;autorit\u00e9 sanitaire op\u00e9rationnelle, tout en pr\u00e9servant la confidentialit\u00e9.<\/span> <\/span><\/li>\n<\/ul>\n<p><span class=\"tlid-translation translation\" lang=\"fr\"><span title=\"\">Pour ce faire, le protocole peut \u00eatre divis\u00e9 entre les domaines de communication de p\u00e9riph\u00e9rique \u00e0 p\u00e9riph\u00e9rique DDC (Device to Device Communication) et de communication de p\u00e9riph\u00e9rique \u00e0 serveur de rapports DRSC (device to reporting server communication).<\/span><\/span><\/p>\n<p>Il faut savoir que le protocole Bluetooth Low Energy, d\u00e9finit d\u00e9j\u00e0 un protocole d&#8217;\u00e9change d&#8217;informations permettant aux devices bluetooth d&#8217;\u00eatre au courant de leur entourage. Le composant DDC fonctionne au dessus de cettte pile pour d\u00e9finir comment deux entit\u00e9es de tracage reconnaissent la pr\u00e9sence l&#8217;un de l&#8217;autre.<\/p>\n<p>Le composant DRSC utilise HTTPS pour communiquer une chronologies de contacts \u00e0 un serveur centralis\u00e9 appartenant \u00e0 une autorit\u00e9 sanitaire, et ceci, une fois qu&#8217;un utilisateur a \u00e9t\u00e9 test\u00e9 positif \u00e0 une infection.<\/p>\n<p>L&#8217;autorit\u00e9 sanitaire peut alors notifier tous les utilisateurs pr\u00e9sents dans la chronologie sur les 21 jours pr\u00e9cedant le test du contact avec un porteur positif.<\/p>\n<h2>Fonctionnement DRSC<\/h2>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Chaque application mettant en \u0153uvre le protocole BlueTrace communique avec un serveur central exploit\u00e9 par une autorit\u00e9 sanitaire de confiance. <\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Le serveur de rapports est charg\u00e9 de :<\/span><\/p>\n<ol>\n<li><span class=\"tlid-translation translation\" lang=\"fr\"> G\u00e9rer l&#8217;enregistrement initial<\/span><\/li>\n<li><span class=\"tlid-translation translation\" lang=\"fr\">Fournir des identifiants d&#8217;utilisateurs uniques<\/span><\/li>\n<li><span class=\"tlid-translation translation\" lang=\"fr\">Collecter les journaux de contacts cr\u00e9\u00e9s par la partie DDC du protocole. <\/span><\/li>\n<\/ol>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Lorsque l&#8217;utilisateur lance l&#8217;application pour la premi\u00e8re fois, il lui sera demand\u00e9 son num\u00e9ro de t\u00e9l\u00e9phone et un ID utilisateur statique lui sera attribu\u00e9.<br \/>\n<\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Ce num\u00e9ro de t\u00e9l\u00e9phone est utilis\u00e9 ult\u00e9rieurement si l&#8217;application a enregistr\u00e9 une rencontre dans le journal des contacts d&#8217;un patient infect\u00e9. <\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Une fois enregistr\u00e9s, les utilisateurs re\u00e7oivent des identifiants temporaires (TempID) qui les identifient de mani\u00e8re unique et temporaire sur d&#8217;autres appareils. Chaque TempID a une dur\u00e9e de vie de 15 minutes pour emp\u00eacher les parties malveillantes d&#8217;effectuer des attaques de type &#8220;Replay Attack&#8221; ou de suivre les utilisateurs dans le temps avec des identifiants uniques statiques. <\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Les TempID sont g\u00e9n\u00e9r\u00e9s \u00e0 partir de l&#8217;ID utilisateur d&#8217;un utilisateur, de l&#8217;heure de d\u00e9but TempID et de l&#8217;heure d&#8217;expiration TempID, qui sont chiffr\u00e9s et transform\u00e9s en une cha\u00eene encod\u00e9e en Base64 par le serveur \u00e0 l&#8217;aide d&#8217;une cl\u00e9 de chiffrement sym\u00e9trique secr\u00e8te. Pour garantir que les appareils disposent d&#8217;un approvisionnement constant de TempID, en cas de d\u00e9connection internet, les TempID sont envoy\u00e9 \u00e0 l&#8217;appareil par lots.<br \/>\n<\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\">Le TempID est compos\u00e9 de la fa\u00e7on suivante :<br \/>\n<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6763 size-full\" src=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/Capture_tempID.png\" alt=\"\" width=\"494\" height=\"136\" srcset=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/Capture_tempID.png 494w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/Capture_tempID-300x83.png 300w\" sizes=\"auto, (max-width: 494px) 100vw, 494px\" \/><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"fr\"><span class=\"\" title=\"\">Une fois qu&#8217;un utilisateur a \u00e9t\u00e9 test\u00e9 positif \u00e0 l&#8217;infection, l&#8217;autorit\u00e9 sanitaire g\u00e9n\u00e8re un code PIN authentifiant l&#8217;utilisateur pour t\u00e9l\u00e9charger son journal de contacts sur le serveur de rapports.<\/span> <span class=\"\" title=\"\">Dans le cadre du journal, des m\u00e9tadonn\u00e9es sur chaque rencontre sont incluses;<\/span> <span class=\"\" title=\"\">le plus important \u00e9tant l&#8217;horodatage et l&#8217;identifiant de l&#8217;autorit\u00e9 sanitaire (HAI).<\/span> <span class=\"\" title=\"\">Le HAI identifie \u00e0 quelle autorit\u00e9 sanitaire le contact enregistr\u00e9 fait rapport.<\/span> <span class=\"\" title=\"\">Si le HAI repr\u00e9sente une autorit\u00e9 sanitaire \u00e9trang\u00e8re, l&#8217;entr\u00e9e de journal est transmise \u00e0 l&#8217;autorit\u00e9 identifi\u00e9e pour y \u00eatre trait\u00e9e.<\/span> <span class=\"\" title=\"\">Une fois qu&#8217;une autorit\u00e9 sanitaire a filtr\u00e9 les entr\u00e9es de journal pour n&#8217;inclure que les clients \u00e0 domicile, elle d\u00e9chiffre le TempID pour r\u00e9v\u00e9ler l&#8217;ID utilisateur, l&#8217;heure de d\u00e9but et l&#8217;heure d&#8217;expiration.<\/span> <span class=\"\" title=\"\">La date de d\u00e9but et d&#8217;expiration est compar\u00e9e \u00e0 l&#8217;horodatage de la rencontre pour garantir la validit\u00e9, et l&#8217;ID utilisateur est associ\u00e9 \u00e0 un num\u00e9ro de t\u00e9l\u00e9phone.<\/span> <span title=\"\">L&#8217;autorit\u00e9 sanitaire peut alors contacter le num\u00e9ro de t\u00e9l\u00e9phone pour informer un utilisateur d&#8217;un contact potentiel avec un patient infect\u00e9.<\/span><\/span><\/p>\n<h2>Fonctionnement DDC<\/h2>\n<div class=\"text-wrap tlid-copy-target\">\n<div class=\"result-shield-container tlid-copy-target\" tabindex=\"0\">\n<p><span class=\"tlid-translation translation\" lang=\"fr\">La partie DDC du protocole d\u00e9finit la fa\u00e7on dont deux appareils communiquent et enregistrent leurs contacts. Chaque appareil est dans l&#8217;un des deux \u00e9tats, Central ou P\u00e9riph\u00e9rique, l&#8217;\u00e9tat du p\u00e9riph\u00e9rique \u00e9tant d\u00e9fini de fa\u00e7on cyclique.<\/span><\/p>\n<p>En mode p\u00e9riph\u00e9rique, un appareil annonce sa pr\u00e9sence et en mode central, il recherche les appareils qui sont en mode p\u00e9riph\u00e9rique. De plus, certains appareils sont incapables de fonctionner en mode central et fonctionnent donc uniquement en mode p\u00e9riph\u00e9rique, en fonction du mat\u00e9riel.<\/p>\n<\/div>\n<div class=\"result-shield-container tlid-copy-target\" tabindex=\"0\">\n<p><span class=\"tlid-translation translation\" lang=\"fr\"> Une fois que deux appareils se sont d\u00e9couverts, ils communiquent un paquet caract\u00e9ristique contenant des informations sur eux-m\u00eames. Le paquet est form\u00e9 comme un fichier JSON, contenant le TempID, le mod\u00e8le de p\u00e9riph\u00e9rique, HAI et la version du protocole BlueTrace du p\u00e9riph\u00e9rique.<\/span><\/p>\n<p>Lorsqu&#8217;il fonctionne en mode Central, l&#8217;appareil envoie \u00e9galement la force du signal, ce qui permet de calculer la distance approximative entre les deux appareils ult\u00e9rieurement. Voici un exemple de paquet de caract\u00e9ristiques centrales:<\/p>\n<p>{<br \/>\n&#8220;id&#8221;: &#8220;FmFISm9nq3PgpLdxxYpTx5tF3ML3Va1wqqgY9DGDz1utPbw + Iz8tqAdpbxR1 nSvr + ILXPG ==&#8221;, \/\/ TempID<br \/>\n&#8220;md&#8221;: &#8220;iPhone X&#8221;, \/\/ Mod\u00e8le d&#8217;appareil<br \/>\n&#8220;rc&#8221;: -60, \/\/ Force du signal<br \/>\n&#8220;o&#8221;: &#8220;IJ_HAI&#8221;, \/\/ Identifiant de l&#8217;autorit\u00e9 sanitaire<br \/>\n&#8220;v&#8221;: 2 \/\/ Version du protocole<br \/>\n}<\/p>\n<p>Ces caract\u00e9ristiques sont ensuite ajout\u00e9es \u00e0 une base de donn\u00e9es locale sur l&#8217;appareil o\u00f9 elles sont stock\u00e9es pendant 21 jours et peuvent \u00eatre envoy\u00e9es au serveur de rapports ult\u00e9rieurement. L&#8217;appareil contact\u00e9 est \u00e9galement ajout\u00e9 \u00e0 une liste noire locale pendant deux cycles de service afin d&#8217;emp\u00eacher deux appareils de se contacter de mani\u00e8re r\u00e9p\u00e9t\u00e9e, \u00e9conomisant ainsi de l&#8217;\u00e9nergie et du stockage.<\/p>\n<\/div>\n<\/div>\n<h2><span class=\"tlid-translation translation\" lang=\"fr\"><span class=\"\" title=\"\">Callflow :<\/span><span title=\"\"><br \/>\n<\/span><\/span><\/h2>\n<p>Le sch\u00e9ma suivant explique donc les principales \u00e9tapes de communication des devices sur les diff\u00e9rents domaines de communication :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6762 size-full aligncenter\" src=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/CallFlow.png\" alt=\"\" width=\"426\" height=\"617\" srcset=\"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/CallFlow.png 426w, https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/CallFlow-207x300.png 207w\" sizes=\"auto, (max-width: 426px) 100vw, 426px\" \/><\/p>\n<h2>Pour aller plus loin<\/h2>\n<p>En attendant la mise \u00e0 disposition du code source de l&#8217;application marocaine, je vous invite \u00e0 visiter le d\u00e9p\u00f4t de code de l&#8217;impl\u00e9mentation opensource de BlueTrace : OpenTrace<\/p>\n<p><a href=\"https:\/\/github.com\/opentrace-community\">https:\/\/github.com\/opentrace-community<\/a><\/p>\n<p>Les exemples d&#8217;applications sont en kotlin\/swift\/Xcode pour comprendre le code du client. Il existe aussi un exemple d&#8217;impl\u00e9mentation serveur pour voir la gestion de donn\u00e9es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les minist\u00e8res de la sant\u00e9 et de l&#8217;int\u00e9rieur ont r\u00e9v\u00e9l\u00e9 ce lundi 11 mai les premiers d\u00e9tails sur l&#8217;application de tra\u00e7age des contaminations au Covid-19, dans le cadre d&#8217;une conf\u00e9rence de presse en ligne. Cette application a \u00e9t\u00e9 d\u00e9velopp\u00e9 par plusieurs partenaires (En plus du trio Valyans, Aiox-Labs, et le groupe MedTech, d\u2019autres intervenants entrent [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[93,3,5,94,9],"tags":[],"class_list":["post-6761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-covid","category-cyber-securite","category-featured","category-open-source","category-technique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/Trace-Together1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/6761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/comments?post=6761"}],"version-history":[{"count":0,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/6761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media\/6765"}],"wp:attachment":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media?parent=6761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/categories?post=6761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/tags?post=6761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}