web-dev-qa-db-fra.com

Comment puis-je savoir qu'un logiciel ne fait que ce que l'auteur prétend?

Sans être un programmeur ou un expert en informatique, comment puis-je savoir si un programme particulier ou un logiciel en général n'a pas de fonctions indésirables cachées compromettant la confidentialité et la sécurité?

91
user3533

Vous pouvez savoir si certains logiciels ne font que ce qu'ils annoncent de la même manière que vous pouvez savoir si la nourriture qu'ils vous servent dans les restaurants est empoisonnée ou non. En termes simples, vous ne pouvez pas, mais la société a mis au point divers plans pour faire face au problème:

  • Vous pouvez écouter des amis et des critiques pour savoir si la nourriture dans un restaurant donné a bonne réputation ou non.
  • Vous pouvez prélever un échantillon et l'envoyer à un laboratoire qui recherchera de nombreuses (mais pas toutes) substances toxiques connues.
  • Vous pouvez demander gentiment si vous pouvez observer le cuisinier pendant qu'il prépare les plats.
  • Le cuisinier a tout intérêt à ce que son client soit satisfait de la qualité de la nourriture, et le bonheur inclut, en particulier, de ne pas être mort.
  • La société punit les empoisonneurs avec la plus grande sévérité et on peut généralement supposer que le cuisinier le sait.
  • Vous avez toujours la possibilité extrême de ne pas y manger si vous êtes trop inquiet.

Tous ces éléments peuvent être directement transposés dans le monde du logiciel. Les méthodes extrêmes pour vérifier la qualité du logiciel et l'adhésion à son comportement publié incluent des choses très chères et ennuyeuses comme Critères communs qui se résument, en gros, à savoir qui a créé le programme et avec quels outils.

Réponse alternative: chaque logiciel a des bugs, il est donc garanti à 100% qu'il fait pas faire exactement ce que c'est censé faire. (Cette affirmation inclut le logiciel qui s'exécute dans la douzaine de petits ordinateurs qui sont intégrés dans votre voiture, soit dit en passant.)

166
Tom Leek

Vous ne pouvez pas, du moins pas avec une précision de 100%. En tant que programmeur, il est très facile de coder tout ce que je veux, et ce n'est pas nécessairement ce qui est annoncé.

Cependant, toutes les activités inattendues ne sont pas malveillantes. Je suppose que vous vous inquiétez davantage des activités malveillantes. Même ce n'est pas 100% possible de détecter tout le temps, mais il y a de l'espoir.

Vous pouvez utiliser un logiciel qui surveille des choses comme le trafic réseau, l'activité des fichiers, etc., pour trouver des indices que le logiciel se comporte de manière inattendue. Par exemple (et je sais que ce n'est qu'un outil de base), vous pouvez utiliser Fiddler pour voir si une application particulière accède à Internet via http (s). (Oui, je sais qu'il existe de meilleurs outils. Fiddler n'est que le premier qui me vient à l'esprit.) Sous Windows, vous pouvez utiliser Process Monitor pour obtenir encore plus d'informations. Des outils similaires existent pour d'autres plateformes.

Il existe également plusieurs autres services que vous pouvez utiliser pour effectuer l'analyse à votre place.

23
David Stratton

D'autant plus que les logiciels deviennent plus gros et plus compliqués, il devient impossible * même aux experts de répondre à cela. Dans cette mesure, la confidentialité et la sécurité d'une application sont mieux gérées en utilisant les méthodes sandbox ou Mandatory Access Control . L'idée derrière ces méthodes est que le logiciel est exécuté dans un système qui contrôle ce qu'il peut faire et que vous lui permettez de faire uniquement ce que vous attendez de lui. Fait correctement, vous pouvez limiter les connexions possibles et être averti si le programme tente d'accéder à des fichiers auxquels vous ne vous attendiez pas. Des méthodes très avancées peuvent être utilisées pour surveiller la mémoire ou décrypter le trafic réseau via un service proxy.

