Expliqué avec des mots simples

L’application StopCovid défraye la chronique à la veille du déconfinement (J-12 !). Je pense rester confiné encore plusieurs jours, voire semaines après. On parle de beaucoup de sujets, il y a beaucoup de débats sur la quantité de prestataires qui sont impliqués. Et je pense que celui-ci s’est décentré, on a oublié le sujet de l’ouverture du code.

Pour information, il n’y a pas de drame, les différents acteurs ont annoncé que le code sera mise à disposition en code ouvert (Par exemple ici). Du coup, ici on explique pourquoi, c’est bien, pourquoi c’est important, pourquoi cela devrait être systématique et pourquoi il ne faut pas qu’ils se rétractent en cours de route.

Parce que je pense qu’il est possible de faire une application qui sécurise la population et sans que l’on y abandonne notre vie privée. Quand j’entends des élus évoquer des méthodes coercitives, même positives (réduction d’impôts, plus de libertés pour ceux qui sont traqués, accès aux tests pour ceux qui sont traqués), j’ai l’impression que l’on confirme les raisons de ne pas faire confiance. Voici donc un petit précis pour comprendre le débat en 3 minutes.

Ouvrir son code ce n’est pas le libérer.

Déjà, il ne faut pas confondre deux sujets : Open-source et logiciel libre. Et ce n’est pas le sujet de les opposer non plus. Chez WeLoveDevs, nous avons open-sourcé et libéré nos profils développeurs. Ça s’appelle react-ultimate-resume et c’est plébiscité par des développeurs du monde entier sur Github.

C’est ouvert et c’est important. Les développeurs peuvent regarder dedans, comment c’est fait, comment leurs données sont présentées. Ils peuvent voir que rien n’est déformé, qu’aucun code malicieux n’est présent dans cette partie du code.

C’est libre. Cela veut dire que les développeurs peuvent le reprendre, le détourner, le modifier pour un autre usage. Dans l’absolu, nos concurrents pourraient le réutiliser, même à des fins commerciales, le copier très rapidement. Mais tout le monde saurait qu’ils nous copient, et tout le mérite nous reviendrait. Par ailleurs, il faudrait que l’ensemble du code qu’ils construisent sur cette brique de code soit libre également.

Finalement, le principal bénéfice, c’est la confiance. Et bien plus, on a des tests sur nos composants qui ont été ajoutés par des gens que l’on ne connait pas du tout à l’autre bout du monde, des traductions dans des pays où WeLoveDevs n’est pas présent. J’ai même entendu Thomas dire : « J’ai fait attention sur ma feature [NDLA : son code], maintenant il y a 1300 personnes qui regardent mon code ».

Quand le code n’est pas ouvert, vous faites confiance à l’éditeur

C’est facile de trouver des idées de scandales liés à du code fermé. Je pense spontanément à iOS qui gardait des historiques de position de ses utilisateurs. C’était peut-être des logs qui n’étaient pas nettoyés, ce n’était pas forcément malveillant. Je suis convaincu des bonnes intentions d’Apple et de chacun des salariés de l’entreprise californienne. Apple veut que ses développeurs livrent les fonctionnalités en temps et en heure pour que leur CEO soit sur une scène, avec un groupe de rock et fasse péter les cotillons. Donc leurs développeurs font du code de moins bonne qualité et livrent des failles de sécurité qui exposent la vie privée de leurs utilisateurs.

L’application Find My iPhone était vulnérable au brute force sur le login. C’est l’attaque la plus simple, la plus facile à exécuter et la plus facile à bloquer. Mais ils n’ont pas pris le temps de faire. Et les célébrités qui ont fait confiance à Apple se sont retrouvées avec des photos compromettantes partout sur le web. Si le code avait été ouvert, on aurait vu cette faille béante au premier jour.

Aujourd’hui, je ne sais pas si Apple a fait évolué ses méthodes de développement, mais ils font de belles publicités. J’y vois un pansement. Et plus le pansement est gros, plus j’imagine que la plaie est béante.

StopCOVID peut être ouvert sans être libre

Tout le code de StopCOVID n’a pas besoin d’être Open Source, mais celui qui tourne sur votre smartphone devrait l’être.

Par exemple, on s’est rendus compte que les premières versions de Twitter remontaient vers le serveur toutes les données de vos contacts. Les développeurs s’étaient dit que croiser la base de vos contacts avec celle des utilisateurs twitter pour vous suggérer des comptes à suivre, irait plus vite sur leurs serveurs. Et ils ont raison. Mais si je l’avais su, je n’aurai jamais utilisé la fonctionnalité. La légende dit que Linkedin fait la même chose, mais à dessin.

Vous devriez savoir ce que l’application de votre smartphone va remonter comme données.

Parce qu’une solution, c’est que votre téléphone dérive une clef. De la même manière que les générateurs de code pour vos accès bancaires génèrent un nouveau code toutes les 5 minutes en dérivant une clef secrète. Ensuite, ces codes seront émis par votre téléphone comme une balise bluetooth (iBeacon). L’application de votre « contact » stocke le code qu’il voit, il ne connait pas votre clef secrète.
Lorsque vous êtes contaminés, votre téléphone envoie sur le serveur tous les codes que vous avez émis sur les derniers jours. L’application de votre voisin télécharge le journal des codes contaminés et lui indique qu’il a été exposé.

À aucun moment vos données « pseudonymisées » ne sont remontées. Les codes ne sont pas associés à des lieux, à des historiques de positions. On ne sait pas si vous êtes allez chez le boulanger, mardi ou jeudi, du point de vue du serveur.

Quelles raisons y’a-t-il de ne pas ouvrir le code ?

On a peur que le reste du monde le copie et qu’on ait payé pour eux ?
On le saura s’ils utilisent notre code, parce qu’il tourne sur des smartphones, on peut observer le code compilé et le reconnaître. C’est juste plus long.
Et dans ce cas là, on leur demandera de contribuer au coût du projet. Et au pire, ça sauve des vies ?

On a peur que le monde entier voit que le code est dégueulasse ?
Au pire, on le corrigera. Il y a plein de bonnes volontés dehors. Si tu ouvres du code qui est pas beau, il y aura des gens pour proposer de l’améliorer.

Dans le cas d’une application fournie par le gouvernement pour ses citoyens, je ne vois pas d’autres raisons de garder le code fermé que de nous cacher quelque chose. Et plus on agite de gros pansements, plus j’ai tendance à me méfier.

Et si vous n’êtes pas développeur, et que vous pensez que le code ouvert ou non, ça reste du charabia, c’est quand même une question de confiance. Il y a des milliers de développeurs dehors qui dénonceront du code qui peut nuire à votre sécurité.

___

Je veux savoir ce que vous en pensez ! C’est un sujet de société important aujourd’hui, qui concerne chaque citoyen, pas que les devs.
Si vous n’êtes pas tech, est-ce que le sujet est bien expliqué ?
Si vous êtes tech, est-ce que vous prendriez le temps de regarder le code ? Est-ce que vous feriez une pull-request ?

Passez une belle journée 🎉

Damien Cavaillès

Author Damien Cavaillès

More posts by Damien Cavaillès

Join the discussion One Comment

  • Valérie dit :

    Je ne suis pas développeur mais je pense avoir compris. Mon avis est que si cela sert à combattre cette m…. il faut avoir confiance et puis je m’en fou qu’on sache quand je vais chez le boulanger !

Leave a Reply