vendredi 28 décembre 2007

Tentative d’analogie entre les virus informatiques et biologiques


Une analogie reste souvent le meilleur moyen d’expliquer un concept ou un problème, mais le principe de base est de s’assurer de sa compréhension par son audience. J’avais, il y a très longtemps, essayé de baser l’explication des virus informatiques en partant du virus biologique. Malheureusement, les mécanismes permettant à ce dernier de se multiplier, sont tout aussi complexes et j’avais été amené à détériorer la qualité de leur présentation. En conclusion, l’exercice n’est pas pertinent, mais il pourra peut être permettre à d’autres personnes, d’avancer sur ce sujet. Rien ne se perd tout est recyclable….

--------------------------------
VIRUS INTRODUCTION :

L'analogie biologique :
Depuis plusieurs années, tu es confronté directement ou informé sur la présence de ce phénomène qui se propage à travers les systèmes informatiques. Si tu es un néophyte, tu peux te demander pourquoi une terminologie biologique a été utilisée pour définir un mécanisme informatique. Essayons de reprendre la définition initiale de ce terme et d'en détacher les notions fondamentales.

Définition biologique :
Virus : Minuscule parasite qui pénètre dans la cellule et l'utilise pour se multiplier et contaminer d'autres cellules.
Parasite : élément obligatoirement en association étroite avec un hôte qui l'héberge et se développant aux dépens de ce dernier.
En se référant à cette définition et à la présentation suivante, nous pouvons retenir les principes fondamentaux suivants :
Propagation : le virus biologique se propage par une voie de communication comme l'air, la salive, le sang, le sperme, etc. Ces derniers sont des "vecteurs" qui ne font rien de plus que transporter.
Reproduction : Pour se reproduire (vivre, c'est se reproduire), un virus doit pénétrer dans une cellule vivante (cible).

Pour cela le virus biologique va :
Reconnaître la cible : Le virus reconnaît les cellules qu'il doit infecter ( cellules de la peau ou immunitaires...) grâce à des récepteurs spécifiques à la surface de ces cellules.
Pénétrer la cible : le virus peut rentrer dans la cellule pour coloniser ses gènes qui contiennent les programmes de la cellule. La cellule infectée va alors exprimer ce que le virus lui programme, elle va donc se modifier et cela va l'affaiblir ou la détruire.
Organe : selon l'organe dont le virus a ciblé les cellules, la maladie sera grave (cerveau, foie, système immunitaire) ou bénigne (peau, muqueuses).

Analogie Informatique :

Par analogie, un système informatique est un organisme vivant. Il est composé d'organes appelés " programme ou logiciel ", qui sont composés de modules logiciels (analogie aux cellules). Un virus informatique est un parasite, il n'est pas actif s'il n'est pas hébergé par un module logiciel. En infectant (contaminant) un module logiciel, il pourra affaiblir le système informatique(maladie) ou le détruire en fonction de sa virulence et des objectifs que lui a programmés son créateur. Les virus informatiques sont de plus en plus sophistiqués, mais généralement, ils n'essaient pas de reconnaître leur cible. Ils sont conçus par des personnes connaissant un module logiciel défini (analogie aux gènes) et sont programmés pour utiliser les faiblesses de celui-ci (analogie à la pénétration de la cellule). Aussi, après avoir pénétré un module logiciel, s'il a la possibilité de se propager par une voie de communication (réseau de communication, disquette, etc.), il pourra alors infecter les modules logiciel d'autres ordinateurs(analogie virus du rhume qui se propage dans l'air).

Banalisation du système informatique

Il serait trop complexe de décrire un système informatique dans le cadre de cette banalisation. Contentons-nous de prendre un cas concret : ton PC individuel connecté sur internet.
Ton PC vit.
Le module logiciel qui est le cœur de ton PC se nomme " système d'exploitation ", il gère l'utilisation des éléments physiques de celui-ci (processeur, mémoire, etc.).
Des données arrivent ou sortent de ton PC par ta liaison internet. Le système d'exploitation est comme un facteur, il aiguille les données, mais ne regarde pas le contenu de celles-ci.
Lorsqu'une donnée arrive à ton PC (à l'adresse de ton PC), le système d'exploitation aiguille les données vers des portes internes (port informatique). Derrière ces portes, il y a des modules logiciel (stockage de mail, afficheur de contenu, etc.). Ces modules logiciels sont autonomes ou font partie de logiciels plus gros (gestionnaire de mail, gestionnaire de pages web, etc.), qui sont les organes (analogie biologique) de ton PC.

