web-dev-qa-db-fra.com

Problèmes de confiance relatives à la source ouverte

Deux discussions distinctes ont récemment ouvert mes yeux à un problème que je n'avais pas envisagé - comment confirmer la source ouverte Binary One utilise est basé sur le code source publié.

Il y a une grande discussion fil sur cryptography-randombit basé sur Zooko Wilcox-O'Hearn's, fondateur et PDG de la moins hauturéhority.com, lettre ouverte à Phil Zimmermann et Jon Callas, deux des principes du cercle silencieux , la société qui a rencontré un courrier silencieux qui a abordé le sujet. De plus, un article de Dr. Dobbs publié aujourd'hui intitulé Mettant absolument tout le contrôle de la version l'a touché également.

La question de la préoccupation de cette question est la capacité de recompiler un code open source et d'obtenir les mêmes résultats que le binaire publié. En d'autres termes, si vous recréez le même binaire et le même hachage du code source, il est peu probable qu'il soit identique en raison des différences de chaînes d'outils et de certaines randomisations dans les compilateurs eux-mêmes.

L'article du Dr Dobbs suggère de mettre même la chaîne d'outils sous contrôle de la version pour des raisons de reproductibilité. Jon Callas souligne que, dans de nombreux cas, il peut être impossible de redistribuer la chaîne d'outils pour diverses raisons, y compris des restrictions de licence. À moins que vous ne compiliez vous-même le code, vous ajoutez une étape de confiance à votre ensemble d'hypothèse car le binaire ne peut même pas être recréé par d'autres personnes avec les mêmes résultats.

Je comprends maintenant que c'est un risque naturellement accepté. Ma question est là existe-t-il d'autres discussions ou indicatifs par rapport à la création d'octets de code source pour les octets reproductibles lors de la compilation, éliminant ainsi la nécessité de faire confiance au fournisseur de binaires même ouverts? Comme référence à la discussion de Jon Callas, Ken Thompson a montré "Vous ne pouvez pas faire confiance au code que vous n'avez pas totalement créé vous-même." Quelles sont les réflexions de sécurité sur ce sujet?

15
zedman9991

Oui C'est possible. Mais c'est très difficile, car tout le processus de compilation n'a pas été conçu pour cet objectif. Il est souvent appelé "constructions déterministes", "constructions reproductibles", "Idempotent construit" et constitue un défi.

Bitcoin, TOR , et Debian , tente d'utiliser des constructions déterministes et le processus technique est décrit ici .

Certes, le processus est imparfait, fragile et très difficile à obtenir. Lorsque vous envisagez une plate-forme croisée construit, le problème est encore plus complexe.

11
goodguys_activate

Généralement, si vous n'êtes pas sûr de faire confiance à la compilation de quelqu'un d'autre, vous feriez l'effort de faire votre propre ou de trouver quelqu'un pour l'obtenir de qui vous faites confiance.

Mais êtes-vous sûr que vous pouvez avoir confiance que votre compilateur n'a pas été infecté?

Ce sont des tortues jusqu'au bout. À un moment donné, vous serez toujours en train de devoir faire appel à un jugement et/ou à compter sur des vérificateurs de virus, des pare-feu et d'autres systèmes de sécurité.

après coup - C'est l'une des raisons pour lesquelles les entreprises qui distribuent des versions générales de code source ouverte existent. Ils policent leur code de code, promettent leurs constructions sont propres et (si vous l'achetez), ils fournissent un soutien continu. N'oubliez pas que Stallman's GNU Manefesto a déclaré que le logiciel devrait être gratuit, le support devrait coûter. "

Garder les téléchargements dignes de bande est une forme de support. Vous May Obtenez un bon soutien d'une communauté gratuite ... Mais vous pouvez obtenir un meilleur soutien si vous vous lancez quelques dollars. Choisissez votre point de traitement préféré.

Je suis prêt à utiliser une construction de Linux aléatoire pour pirater une machine secondaire. Je préférerais quelque chose comme Fedora pour la machine personnelle que je compte réellement. Et si je parie une entreprise dessus, j'irais avec la version complète des produits achetés, l'entreprise de Red Hat ou similaire. (Adrobation non implicite; Fedora et Rhel sont simplement de bonnes illustrations de la manière dont une entreprise adresse deux points différents sur ce spectre.)

3
keshlam

L'une des choses fondamentales que vous faites confiance dans un binaire est l'endroit où vous l'avez eu. Si Sourceforge ou Download.com ou celui qui dit qu'il est exempt de virus et c'est assez bon pour vous, allez-y. Vous prenez leur mot dessus.

Si vous ne voulez pas faire confiance à un binaire, la seule autre réponse réelle consiste à compiler du code source. Soit à quelque chose comme Java bytecode que vous pouvez exécuter, ou un pot, OR tout le chemin vers un binaire.

Si vous compilez votre propre binaire, oui, vous risquez de vous retrouver avec quelque chose qui est identique à celui du binaire standard (ce qui signifie que tout est identique, un peu pour le match de bit) génial! Vous devez exécuter le même matériel, la compilation des mêmes processeurs, personne n'avait accidentellement laissé une pause supplémentaire de ligne dans votre copie du code .... Qu'il s'agisse de correspondre ou non, à ce stade, vous faites confiance au code que vous avez il suffit d'avoir (la capacité au moins) à lire. Si vous ne connaissez pas C++ et que vous ne faites pas confiance aux autres personnes qui ont vérifié le code, puis difficiles. Apprenez C++ et votre vétérinaire vous-même.

Tout cela se résume à vous ne pouvez pas vérifier un binaire à moins que tout ne correspond exactement. Vous pouvez toujours vérifier le code open source pour quelque chose. Que vous preniez le temps ou si vous faites confiance à l'analyse que certains, il y a probablement fait est votre choix.

1
PsychoData