Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for January, 2009

Niveau :      
Résumé : DES ; AES

Après avoir vu le fonctionnement des algorithmes de chiffrement à clé publique, intéressons-nous à leur complémentaire, les algorithmes à clé privée.

Algorithme

La méthode de chiffrement par clé privée est des plus simple. Une valeur, commune à deux personnes communiquant ensemble, permet de chiffrer et déchiffrer des messages.

Exemple avec l'algorithme d'addition / soustraction :

  • Choix d'une clé privée entre les 2 participants : 4
  • Message à envoyer : 123
  • Chiffrement du message : 123 + 4 = 127
  • Envoi d'un message chiffré 127
  • Déchiffrement du message : 127 - 4 = 123

Simple comme bonjour à comprendre, il a fallu des siècles pour admettre qu'il était plus important de cacher la clé que de cacher la méthode de chiffrement. Ceci pour une raison simple, les algorithmes utilisés jusque là étaient trop simplistes et n'auraient pas résisté à la moindre analyse.

Il existe de très nombreux algorithmes, plus ou moins bons, plus ou moins historiques, plus ou moins standards. Limitons-nous à deux standards.

Algorithmes de chiffrement

DES

Le DES est un algorithme promu par la NSA (qui a pour objectif de vous espionner) dans les années 70. Il est relativement simple et avec un peu de patience vous le comprendrez sans problème. Il se base sur un ensemble de 16 cycles de permutations et décalages paramétrés par la clé. Je ne le décrirai pas car c'est un peu long et pas franchement utile.



Il est obsolète depuis longtemps mais ne lâche pas le morceau si facilement (die DES, die). Il se base sur une clé de 56bits et est sensible à la cryptanalyse différentielle (utilisation de plusieurs messages semblables pour trouver la clé plus facilement).

AES

L'AES est un algorithme récent promu par le NIST (qui a pour objectif de standardiser le monde industriel). Je n'ai pas lu en détail la spécification, mais il s'agit d'une combinaison de 4 opérations élémentaires : le remplacement d'octet, le décalage d'octet, l'échange d'octets et la combinaison avec la clé.

L'AES permet d'utiliser des clés de taille variable entre 128 et 256 bits.

Méthodes de chiffrement

Les algorithmes sont eux-même divisés deux grandes catégories selon ce qu'ils sont capables de chiffrer.

Chiffrement par bloc

Les algorithmes de chiffrement par bloc sont capables de chiffrer des blocs indépendamment les uns des autres. Ce qui est très pratique pour les disques durs par exemple.

Chiffrement par flot

Les algorithmes de chiffrement par flot sont capables de chiffrer des données au fil des données, l'élément de base étant généralement bien plus petit qu'un bloc. C'est bien utile pour vos conversations téléphoniques par exemple.

Il est en général possible de transformer un algorithme de chiffrement par bloc en algorithme de chiffrement par flot. Le contraire n'est pas toujours vrai.

Niveau :      
Résumé : RSA ; courbes elliptiques

Après vous avoir présenté les certificats, parlons de ce qui a permis la création de la notion de certificat : le chiffrement à clé publique.

Algorithme

Un algorithme de chiffrement à clé publique est un algorithme qui utilise une clé différente pour chiffrer et pour déchiffrer. Prenons un exemple simple et supposons que personne n'ait découvert la division. On choisit un algorithme à base de multiplication :

  • Créons une clé privée : 0.25
  • Et une clé publique : 4
  • Un message à chiffrer : 123
  • Chiffrons le message avec la clé publique : 123 * 4 = 492
  • On transmet le message 492
  • Déchiffrons le message avec la clé privée : 492 * 0.25 = 123

Et voila, on peut donner à tout le monde la clé publique. Personne ne sachant diviser par 4, il est impossible de retrouver la clé privée à partir de la clé publique, il est donc impossible lire un message qui a été chiffré spécialement pour vous avec votre clé publique. Par contre, en tant que possesseur de la clé privée, cachée au reste du monde, vous pourrez le lire.

Remarquez qu'on peut aussi utiliser la même technique dans l'autre sens pour faire de la signature :

  • Créons une clé privée : 0.25
  • Et une clé publique : 4
  • Un message à signer : 123
  • Signons le message avec la clé privée : 123 * 0.25 = 30.75
  • On transmet le message 123 avec sa signature 30.75
  • Vérifions la signature avec la clé publique : 30.75 * 4 = 123

Cet algorithme prouve cette fois que c'est bien la clé privée qui a été utilisée pour produire le message. En effet, personne ne sachant diviser 123 par 4, seul vous êtes capables de produire la signature à partir du message de départ. Mais attention, ça ne prouve pas que le message n'a pas été créé de toutes pièces. C'est pourquoi, en pratique, on utilise en plus une fonction à sens unique pour éviter qu'on puisse créer un message à partir de votre signature.

Bien sûr en pratique on utilise des fonctions un peu plus complexes et des nombres un peu plus grands.


continue reading...

Niveau :      
Résumé : certificat