Donc, le virus informatique inactif est envoyé par une voie de communication (analogie vecteur biologique) à l'adresse Internet de ton PC, vers une porte de celui-ci, derrière laquelle il est sensé avoir un module logiciel connu. Si le module logiciel présent derrière cette porte est bien celui que le Virus est sensé attaquer, alors le virus va corrompre celui-ci et pouvoir ensuite prendre sa place. Plus techniquement, lorsqu'un module logiciel reçoit un virus, il n'en a pas conscience et réalise sur celui-ci, comme pour toutes les données qu'il reçoit, les traitements informatiques pour lesquels il a été créé. Le virus est composé de séries de données qui vont perturber le module logiciel ou l'amener à s'autodétruire. Ensuite le virus aura pris la place du module logiciel, il aura alors toutes les possibilités de réaliser ce pourquoi, il a été conçu comme voler des données, détruire et/ou se multiplier.

Résumé :
Le Virus informatique est un Parasite : il a été programmé pour profiter des faiblesses d'un module logiciel donné. En infectant ce module logiciel, il va détruire ou affaiblir sa Cible. Ensuite, en fonction de l'objectif pour lequel il a été programmé, il pourra se reproduire et se propager vers d'autres PC et/ou essayer de détruire l'ensemble des organismes et données présents sur ton PC.
Si le système informatique était parfait, il n'y aurait pas possibilité de créer des virus car ceux-ci utilisent les faiblesses logiciel dues à de mauvaises conceptions ou programmations.

Exemple : le virus par courriel
Tu as peut être du mal à mettre en relation la notion de virus transmis par courriel et celle que tu viens de lire.
Ce cas utilise exactement, les principes pré-décrits. Un courriel est transmis de l'extérieur vers ta machine depuis un PC corrompu (PC d'un de tes correspondants ou autres). En arrivant dans ton outil de gestion de courriel, le virus peut par exemple, profiter de ses fonctions d'exécution automatique mises en place initialement pour faciliter ton confort d'utilisation. En début d'année, l'exécution automatique a été désactivée dans la plupart des outils de gestion de courriels. Mais étant donné, que le virus est présent dans le courriel souvent comme pièce attachée, il suffit que tu essaies de l'ouvrir ou l'exécuter pour qu'il puisse réaliser ses méfaits, sans que tu t'en aperçoives. Combien de fois, as-tu reçu un courriel d'un inconnu ou d'un de tes correspondants contenant un message du type : " Attention, ton PC n'est pas protégé contre les virus, il faut le mettre à jour en cliquant sur l'utilitaire ci-joint ". Bonne chance à toi si tu exécutes ce dernier.

jeudi 20 décembre 2007

Cadeau de noël, d'été ou d'un autre jour

Ne vous bousculez pas, vous pouvez m’offrir mon cadeau à plusieurs et voici ce que je désire pour Noël.
J’ai des travaux à réaliser donc j’aimerais avoir un de ces quatre robots :



Mais évitez de m'offrir un jouet robot, s'il vous plait.

Ou alors un exosquelette pour éviter de fatiguer :



Ressources :
Aldebaran Robotics : Robot grand public à prix abordable
QRIO : Robot Sony expérimental
Assimo : Honda Vidéos du robot intelligent Honda world and Honda
Toyota : Robot assistant personnel pour humain
Kokoro Actroid DER 2 : Robot apparence humaine
Paro Baby Seal Robot : Robot thérapeutique
Sony Aibo Robot Dog : Petit Chien
Tomy Robot : Robot Jouet
Mitsubishi Wakamaru : Robot pour la maison
Wikipedia : exosquelette
Wikipedia : HAL 5 Hybrid Assistive Limb
Engadget : Sarcos produira les exosquelettes de l’armée américaine en 2008

lundi 17 décembre 2007

George Lucas in Love


