cadenas grillage Un logiciel open-source est un logiciel dont le code source est public, lisible et que l’on peut étudier.

Les pirates aussi peuvent donc l’étudier, et repérer les failles de sécurité pour les exploiter.
Pourtant, cela ne signifie pas que le programme est moins sûr que son homologue dont le code source n’est pas disponible.

Imaginons que l’on ait un lecteur d’empreintes digitales pour une porte qui n’accepte que les empreintes d’Alice. Seule Alice est en mesure d’ajouter une personne autorisée à entrer.
Oscar (le pirate) n’est pas autorisé, mais il connait le fonctionnement du lecteur d’empreintes (ce dernier est open-source). Oscar sait donc que seule Alice peut le faire rentrer.

Le système est-il moins sûr ? Non : Oscar ne peut rien faire. Il a beau connaitre le fonctionnement de la machine, il n’a pas les mêmes empreintes digitales qu’Alice.

Si on suppose qu’Alice fait très attention et que ses empreintes ne sont pas dans la nature, alors la porte est totalement sûre.

On voit donc qu’il ne faut pas confondre le système de sécurité lui-même (le lecteur d’empreintes, le cadenas...) et les codes d’accès (les empreintes, la clé...). Ici, le système est sécurisé tant que la clé est bien cachée, et ceci même si on connait le fonctionnement interne du système.

La sécurité dans le mode open-source réside donc dans le fait de bien cacher les clés plutôt que cacher le fonctionnement du système. Et c’est bien : si la clé était sous le tapis, alors on en aurait rien à faire que le lecteur d’empreintes digitales soit open-source ou pas : vu qu’on a la clé il est possible de rentrer dans tous les cas.

D’ailleurs, le fait de publier le code source permet à tout le monde de pointer les erreurs et donc une correction plus rapide des failles éventuelles.

(Après, rien n’empêche un logiciel dont le code-source n’est pas disponible au public d’être sécurisé quand même : c’est juste que cette notion de « sécurisé » ne sera pas attestée par toute une communauté experte, mais seulement par une poignée d’ingénieurs.)

image de Jeremy Brooks

30 commentaires

gravatar
JeromeJ a dit :

Oui sauf, pardon mais je vais jouer le rôle de l'avocat du diable, que :

1) Faut être sûr du fonctionnement. C'est sûr que s'il est sûr alors open-source ou pas, ça n'est pas moins protégé et donc qu'il soit open-source est juste un plus. Mais si on est noob ou paranno et qu'on a peur qu'il y ait des failles qu'on ne connaisse pas, etc, alors c'est mort.

2) Sauf si, comme tu l'as dis, ça permet aussi aux non pirates de venir nous aider à corriger les failles (ou les découvrir), ce qui, en effet, à ce moment là peut être plus intéressant qu'avoir les sources fermées …

Sauf que j'ai encore une objection … ce deuxième point n'est-il pas *surtout* perspicace si on a beaucoup de monde visionnant les sources ?

Si le code source n'est vu que par très peu de personnes, alors il y a moins de probabilité que quelqu'un de bien-intentionné viennent s'intéresser à votre code avant qu'un pirate ne passe (le fait est que le bon programmeur passant par là ne sera pas forcément intéresser par le projet mais le pirate, voyant qu'il s'agit d'un petit projet peu suivit, sera lui, au contraire, apaté par une proie potentiellement plus facile (personne n'est vraiment venu l'aider et sa non popularité peut venir du fait qu'il est encore débutant dans le domaine).

Bon, j'ai fini.