Parlons un peu sécurité. Il a déjà été question de certificats iciet . Attachons-nous un peu plus à comprendre ce qu'est un certificat.

Un certificat est composé d'une partie publique et d'une partie privée. Je vous passe la théorie sur la cryptographie à clé publique, ce sera pour une autre fois. Intéressons-nous à la partie publique du certificat. Dans le cas d'un certificat x509 (initié par l'ITU, formaté par RSA et complété par l'IETF), on trouve un certain nombre d'informations. Ces informations permettent deux choses :

  • identifier le propriétaire
  • authentifier le propriétaire

Accessoirement on y retrouve aussi des signatures prouvant que l'identification a été faite par une personne digne de confiance.

Usage

On se sert de ces certificats pour initialiser des connexions sécurisées. Pour cela on commence par vérifier que le certificat appartient bien à la personne avec qui on veut communiquer grâce à une chaine de certification. Ensuite on vérifie qu'on a bien le propriétaire du certificat, et enfin on utilise un protocole adapté pour s'échanger une clé de session permettant de chiffrer les prochaines communications.

Détaillons tout ceci en partant de la fin.

Clé de session

Le chiffrement à clé publique a l'inconvénient d'être lent, on préfère donc utiliser un algorithme à clé privée, plus rapide, pour communiquer le plus gros des données. C'est pourquoi on s'échange une clé de session temporaire en utilisant un algorithme à clé publique, puis le reste de la communication se fait par clé privée.

Autre avantage, l'attaque est plus difficile puisque la clé servant à la communication peut changer régulièrement.

Mais avant de s'échanger une clé de session, il faut être sur de parler à la bonne personne.


continue reading...

Niveau : Interdit aux plus de 9,5 de tension

Il paraît qu'il est de coutume de souhaiter la bonne année en cette période de l'hiver. Ça tombe mal ma religion compte en années de 4096 jours car c'est un nombre cool. Par contre je peux vous souhaiter un joyeux schlomock en avance de 3 jours.

Parlons un peu de Darwin, ce maître à penser qui n'a pas inventé l'évolution, mais a parfaitement compris que la nature ne savait pas faire autrement. La révolution est un privilège d'homme (et probablement de météorite). Mais revenons à nos dinosaures. L'évolution telle que décrite par Darwin se base sur deux principes : les mutations et la sélection naturelle. La première empêche l'apparition du chat à 9 queues avant le chat à une queue, et la seconde empêche que le chat sans queue ne prolifère puisqu'il tombera toujours du côté de la confiture.

C'est en disant n'importe quoi qu'on a l'air intelligent !

Le logiciel libre évolue lui aussi. Il subit de nombreuses mutations qui, remarquez-le, sont progressives, contrairement au propriétaire qui se modifie plutôt par saut quantiques. Et j'affirme que tout comme la vie, le logiciel libre évolue de façon totalement aléatoire. Il y a du bon et du mauvais, il y a de l'inutile, de l'accessoire et de l'indispensable. Malheureusement, contrairement à la vraie vie, certains oublient que pour favoriser l'évolution, il faut une sélection naturelle (étudiez le début de chacune des Périodes géologiques pour en être convaincu).

Qui dit sélection naturelle, dit mort de l'espèce, mais pas de ses gènes (hé oui, ils restent répartis dans les espèces voisines). Dans le monde du logiciel libre, cela signifie qu'il faut savoir abandonner des logiciels pour mieux faire de la place aux autres. Firefox 1 est mort, ed s'étudie en histoire et les unix propriétaires à l'exception de solaris ont un pied dans la tombe. Achevez-les.

Tuez un logiciel et gagnez une place au paradis !

Par conséquent les virus sont une bonne chose. Tout comme dans la vraie vie(tm), il permettent une sélection naturelle. Lorsqu'un virus/ver/parasite passe, soit vous patchez, soit vous mourez. C'est aussi grâce à toutes les failles que le logiciel évolue, si personne n'avait jamais exploité les failles de linux, croyez-vous qu'il serait si bien aujourd'hui ? Si personne n'avait fait de virus pour windows, croyez-vous qu'il aurait une chance aujourd'hui ?

Croissez et multipliez vos virus, remplissez le cyberespace et soumettez-le !

Certaines espèces mettent beaucoup de temps à mourir, c'est pourquoi les charognards et autres insectes sont là pour faire du nettoyage. C'est pourquoi apple est aussi la firme du bien. Malgré tous ses défauts, elle permet à tout le monde de se rendre compte qu'il est possible d'avoir un OS différent, qu'il est possible de faire des IHM avec un grand H et que le monde est vaste.

Mieux vaut transformer un utilisateur en mangeur de pomme que de le laisser pourrir derrière une fenêtre fermée !

Au revoir, à bientôt, pour de nouvelles aventures ...

PS: on trouve dans ce texte une référence à un spectacle, à un dessin animé, à une religion, à un acteur de vidéo sur le web et à une loi. Retrouvez-les et vous aurez droit à un commentaire.