Je n’ai jamais été un grand fan de la trilogie cinématographique de Star Wars, mais je ne peux nier l’influence de cette œuvre. Stéphane, m’a envoyé un lien vers le film George Lucas in Love (sous titres en français), réalisé en 1999 par Joe Nussbaum. Ce film est disponible sur le site de France 2 ici. Le scénario de ce court métrage tourné en deux jours, compose dans une atmosphère proche du film Shakespeare in Love, les éléments souches des films de George Lucas. Le jeu d'acteur est merveilleux, un agréable moment.

Ressources :
Wikipedia : Georges Lucas In love
Ma TV Vidéo : Georges Lucas In love
IMBd : George Lucas in Love (1999)
IMBd : Shakespeare in Love (1998)

samedi 15 décembre 2007

Séries americaines et proxy d'accès


En parcourant scoopeo, un des sites de partage de liens francophones les plus populaires (Dig like), je suis tombé sur l'audience des séries américaines proposée par Loeki's Weblog. Un bref parcourt sur les sites Web des séries indiquées, m'a permis de comprendre la différence entre les séries à dimension internationale et celles visant d'abord le public américain. Je vous laisse faire l'exercice, vous comprendrez en regardant les séries en premières positions.

Voir les présentations en ligne :
En me dirigeant vers les présentations de Big Bang Theory : Nerd unite (voir menu Vidéo en haut), une série visant la tranche 15-35 ans et Geeks attardés, je n'ai, comme toutes les personnes situées hors du sol américain, pas été autorisé à visualiser celles-ci.
Pour contourner cette limitation, je vous conseille de regarder le tutorial de Jean Viet qui montre comment configurer son Navigateur Firefox à travers un proxy américain pour les visualiser.

Message personnel : Geeky, Nerdou, Big Bang Theory est pour toi.

Ressources :
Wikipedia :Dig
Social_bookmarking : Social Bookmarking
Scoopeo : Dig like francophone
Loeki's Weblog : Prochaines séries américaines
Big Bang Theory : Nerd Unit
JeanViet : Voir les vidéos réservées aux américains
Freeproxylist : Liste de proxy américains :
Anonymitychecker : Site montrant d'autres proxy

mercredi 12 décembre 2007

Applications en ligne déconnectées

J'avais testé la version de Zoho en octobre 2007 et depuis, cette compagnie à mis à jour son logiciel avec une fonctionnalité nous permettant de travailler même si la connexion Internet est coupée.
Pour tester tout ceci, il vous faut un navigateur récent et installer une fonctionnalité complémentaire nommée Google Gear. Celle-ci permet aux sites Web intelligents ou applications en ligne d'être toujours disponibles même sans connexion Internet.
  • Si vous ne l'avez pas, dirigez-vous ici et installez-la.
  • Relancez votre navigateur
  • Ensuite, allez sur le site zoho et créez-vous un compte
  • Allez dans Zoho Writer, créez un document et insérez-y un peu de texte
  • Cliquez sur le bouton "Go offline"
  • Ensuite, débranchez votre connexion Internet et vérifiez que vous pouvez toujours travailler.
  • Enregistrez l'adresse de la page web (URL en haut du navigateur) et arrêtez votre navigateur
  • Redémarrez-le et retournez à l'adresse enregistrée
  • Vous devez toujours pouvoir travailler alors que votre ordinateur est toujours débranché
  • Reconnectez-vous en pressant sur le bouton Go-Online, votre document va être transféré sur le site Web.
Comme les patrons de Zoho l'expliquent ci-dessous, avec le temps, nous allons probablement avoir un comportement différent car nous devrions prendre l'habitude d'ouvrir notre navigateur pour réaliser la plupart des taches courantes. Mais le problème de disponibilité de la connexion est partiellement résolu, car il faut explicitement demander de passer en mode offline (Hors connexion). En réalité, notre vrai besoin et de travailler avec un document sans se préoccuper de l'état de la connexion Internet. A suivre...

Les personnes qui désirent en savoir plus pourront visionner cette vidéo.




Plus loin :

D'autres applications profitant de Google Gears sont disponibles et par exemple, vous pouvez essayer la combinaison de Grease Monkey et de Google Gear. Un script GM est disponible pour insérer dans les pages de wikipedia quelques bornes HTML ce qui permet d’afficher un bouton de stockage. La suite est identique à l'exercice précédent.