Pardon d'aller à l'encontre de ton article :) que je trouve très chouette. On (j'ai ?) a souvent tendance à *juste* paranoïser et oublier cet autre aspect super intéressant surtout pour ceux un peu plus gros pouvant être sûr que beaucoup de monde liront le code mais voilà, je voulais quand même mettre un warning pour les autres (selon mon humble point de vue).

gravatar
Le dernier matou a dit :

L'article expose un principe découvert dès 1883 par le hollandais Auguste Kerckhoffs: "la sécurité d'un système ne doit pas reposer sur le secret de la méthode de chiffrement" Merci wikipedia

Bravo pour ton site.

gravatar
Kevin a dit :

@JeromeJ : Ce n'est pas totalement faux, mais permets-moi le raisonnement suivant : si un programme open source est vraiment peu utilisé, donc possède peu d'utilisateurs, le vilain pirate aura-t-il un intérêt à perdre du temps et des ressources à développer un malware qui exploite ces failles ?

Est-ce vraiment pertinent de passer des heures à développer une exploit pour un programme utilisé par une centaine d'utilisateurs à tout casser (d'autant qu'il faut encore les débusquer) ? OK, si c'est un programme réseau, un exploit à distance est peut-être possible, mais quand même...

Peut-être est-ce aussi une vision trop "naïve", mais si un bon développeur passe par là et voit un truc incorrect, il y a tout de même de fortes chances pour qu'il envoie un mail ou laisse un commentaire avec la correction à effectuer, à défaut d'un commit de sa part...

Mais je ne te jette pas la pierre : tes propos sont pertinents et méritent réflexion. Enfin quoi qu'il en soit, je reste fermement croché au principe de Kerckhoffs de toute façon ;)

gravatar
Hegurka a dit :

Pas tout-à-fait d'accord : ignorer le fonctionnement d'un système rend beaucoup plus difficile le contournement de ses sécurités - donc l'open-source permet de contourner plus facilement les dites sécurités. Dans ton exemple le pirate sachant que seules les empreintes d'Alice ouvrent la porte il sait donc qu'il lui "suffit" de dénicher ces empreintes. Dans un *closed-source* il ne saura jamais (ou très difficilement) quelles empreintes ouvrent le système ni même si ce sont des empreintes ou quoi ou qu'est-ce qui sont nécessaires.

gravatar
sil a dit :

De même, open source ne veut pas dire gratuit. Il est tout a fait possible de vendre des programmes sous licence GPL, des lors que le code source est fourni avec.

gravatar
Kevin a dit :

@sil : En parlant de ça, je cherche un exemple de logiciel qui fonctionne selon ce principe. Une idée ?

gravatar
Kevin a dit :

@Hegurka : Le plus gros problème du closed-source, c'est que l'éditeur peut prétendre à peu près n'importe quoi pour vendre son produit, sans qu'on puisse prouver ses dires. Du genre : "on a un algo militaire (sic) qui sécurise les données pour que personne n'y accède". Qu'est-ce qui prouve que l'algo "militaire" n'est pas complètement bidon ou obsolète (genre DES) ?

Et puis, l'algo est une chose, mais l'implémentation est tout aussi importante sinon plus ! Tu as beau avoir de l'AES 256 bits qui chiffre les données, si ton programme fait n'importe quoi ou utilise des modes comme CBC pour chiffrer le flux et qu'il n'y a aucune IV, alors la protection ne vaudra pas grand chose...

Pire encore, l'éditeur peut aisément insérer des backdoors dans son produit, rendant inutile et dangereux son utilisation ! Et c'est loin d'être une fiction (cf. Skype), malheureusement.

La sécurité est un domaine vraiment complexe avec plein de petits pièges. N'est pas expert qui veut (coucou les auteurs de programmes de sécurité bidons !).

gravatar
Kevin a dit :

@Hegurka : Je tiens à préciser que le dernier paragraphe n'est pas contre toi, mais tous ces développeurs qui, parce qu'ils ont mis "AES" et "asymétrique" sur la fiche du produit, s’autoproclament "experts en sécurité" !

gravatar
Le Hollandais Volant a dit :

@JeromeJ : un noob produira un code source bugué même s'il ne fait pas de l'open source.

Pour un pirate expérimenté, le fait que le code soit open-source ou pas ne changera pas grand chose, en plus : ça prendra plus de temps c'est tout...

@Hegurka : mouais, tu viens de soulever une faille. Je corrige mon système maintenant : il n'accepte que les empreintes d'une personne, sauf que le nom de cette personne est lui aussi chiffré, tout comme la liste des empreintes autorisées.

Oscar ne sait plus rien maintenant, et l'application est toujours open-source.

Et ton intervention a permi de corriger une faille.

gravatar
Mush a dit :

Quelques éléments de réflexion:

Le système android pour mobile est un nid à malware en tout genre, entre autre car c'est un système ouvert.
Le système IOS pour mobile est un système fermé avec très peu de malware.
Le système Windows pour PC est un système fermé et est un nid à malware.
Le système Linux pour PC est un système ouvert avec très peu de malware...

gravatar
nucl3arsnake a dit :

@Mush : Je trouve que c'est pas tant la quantité de malware qui compte que les dégats. A mon avis il y a plus de malwares dévastateurs sous GNU/Linux que sous Windows.

Tu oubli aussi tous les *BSD =D

gravatar
Hegurka a dit :

@Le Hollandais Volant : Merci et tu as raison, mais cela n'allait pas sans le dire :) Et je suis aussi d'accord avec ce que dit Kevin !

gravatar
Hegurka a dit :

Il faudrait maintenant imaginer que la "Machine" dans Person of interest est en open-source... Le système fonctionnerait-il encore ?

gravatar
Minipipo1 a dit :

@Mush :

Le système android pour mobile est un nid à malware en tout genre, entre autre car c'est un système ouvert.

Il y a plus de malwares mais non pas parce que c'est open-source, mais parce que c'est plus ouvert dans le sens que tu peux faire plus de choses. Les applications ont beaucoup plus de permissions, en effet les malwares n'exploitent pas vraiment des failles du système mais comptent sur la vulnérabilité de l'utilisateur qui autorise plein de choses aux applications.
Android aurait pu être un système fermé mais open-source, nous n'aurions alors pas de malwares je pense ;)

gravatar
Julien et Nel a dit :

Pour avoir dans mes contacts à la fois des codeurs et hackeurs. Je pense qu'il est peu simple de simplifier "lammer", "black hat" ou autre idiots du sombre coté comme "pirates". Un pirate peut très bien être un "white hat", "un bidouilleur" ou autre personne qui souhaite améliorer un système, un script, une application, un logiciel, etc. Un pirate peut être aussi une personne qui dépasse les limites légales ou autorisés par défi ou pour mettre ses services dans une bonne cause. L'open-source ou le libre permet justement d'être des pirates et pirater le monde à notre façon. Ça permet de voir le code dans une autre logique et autre une vision, le piratage devient ici partage, amélioration, évolution et autre .

L’open source est donc une porte ouverte aux pirates qui souhaitent utiliser leurs compétences dans des projets. La seule différence, c'est qu'ils peuvent bidouiller dans le code librement à la différence des logiciels propriétaires. L'open-source permet simplement de faire sauter les limites en délivrant directement les sources, mais un pirate aimera dépasser les limites qu'on lui ouvre ou non.

Quand on ferme un système, un logiciel ou autre ... on ne fait qu'empêcher les personnes qui souhaitent pirater celui-ci pour l'améliorer et c'est comme ça qu'on se trouve forcément avec des blaireaux qui ne proposent que des mauvais trucs. L'opensource permet d'attirer les deux genres de personnes, sauf que le nombre de personnes qui voudront y contribuer pour des bonnes intentions sera beaucoup plus élevé que si les sources étaient fermer. D'ailleurs je préfère la logique "open source" ou la logique des "cc" que la logique "libre", car la logique "open source" ou "cc" est plus proche de l'esprit "libre", je trouve.

gravatar
JeromeJ a dit :

Dans certains cas, en plus de ce que j'ai dis dans mon premier commentaire … il ne reste plus qu'à dépasser le stade du "Oups ! J'ai tout codé pour moi et pas forcément très proprement car je pensais pas qu'un jour je publierais mon code, oups :$ la honte".

Surtout lorsqu'on sait qu'on s'est parfois contenté du "tant que ça marche" car 1) le langage nous le permettait (php) et 2) qu'on a bouclé le code à la bourre car on en avait marre de se taper la tête contre le mur depuis 2 heures à cause de ce ***** de code ^^

gravatar
fdovero a dit :

@Mush : Pour répondre à la question des malwares (en paraphrasant Minipipo1) :
Je vois dans les réponses a cet article que l'on fait l'amalgame entre le système cible du programme malveillant avec la faille de sécurité qui lui a permis de s'installer. Je m'explique : les auteurs de malwares n'ont pas à avoir le code source du système cible pour l'écrire. En effet un malware est écrit en C/C++/Java/<insert what you want> puis compilé vers le système cible.

Cette précision est utile pour bien distinguer la différence entre ouverture du code du système (pour reprendre l'exemple qui m'a fait réagir) avec le nombre de malwares du fait que l'utilisateur installe des applications (au code probablement fermé, ce qui peut rendre le malware difficile à trouver) qui contiennent un programme malveillant. Rien ne m'empèche de coder un malware sous IOS mais le distribuer est une autre histoire (à cause du système de distribution fermé d'Apple et non du code source d'IOS) mais on a vu des exemples dans des applications de lampe-torche.

D'ailleurs pour reprendre un exemple, on voit beaucoup de malwares transmis par des failles de sécurité dans IE, Adobe Reader ou Flash (qui sont des vecteurs de transmission et non pas une cible), ce qui prouve également que le postulat « code caché = application sécurisée » est faux.

gravatar
Hegurka a dit :

@fdovero: ok pour le fake du postulat que tu évoques, mais entre une appli sécurisée open source et la même appli - je dis bien la même, donc tout autant sécurisée - elle le sera d'autant plus qu'elle sera *closed source* !
Si ça irrite les neurones sous prétexte d'idéalisme, de *liberté*, d'*ouverture* ou je ne sais quoi, moi ça ne me fait ni chaud ni froid. Franchement, ce n'est pas parce que je PEUX voir comment quelque chose est fait que je VOIS obligatoirement ou que je suis A MEME DE JUGER si la chose est valable ou non. C'est un peu plus compliqué que ça. Par contre si ça marche excellemment et que c'est fermé, je suis certain que n'importe qui ne va pas aller bidouiller dedans et peut-être y introduire des saloperies.
Bon je sors...

gravatar
fdovero a dit :

@Hegurka : Je suis d'accord pour dire que le fait que l'application soit « closed source » ou « open source » n'influe en rien sur sa sécurité (et effectivement en matière de sécurité l'idéalisme passe en second plan). C'est d'ailleurs ce que dit Timo dans son post : le fait que le code soit ouvert ne veux pas dire que la sécurité est faible (et il ne tombe pas dans le travers de prétendre qu'un code fermé implique une sécurité défaillante).

Mais comme tu le fais remarquer c'est bien plus compliqué que ça n'y parait (la faille récente de PostgreSQL le montre également). Prétendre à un code sûr à 100% est illusoire et malgré le fait que le code source ne soit pas disponible, les méthodes de rétro-ingénierie permettent aux hackers les plus talentueux de trouver des dizaines de failles.

Je ne crois pas que cacher ces failles empêche de les trouver. Je pense au contraire que de faciliter la revue de code par un maximum de monde (personne n'a de connaissances exhaustives de tout ce qui se fait) accélère le processus de recherche et de correction.

gravatar
Hegurka a dit :

@fdovero: Je pense qu'on est d'accord ! Au-delà, la discussion aurait besoin de contextes, de cas particuliers avec ou sans traitements de données, selon le but de tel ou tel programme et/ou l'utilité (ou pas) de la sécurité. C'est un sujet complexe - mais je repose ma question à propos de Person of interest (je ne suis pas sponsorisé hein !) : dans la "Machine" de cette série, un open source aurait-il même un sens ?

[Contexte contexte, est-ce que j'ai une gueule de contexte !?]

gravatar
quad course a dit :

Je suis plutôt d'accord avec Hegurka, mais bon les autres thèses peuvent légitimement se comprendre aussi, encore un sacré débat tout ça...

gravatar
Chuck a dit :
Pas tout-à-fait d'accord : ignorer le fonctionnement d'un système rend beaucoup plus difficile le contournement de ses sécurités

C'est pour ça que la plupart des jeux sont crackés en quelques heures...

Cherches des infos sur la façon dont le BIOS des premiers PC à été reproduit par reverse engineering alors que tout était closed source et gravé dans le silicium.

Tu oublies également que la plupart des failles qui sont trouvées actuellement le sont sur des logiciels closed source, un exemple au hasard ;) (l)adobe flash.

C'est vraiment l'argument le plus moisi qui peut être utilisé pour justifier le closed source.

Tu oublies que le langage machine est toujours accessible, et qu'il y a des gens qui parlent couramment langage machine...

Il y a même des programmes qui à partir du langage machine te génère un code source en C/C++.

C'est fou ce que la propagande rend naïf.

gravatar
sil a dit :

@Kevin : Facile ! Red Hat qui fait payer ses distributions Linux. Il serait facile de compiler les dites distributions et de les mettre à disposition sous un autre nom. Cependant, la valeur ajoutée n'est pas le code en lui-même puisque d'autres distributions existent, mais les services de support associés.

gravatar
Hegurka a dit :

@Chuck: "beaucoup plus difficile" ne signifie pas "impossible", cool !

Mais dans les grandes entreprises par exemple, les informaticiens ont accès aux sources (c'est la moindre des choses !). Qu'est-ce que ça *assure*, *renforce*, *sécurise* ? Rien ! Les mauvais font du mauvais boulot et parfois les bons en font du bon ! C'est *open source* si on veut - à l'intérieur de l'entreprise. Non ? Tout est relatif quoi :)

gravatar
tudok a dit :

@Chuck : "la plupart des jeux sont crackés en quelques heures..."

Sais-tu seulement le faire ? Je pense que non pour écrire cela.

gravatar
JeromeJ a dit :

Bon, allez, j'ai un exemple pour appuyer mes dires :

http://www.olissea.com/purifiedfulltextrssfeed.php

J'en avais parlé ici http://www.olissea.com/mb/links/1/?PGvZ5w

Bon, si je ne suis pas totalement à côté de la plaque, mon code tel qu'il était permettait entre autres à qui voulait de l'utiliser pour faire des attaques XSS sur mon site, non ?

Étant donné que je pense que la majorité de mon site est bien protégé contre ce type d'attaque, un attaquant tombant sur cette page (à moins qu'il vérifie tous les formulaires systématiquement) ne se doutera pas forcément de la faille … maintenant si on le lui la montre sous le nez, c'est tentant !

Et là où le bat blesse, c'est que personne n'est venu me le dire :p

En résumé je dirais que si vous êtes plus ou moins sûr d'avoir assez de trafic/popularité/whatever, vous n'avez plus d'excuse pour vous cacher derrière le closed source :) choisissez l'open source !

Sinon … restez vigilant et j'espère que vous savez ce que vous faites ! Car il est très facile de faire des programmes fonctionnels en PHP mais les sécuriser, c'est presque un métier ^^

Les commentaires sont fermés pour cet article