A place to cache linked articles (think custom and personal wayback machine)
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.html 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>10 prérequis pour l'évaluation d'applications de "suivi de contact Coronavirus" (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://blog.keiruaprod.fr/2020/04/08/prerequis-pour-appli-de-suivi-de-contacts.html">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>10 prérequis pour l'évaluation d'applications de "suivi de contact Coronavirus"</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://blog.keiruaprod.fr/2020/04/08/prerequis-pour-appli-de-suivi-de-contacts.html" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Cet article est la traduction d’<a href="https://www.ccc.de/en/updates/2020/contact-tracing-requirements">un article du 6 avril 2020</a> écrit par le <a href="https://en.wikipedia.org/wiki/Chaos_Computer_Club">Chaos Computer Club</a> sur les conditions que devraient respecter une application de suivi de contact dans le cadre du Covid-19. Les experts de la surveillance − <a href="https://standblog.org/blog/post/2020/04/08/Covid-19-et-la-surveillance">Tristan Nitot</a>, <a href="https://twitter.com/oliviertesquet/status/1247823274597404672">Olivier Tesquet</a>, <a href="https://twitter.com/amaelle_g/status/1247928366621167616">Amaelle Guiton</a>… − constatent tous la même chose. Les idées évoluent vite dans l’esprit du public et du gouvernement dans ce qu’il est tolérable d’accepter de changer pour sortir au plus vite de la crise sanitaire, et les risques de dérive sont majeurs. Si nous devons aller dans la direction d’une telle application, il faudra être très vigilant pour ne pas avancer un grand coup et dans la durée vers une société où la surveillance est encore plus marquée qu’aujourd’hui.</p>
  69. <p>Les remarques du CCC me paraissent donc essentielles et j’aimerais qu’un maximum de gens les aient en tête au cours des discussions qui, en fait, ont déja démarré. Voici la traduction, l’<a href="https://www.ccc.de/en/updates/2020/contact-tracing-requirements">original est ici</a>. Ce texte étant open source (<a href="https://github.com/Keirua/blog.keiruaprod.fr/">là</a>), vous pouvez suggérer des améliorations.</p>
  70. <hr/>
  71. <p>Les «applications Corona» sont sur les lèvres de tout le monde comme un moyen de contenir l’épidémie du SARS-CoV-2. Le CCC publie 10 prérequis pour leur évaluation d’un point de vue technique et sociétal.</p>
  72. <p>Actuellement, le «suivi de contact» supporté par la technologie est considéré comme un moyen de lutter contre la diffusion du SARS-CoV-2 d’une manière plus ciblée (ndt: que par le confinement global). L’idée générale est de permettre une plus grande liberté de mouvement pour la majorité de la société à travers un suivi et une interruption rapide des chaines d’infection. Les contacts des personnes infectées devraient être alertées plus rapidement et ainsi pouvoir se mettre en quarantaine plus rapidement. Cela permet, ensuite, de prévenir les avancées des contaminations. Une «appli Corona» ne nous protègerait ni nous, ni nos contacts: elle serait conçue pour casser des chaines d’infection en protégeant les contacts de nos contacts.</p>
  73. <p>Il y a un grand nombre de suggestions pour l’implémentation technique de ce concept. Ces propositions vont de systèmes dystopiques de surveillance totale à des méthodes ciblées, complètement anonymes pour alerte des personnes potentiellement infectées sans connaitre spécifiquement qui que ce soit.</p>
  74. <p>En principe, le concept d’une «appli Corona» implique une énorme risque à cause des données de contact et de santé qui sont collectées. En même temps, c’est une opportunité pour les concepts et les technologies de «vie privée par design» (privacy-by-design), développés par les communauté crypto et vie privée au cours des dernières décennies. Avec l’aide de ces technologies, il est possible de gérer le potentiel épidémiologique du suivi de contacts sans créer un désastre pour la vie privée. Pour cette raison seule, tous les concepts qui brisent ou même mettent en danger la vie privée doivent être strictement rejetés.</p>
  75. <p>Dans ce qui suit, nous soulignons les prérequis minimum sociaux et technologiques pour de telles technologies. Le CCC se voit lui-même comme un conseiller et un observateur dans ce débat. Nous ne recommanderons pas d’appli spécifique, de concepts ou de procédures. Cependant nous mettrons en garde contre l’usage d’applications qui ne respecteront pas ces prérequis.</p>
  76. <h2 id="i-prérequis-sociétaux">I Prérequis sociétaux</h2>
  77. <h3 id="1-sens-épidémiologique-et-but">1 Sens épidémiologique et but</h3>
  78. <p>Le prérequis de base est que le «suivi de contact» peut réellement aider significativement et de manière vérifiable à réduire le nombre d’infections. La validation de cette affirmation est la responsabilité de l’épidémiologie. S’il s’avère que le «suivi de contact» par application n’est pas utile ou ne remplit pas ce but, l’expérience doit être arrêtée.</p>
  79. <p>L’application et toutes les données collectées doivent être utilisées exclusivement pour combattre les chaines d’infection du SARS-CoV-2. Tout autre usage doit être empêché techniquement aussi loin que possible et être interdit légalement.</p>
  80. <h3 id="2-volontariat-et-liberté-pas-de-discriminations">2 Volontariat et liberté, pas de discriminations</h3>
  81. <p>Pour une efficacité épidémiologique significative, une appli de «suivi de contact» nécessite un haut degré de dissémination dans la société. Cette large distribution ne doit pas être accomplie par la force, mais seulement en mettant en oeuvre un système de confiance qui respecte la vie privée. Dans cette optique, il ne doit pas y avoir de barrière par des tarifs ainsi qu’aucune incitation financière à l’usage.</p>
  82. <p>Les gens qui refusent d’utiliser l’application ne doivent pas subir de conséquences négatives. S’en assurer est une question de politique et de législation.</p>
  83. <p>L’application doit régulièrement informer les gens de son fonctionnement. Elle doit permettre simplement d’être temporairement désactivée ou supprimée de manière permanente. Les mesures restrictives, par exemple de type «bracelet électronique», pour controller l’application des restrictions de contact, ne doivent pas être implémentées.</p>
  84. <h3 id="3la-vie-privée-est-fondamentale">3 La vie privée est fondamentale</h3>
  85. <p>C’est seulement avec un concept convaincant basé sur le principe de vie privée que l’acceptation sociale pourra être obtenue.</p>
  86. <p>En même temps, des mesures technologiques tel que le chiffrement ou les technologies d’anonymisation doivent assurer la vie privée des utilisateurs. Il n’est pas suffisant de se baser sur des mesures organisationnelles, la “confiance” et des promesses. Des bloquages organisationnels ou légaux contre l’accès aux données ne doivent pas être considérés comme suffisants dans le climat social actuel de pensée d’état d’urgence qui rend possible des exceptions extrèmes aux droits constitutionnels à travers l’État d’Urgence Sanitaire.</p>
  87. <p>Nous rejetons l’implication de sociétés développant des technologies de surveillance car c’est du «covid-washing» (ndt: les présenter sous un jour favorable car ils contribuent à lutter contre l’épidémie). Un principe de base est que les utilisateurs ne devraient pas devoir “faire confiance” à qui que ce soit ou à des institutions concernant leurs données, mais doivent pouvoir s’assurer d’une sécurité technique, documentée et testée.</p>
  88. <h3 id="4-transparence-et-vérifiabilité">4 Transparence et vérifiabilité</h3>
  89. <p>Le code source complet de l’application et de l’infrastructure doit être librement accessible sans restrictions d’accès pour permettre un audit par les parties intéressées. Des techniques d’industrialisation reproductibles doivent être utilisées pour que les utilisateurs puissent s’assurer que l’application qu’ils téléchargent a bien été construite à partir du code source audité.</p>
  90. <h2 id="ii-prérequis-techniques">II Prérequis techniques</h2>
  91. <h3 id="5pas-dentité-centrale-de-confiance">5 Pas d’entité centrale de confiance</h3>
  92. <p>Un suivi de contact complètement anonyme sans serveurs centraux omniscients est techniquement possible. Faire dépendre la vie privée des usagers sur la confiance et la compétence des opérateurs des structures centrales n’est techniquement pas nécessaire. Les concepts basés sur cette “confiance” doivent être rejetés.</p>
  93. <p>Par ailleurs, la sécurité promise et la confiance dans les systèmes centralisés ne peut en réalité pas être vérifiée par des utilisateurs. Les systèmes doivent de ce fait être conçus pour garantir la sécurité et la confidentialité des données des utilisateurs exclusivement à travers leur chiffrement, leur concept d’anonymisation et la vérifiabilité du code source.</p>
  94. <h3 id="6-économie-des-données">6 Économie des données</h3>
  95. <p>Seul un minimum de données et les métadonnées nécessaires pour le but de l’application doivent être stockées. Cette contrainte empêche la collecte centrale de toute donnée qui n’est pas spécifique à un contact entre des personnes et sa durée.</p>
  96. <p>Si des données additionnelles, tel que les informations de localisation, sont enregistrées localement sur les téléphones, les utilisateurs ne doivent pas être forcés ou tentés de transmettre ces données à des tiers, ni même de les publier. Les données qui ne sont plus nécessaires doivent être détruites. Les données sensibles doivent aussi être chiffrées localement sur le téléphone.</p>
  97. <p>Pour la collecte volontaire de données dans une optique de recherche épidémiologique, qui va donc au-delà du but initial du suivi de contact, un consentement clair et séparé doit être explicitement obtenu dans l’interface de l’application et il doit être possible, à tout instant, de le révoquer. Ce consentement ne doit pas être un prérequis pour l’utilisation de l’application.</p>
  98. <h3 id="7-anonymat">7 Anonymat</h3>
  99. <p>Les données que chaque appareil collecte à propos des autres appareils ne doivent pas permettre de désanonymiser leurs utilisateurs. Les données que les utilisateurs transmettent à propos d’eux-même ne doivent pas permettre de les désanonymiser. Il faut de ce fait que le système puisse être utilisé sans collecter ou permettre de déduire des données personnelles, quelle qu’en soit le type. Ce prérequis interdit l’usage des informations uniques d’identité.</p>
  100. <p>Les identifiants pour les suivi de contact par des technologies sans fil (par ex. Bluetooth ou ultrason) ne doivent pas permettre de remonter aux personnes et doivent changer régulièrement. Pour cette raison, il est également interdit de connecter ou de dériver ces identifiants avec des données de communication qui les accompagnent, tel que des numéro de téléphones, adresses IP, identifiants des appareils…</p>
  101. <p>Le système doit être conçu de telle manière à ce que les profils de mouvement (suivi de localisation) ou les profils de contacts (motifs des contacts fréquents qui permettent de remonter à des personnes spécifiques) ne puissent être établis, intentionnellement ou non. Des méthodes tel que la centralisation de données GPS ou de localisation, ou lier les données à des numéros de téléphone, des comptes sur les réseaux sociaux et autres doivent donc être rejetés par principe.</p>
  102. <h3 id="9-non-rapprochement-des-détails-techniques-aux-données-personnelles">9 Non rapprochement des détails techniques aux données personnelles</h3>
  103. <p>La conception de la génération de ces identifiants temporaires doit être telle que ces identifiants ne puissent pas être interprétés et liés sans connaissance d’une clé privée controllée par les utilisateurs. Ils ne doivent de ce fait pas être dérivés à partir d’une autre information identifiant l’utilisateur, directement ou indirectement. Indépendemment du fait que les identifiants sont communiqués lors d’une infection, il doit être exclus que les données collectées de «suivi de contact» puissent être chainées sur de longues périodes de temps.</p>
  104. <h3 id="10-non-observabilité-des-communications">10 Non observabilité des communications</h3>
  105. <p>Même si la transmission d’un message est observée à travers le système (c’est à dire à partir des métadonnées de communication), il ne doit pas être possible de conclure qu’une personne est infectée ou qu’elle a eu des contacts avec des personnes infectées. Il faut s’en assurer à la fois vis-à-vis des autres utilisateurs, de l’infrastructure, des opérateurs du réseau et des attaquant qui auraient pénétré dans ces systèmes.</p>
  106. <h2 id="rôle-du-ccc">Rôle du CCC</h2>
  107. <p>Depuis plus de 30 ans, le CCC s’est engagé dans un travail volontaire à l’intersection de la technologie et de la société. Nos <a href="https://www.ccc.de/en/hackerethics">principes éthiques</a> sont de défendre la vie privée, la décentralisation et l’économie de la donnée − et de lutter contre toute forme de surveillance et de contrainte.</p>
  108. <p>Sans affirmer être exhaustifs, dans cet article nous donnons les prérequis minimum en matière de vie privée que doit avoir une «appli Corona» afin d’être socialement et technologiquement tolérable par tous. Le CCC ne fournira jamais, dans aucune circonstance, une approbation, une recommandation, un certificat ou un test d’une implémentation concrète.</p>
  109. <p>Cette responsabilité incombe aux développeurs des systèmes de suivi de contact qui devront prouver qu’ils respectent ces prérequis ou les faire vérifier par des tiers indépendants.</p>
  110. </main>
  111. </article>
  112. <hr>
  113. <footer>
  114. <p>
  115. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  116. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  117. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  118. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  119. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  120. </p>
  121. <template id="theme-selector">
  122. <form>
  123. <fieldset>
  124. <legend>Thème</legend>
  125. <label>
  126. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  127. </label>
  128. <label>
  129. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  130. </label>
  131. <label>
  132. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  133. </label>
  134. </fieldset>
  135. </form>
  136. </template>
  137. </footer>
  138. <script type="text/javascript">
  139. function loadThemeForm(templateName) {
  140. const themeSelectorTemplate = document.querySelector(templateName)
  141. const form = themeSelectorTemplate.content.firstElementChild
  142. themeSelectorTemplate.replaceWith(form)
  143. form.addEventListener('change', (e) => {
  144. const chosenColorScheme = e.target.value
  145. localStorage.setItem('theme', chosenColorScheme)
  146. toggleTheme(chosenColorScheme)
  147. })
  148. const selectedTheme = localStorage.getItem('theme')
  149. if (selectedTheme && selectedTheme !== 'undefined') {
  150. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  151. }
  152. }
  153. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  154. window.addEventListener('load', () => {
  155. let hasDarkRules = false
  156. for (const styleSheet of Array.from(document.styleSheets)) {
  157. let mediaRules = []
  158. for (const cssRule of styleSheet.cssRules) {
  159. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  160. continue
  161. }
  162. // WARNING: Safari does not have/supports `conditionText`.
  163. if (cssRule.conditionText) {
  164. if (cssRule.conditionText !== prefersColorSchemeDark) {
  165. continue
  166. }
  167. } else {
  168. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  169. continue
  170. }
  171. }
  172. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  173. }
  174. // WARNING: do not try to insert a Rule to a styleSheet you are
  175. // currently iterating on, otherwise the browser will be stuck
  176. // in a infinite loop…
  177. for (const mediaRule of mediaRules) {
  178. styleSheet.insertRule(mediaRule.cssText)
  179. hasDarkRules = true
  180. }
  181. }
  182. if (hasDarkRules) {
  183. loadThemeForm('#theme-selector')
  184. }
  185. })
  186. </script>
  187. </body>
  188. </html>