Technique :
La possibilité d’utiliser les applications d’abord téléchargées depuis Internet, offre différents avantages et Google a pris un peu d’avance, mais il n’est pas le seul.
En réalité Google Gears implémente la partie «Client-side session and persistent storage of name/value pairs » de la norme en cours de rédaction par le groupe de travail whatwg qui est en accord avec le W3C (HTML5). L’implémentation de cette partie sera aussi disponible dans la version 3 de Firefox qui est en cours de validation et un des développeurs offre ici, une synthèse des travaux réalisés en les testant avec le client mail Zimbra. A titre d’information, une démonstration de Zimbra est d’ailleurs disponible en ligne.
La framework dojotoolkit, dont une démonstration minimaliste est disponible ici, supporte aussi le mode déconnecté et Slingshot permet de porter les applications Rails afin qu’elles supportent ce mode.
Enfin dans leur combat pour être la framework de développement Web du futur, Adobe avec Air propose aussi ce mode hors-connexion en opposition à Microsoft qui a choisi une autre stratégie, celle de la double application. A travers Silverlight, il propose de réaliser un seul développement et d’obtenir une application lourde et une en ligne.

Vous trouverez ci-dessous une présentation du projet Zimbra sur les outils offline.


Ressources :
Google Gears : disposez de vos applications hors-connexion
Zoho : Applications de bureatique en ligne
Greasemonkey : Extension Firefox pour changer l'aspect et le comportement de vos pages web
Wikipedia : Applications supportant Google gear
GearsMonkey: Google Gears + Greasemonkey to take Wikipedia offline
whatwg: Client-side session and persistent storage of name/value pairs
W3C : HTML5 Working Group
Firefox3 : Version de Firefox supportant whatwg
Bluish Coder : Offline Zimbra with Firefox
Zebra : Application cliente mail en ligne. Démonstration
Dojo : Toolkit Ajax demo client mail
Dojo : Offline
Slingshot : Ruby Rail Offline
Ruby on Rails :
Adobe Air : offline

mercredi 5 décembre 2007

Vulgarisation de la Cryptographie


Différentes questions d'amis m'ont amené à faire un ensemble de réponses de vulgarisation, sur le sujet de la cryptographie ou plus précisément la sécurité des échanges numériques. Loin de moi, la prétention de donner des conseils sur un sujet aussi complexe, mais voici un ensemble de pointeurs vers des interlocuteurs et ressources traitant ce sujet.

Analogie :
Nous avons tous besoins de transmettre des messages vers nos amis et collaborateurs. Par exemple si j'achète une voiture d'occasion par correspondance, j'enverrai différents courriers postaux, dont le contrat qui me lie à cet achat.

Voici mes besoins :
  • Je préfère que le montant de cette transaction ne soit pas connu par les personnes chargées de transporter ce courrier. Il est donc nécessaire de mettre en place un mécanisme le protégeant d'individus susceptibles de le lire : chiffrement,
  • J'ai fait une proposition d'un montant d'achat pour cette voiture par courrier postal et ma plus grande phobie et de voir une personne aussi intéressée par ce véhicule, modifier la valeur inscrite sur mon courrier. Il est donc nécessaire de mettre en place un mécanisme indiquant à mon interlocuteur, le vendeur, que le message n'a pas été modifié, qu'il est intègre : signature,
  • Le vendeur va m'envoyer un courrier ou il est indiqué son accord de transaction, mais il est important pour moi de posséder un document ne pouvant être renié par cette personne. Il est donc nécessaire de mettre en place un mécanisme adéquat pour ne pas permettre au vendeur de répudier son accord ultérieurement(non répudiation) : signature.
Mécanismes :
Il m'est désormais nécessaire de trouver des machines conçues pour atteindre ces objectifs.

Signature :
Je sais signer à l’aide d’un crayon et mon interlocuteur comme tout être humain sait vérifier une signature visuellement. Mais ce n'est pas suffisant, car comment serais-je capable de signer une lettre avec un crayon et m’assurer qu’aucun caractère sera modifié lors du transport de la lettre. On pourrait essayer de signer en travers de la lettre en s’assurant que la signature touche tous les caractères, malheureusement l’opération est trop périlleuse. Alors la solution retenue consiste à laisser le contenu de la lettre intacte et ajouter en bas de celle-ci, une sorte de petit dessin représentant tous les caractères superposés puis de signer par-dessus ce dernier.
Conclusion pour signer une lettre, je prends le contenu, réalise un petit dessin qui est son image et signe par dessus. Mon interlocuteur, reçoit la lettre, prend les caractères, réalise aussi le dessin des caractères et vérifie que c’est bien moi qui l’ai signé.