En bref, si vous ne comprenez pas tout ce qu'il fait, la réponse est de restreindre tout ce qu'il peut faire avec quelque chose qu'il exécute à l'intérieur (le système d'exploitation).

9
Jeff Ferland

Dans sa célèbre conférence ACM Turing Award "Reflections on Trusting Trust" (il y a maintenant presque exactement 30 ans!), Ken Thompson a déclaré: "Vous ne pouvez pas faire confiance au code que vous n'avez pas entièrement créé vous-même. Dans la pratique, les logiciels commerciaux ne font pas exception aux autres produits commerciaux dans la mesure où ceux des producteurs ayant de bons noms sur le marché ont généralement une plus grande probabilité d'être meilleurs. Cependant, il n'y a aucune garantie absolue pour cela. Il y a des décennies, j'ai reçu des disquettes d'un producteur connu qui avait un virus. Dans ce cas, je pense personnellement que ce n'était pas un acte malveillant de quiconque à l'intérieur de l'entreprise, mais que certains ordinateurs de l'entreprise ont été infectés par un virus de l'extérieur. Cependant, il n'est évidemment pas possible en général d'exclure à 100% la possibilité d'introduire des backdoors dans le logiciel par des initiés de l'entreprise, que cela soit connu de son PDG ou non. Les portes dérobées pourraient être à mon humble avis un problème extrêmement critique, maintenant que les cyber-guerres se profilent dans le monde. Une agence secrète d'un gouvernement pourrait notamment gérer d'une manière ou d'une autre (via l'argent, la conversion ou même des logiciels malveillants) l'implantation de telles portes dérobées dans certains logiciels qui servent normalement à garantir la sécurité des communications (par exemple, celles relatives aux signatures numériques) et qui sont vendues. à certains pays étrangers non amis ou potentiellement non amis et utilisés par eux et immédiatement ou à certains moments appropriés ("bombes à retardement", etc.) exploitent les portes dérobées pour atteindre leurs objectifs de perturber l'infrastructure critique des nations cibles, etc. etc. Stuxnet, Flame et Gauss sont quelques noms qui devraient donner quelques indications sur les capacités des malfaiteurs potentiels.

7
Mok-Kong Shen

Malheureusement, vous ne pouvez pas ...

Comme un bon programmeur pourrait être appelé assistant par ses utilisateurs, un bon cheval de Troie serait complètement faux un environnement normal pour rendre la victime silencieuse.

Certains virus/chevaux de Troie nettoient le système des victimes afin de

  • s'assurer qu'un autre virus ne cassera pas son travail
  • s'assurer qu'un antivirus ne le trouvera pas
  • faire en sorte que le système d'aide aux victimes fonctionne correctement pour que la victime reste confiante.

Vous ne pouvez donc pas !! En cas de doute, consultez !!!!

1
F. Hauri

Il s'agit finalement de faire confiance. Faites-vous confiance à la réputation de l'entreprise qui publie le logiciel. S'il est open source, est-il utilisé par suffisamment de développeurs pour qu'ils lèvent des drapeaux en cas de problème. Il y a une certaine force dans les chiffres, car un produit couramment utilisé est plus susceptible de faire l'objet de recherches approfondies s'il est digne de confiance. Sauf si vous êtes très paranoïaque, regarder généralement ce que la communauté a à dire sur un logiciel particulier est le meilleur pari, mais il y aura toujours des bugs et des erreurs.

1
AJ Henderson

Comme l'ont souligné d'autres, il n'y a aucun moyen garanti de savoir. La plupart du temps, vous devez faire confiance à l'intégrité et à la réputation du fournisseur. Suivre des pratiques sécurisées, telles que l'installation de logiciels uniquement à partir de sources de confiance, peut aider, mais tout comme dans la vie réelle, nous faisons parfois confiance aux mauvaises personnes.

Au final, je pense que nous devons adopter un certain niveau de paranoïa. Si vous installez une application sur votre téléphone, ne vous contentez pas d'accepter ou de dire oui lorsque le système d'exploitation de votre téléphone vous informe que le téléphone souhaite accéder à vos informations privées, votre emplacement, etc. Demandez-vous pourquoi il a besoin de cet accès. Si vous pensez que l'accès demandé par l'application est justifié en fonction de ce que vous attendez de lui, alors dire oui peut-être OK. D'un autre côté, s'il semble demander l'accès à des informations ou à des services qui sont bien en dehors de ce dont il devrait avoir besoin ou qui l'intéressent, alors soyez un peu méfiant et prudent avant de simplement dire oui.

0
Tim X