Chiffrement :
Je dispose d'une sorte de mélangeur dans lequel j'insère mes lettres et des boites pour contenir et expédier le produit de papier brouillé résultant. Mon interlocuteur lui dispose d'une machine identique capable de reconstituer mes lettres dans leur format initial, à partir du brouillé fourni. Ces machines sont fabriquées à des milliers d'exemplaires et une seule pièce est interchangeable : la clé du mélangeur. La clé est une pièce que seuls mon interlocuteur et moi possédons et en conséquence, en utilisant une machine produite à des millions d'exemplaires, seuls lui et moi pouvons lire les messages échangés, c'est notre secret de chiffrement.

Cryptographes :
Les spécialistes en cryptographie nous offrent des expertises sur de telles machines, crayons et vérifieurs, mais transposées au monde numérique. Ils conçoivent les plans des machines et crayons numériques, nommés algorithme. Ils donnent aussi des conseils d'utilisation sur les algorithmes et préconisent les tailles de clés.
Enfin, ils élaborent, les principes de transport du mélange de papier (protocoles), pour éviter les erreurs grossières d'utilisation. Par exemple si vous utilisez la plus belle des machines (algorithme) et une très grosse clé, vous réduirez à néant votre investissement en indiquant sur l'étiquette d'expédition : Proposition d'achat de la voiture de Mx X pour un montant de xxxxx. Votre protocole de communication est dans ce cas de mauvaise conception.

Introduction aux fonctionnements numériques :
Chiffrement : Mon interlocuteur et moi pouvons échanger des documents protégés en confidentialité car ils sont chiffrés grâce à un algorithme et une clé de chiffrement secrète. Seuls lui et moi possédons la clé secrète et donc, aucune autre personne peut lire les documents.

Signature :
Je vais signer non pas à l’aide d’un crayon, mais d’une clé de signature que moi seul possède. Mon interlocuteur sait vérifier que c’est bien moi qui ai signé car je lui avais fourni auparavant une clé de vérification.
Pour signer ma lettre numérique, je prends le contenu, réalise un petit dessin numérique qui est son image (hachage) et le signe à l’aide de ma clé de signature. Mon interlocuteur, reçoit la lettre, prend les caractères, réalise le même hachage et vérifie avec la clé de vérification de signature que ce dessin est bien conforme au mien.
Je peux signer des documents, et mon correspondant peut vérifier à leurs réceptions, l’intégrité des documents, donc s’assurer qu’ils n’ont pas été corrompus sur leurs trajets et s’assurer que c'est moi qui les ai signés. Pour cela je possède une clé de signature nommée clé privée et mon interlocuteur possède la clé de vérification de mes signatures, que l’on nomme clé publique. Il n’y a pas de danger concernant ma clé publique et mon correspondant peut la donner à d’autres personnes, c’est d’ailleurs le principe. Généralement pour éviter les confusions, on attache à la clé publique une étiquette sur laquelle on marque à qui elle correspond. On nomme l’ensemble clé publique et étiquette, Certificat (X509).

Implémentation informatique :
La dernière question est : pourquoi faut-il autant de clés ? On pourrait très bien utiliser le mécanisme de clé publique et privée pour signer et crypter, alors pourquoi en plus avoir une clé secrète de chiffrement ?
Vous venez de toucher du doigt la limite d’une analogie et en réalité les mécanismes mis en œuvre ont des coûts de calcul informatique différents. Le chiffrement avec une clé secrète dit chiffrement symétrique et très rapide et peut coûteux, mais vous comprendrez qu’il est assez dangereux d’avoir un mécanisme basé sur une clé partagée (secret partagé) entre deux personnes. Pour cette raison le chiffrement symétrique est utilisé pour sa performance mais la durée de vie des clés secrètes est courte.
Le mécanisme de cryptographie asymétrique avec une paire de clés, c'est à dire une clé publique (contenue dans un certificat X509) et une clé privée (gardée très précieusement dans un fichier avec mot de passe (pkcs#12) ou dans une carte à puce) est pérenne, mais a le désavantage d’être très coûteux en calcul informatique.
Vous pouvez aussi utiliser une clé publique et une clé privée pour respectivement chiffrer et déchiffrer un document, mais il faut toujours éviter d’utiliser une paire de clés à plusieurs effets. Il ne faut pas utiliser une paire de clés pour faire du chiffrement et de la signature, c’est une mauvaise pratique car ceci à pour effet d’affaiblir le mécanisme cryptographique.

Formation :
Des cours en français (Ars Cryptographica, Cryptotpe, Bibmath , etc.) sont à votre disposition et des ouvrages de références [1,2] peuvent vous permettre d'aller plus loin dans la compréhension de cette spécialité. Mais le plus simple, si vous comprenez la langue anglaise, sera de visualiser un cours en ligne comme celui de Stephen Weis [1,2] dans la collection Theory and Practice of Cryptography, Suresh Ramasamy ou autres vidéos. Et puis, si un jour vous vous sentez l'âme d'un héros, essayez de lire les publications disponibles sur le site Web Cryptology ePrint Archive.

Les préconisations :
Algorithme, taille de clé, protocole.
Le TRES lisible site Keylength nous offre une synthèse des données préconisées par les organismes offrant des recommandations à travers le monde. On retrouve en autres, les données proposées par l'organisme européen Ecrypt (ECRYPT Yearly Report on Algorithms and Keysizes) et français DCSSI (Mécanismes cryptographiques).
Enfin, les protocoles cryptographiques sont standardisés et plusieurs implémentations gratuites sont disponibles comme OpenSSL pour SSL/TLS. Alors si vous avez un besoin dans ce domaine ne vous avisez pas de le réaliser vous-même, ceci n'a aucun intérêt.

Le cauchemar :
Le sujet est complexe et même les personnes les plus averties arrivent à réaliser des produits logiciels audités, vérifiés, mais malgré tout non parfait. Par exemple le mois dernier Adi Shamir expliquait pourquoi un bug de processeur électronique réduisait à néant les implémentations de l'algorithme RSA, s'ils ne réalisaient pas une vérification de résultat.

Ressources :
Wikipedia : Cryptographie
Wikipedia : Chiffrement
Wikipedia : Signature
Wikipedia : Protocole Cryptographique
Wikipedia : X509
Wikipedia : Hachage
Wikipedia : PKCS
Wikipedia : Carte à puce
Wikipedia : Confidentialité
Wikipedia : Intégrité
Wikipedia : Cryptographie Symétrique
Wikipedia : Cryptographies Asymètrique
Wikipedia : TLS/SSL Transport Layer Security
OpenSSL : Implémentation OpenSource de TLS/SSL
Google University : Stephen Weis Part1- Part2 et la suite de Theory and Practice of Cryptography
HITBSecConf2004 : Suresh Ramasamy - Cryptography Demystified
Bibmath.net : La Cryptographie expliquée!
Cryptotpe : TPE Cours cryptographie
Apprendre-en-ligne : Ars Cryptographica
Uwaterloo.ca : Hand Book of Applied Cryptography
USCD : Introduction to Modern Cryptography : Mihir Bellare and Phillip Rogaway
Cryptology ePrint Archive : Cryptology ePrint Archive
Computer History Museum : Where computer History Lives
Keylength : Cryptographique Key Length Recommendation
Ecrypt European Information Society Technologies : Network of Excellence in Cryptology
DCSSI : Direction centrale de la sécurité des systèmes d'information
Cryptome : Adi Shamir Research Announcement: Microprocessor Bugs Can Be Security Disasters
Wikipedia : Adi Shamir
Crypto++ : Wei Dai

lundi 3 décembre 2007

Actualité et blog


Je suis assez surpris par le classement de l’index de développement humain par pays, non pas pour la position de la France que je pensais beaucoup plus loin, mais pour les pays qui occupent les premières positions. Plus il fait froid, plus l’être humain se développe.

Frogsmoke, si vous ne connaissez pas, alors allez le visiter. C’est le blog d’un Hollandais en retraite dans le sud de la France qui se fait plaisir à nous taquiner. Il faut dire qu’avec notre archaïsme légendaire et nos capacités à donner des leçons au monde entier, nous les frog, frouze, maudits français, lui donnons pas mal de matière à blogger.