Aller au contenu

Nouveau membre ?! Pense à te présenter pour accéder au contenu du forum !

New member ?! Introduce yourself to get access to the forum !

Takuma

 tutoriel / partage Débuter avec la cryptographie

Messages recommandés

Bonjour.

 

Je vais essayer durant ce tutoriel de vous en apprendre plus sur la cryptographie. je vais essayer de faire un tutoriel assez claire, et pouvant s'adresser à tout. Je vais commencer du plus simples, et au fur à mesure, nous allons aller de plus en plus loin.

 

Bon déjà, je vais commencer pour vous expliquer ce qu'est la cryptographie. Cela vous fait peut être penser à "crypter" ? Et bien, oui c'est en rapport. La cryptographie, c'est une disciplines. Celle de la cryptologie. Son but est de protéger quelque chose, des messages par exemple. Grâce à la cryptographie on va pouvoir assurer quelques points sur le message :

 

  • Confidentialité
  • Intégrité
  • Authenticité

 

La cryptographie n'a jamais été imparable. Même si certaines manière de crypter n'ont pour l'instant jamais été résolue.

 

Le but n'est pas forcément de rendre lisible le message que par certaines personnes. La cryptographie peut aussi générer un fruit qui lui sera irréversible. C'est à dire qu'on ne pourra plus obtenir le clair. (J'appelle clair le message original, avant qu'il soit crypté). Quel serait le but d'un tel cryptage me direz-vous ? Et bien, simplement vérifier que le message est bien le même. Je vais vous donner un exemple, les enregistrements de mots de passe. On vérifie ce que l'utilisateur a entré, et si leur cryptage correspondent, c'est bon !

Cette méthode est très, et est toujours utilisé ! Cependant, les cryptages ont été revu. Effectivement, certaines créaient des collisions. Qu'est ce que des collisions ? Et bien c'est deux mots clairs différents, qui donnaient la même chose une fois crypté. Prenons par exemple le mot Banane, et le mot Chenille. Imaginons que leur cryptage donne "agf". Et bien, un utilisateur pourrait avoir "Chenille" comme mot de passe, mais un intrus pourra accéder à son compte en tapant le mot "Banane". Les cryptages sans collisions, enfin, dont nous n'en n'avons toujours pas trouvé, car personne n'est encore prouver que ce n'était pas possible d'en trouver, sont très complexes. Ils ont plusieurs paramètres.

 

Pour finir sur cette assez grande définition, sachez que beaucoup de personne utilise pour encore complexifié le cryptage ce qu'on appelle un grain de sel (salt = terme anglais). Dans quel but ? Elle va en fait changer le retour de la cryptographie afin d'éviter les déchiffrements par dictionnaire. Le principe d'un tel déchiffrement est d'avoir ce qu'on appelle un dictionnaire, c'est à dire une gigantesque liste de mot de pass (la plus par du temps) claire, et leur correspondance une fois crypté.

 

C'est pour cela que les mots de passe tels que {123; password; motdepass; [CodePastole]; etc...} sont extrêmement déconseillé. En plus d'être des mots de passe extrêmement courant, ils existent dans presque tous les dictionnaires. C'est pour ça qu'on conseille souvent un mot de passe avec 8 caractères minimum, une majuscule, un chiffre, et un caractère spécial minimum.

 

Pour vous illustrez ce choix, nous allons partir sur un calcule assez simple :

Si nous prenons un mot de passe de 3 caractères ne comprenant que des lettres minuscules, nous avons 26 caractères disponible donc. Sachant qu'il y a 3 caractères différents, faisons 26 au cube. Nous obtenons 17 576 solutions. Vous trouvez que c'est beaucoup ? Et bien non. Un robot peut effectuer un nombre extrêmement important d'essaie à la seconde, il ne va même pas mettre 10 minutes a trouver votre mot de passe. Augmentons notre ensemble de définition, et gardons les conditions, sauf que cette fois-ci, nous allons ajouter les lettres majuscules. Nous avons donc 26*2 soit 52 caractères possible, nous avons donc 52 au cube de solutions disponibles. Soit, 140 608 solutions. Vous voyez la différence ? On a augmenté le nombre total de solution par 8 (Explications : 26 * 2 = 52, comme on multiplie 3 fois 52, on a 26x2x26x2x26x2 et 2x2x2 = 8 soit , juste en rajoutant les majuscules. Je vous laisse donc deviner combien de solution il existe en prenant :

 

  • 10 caractères
  • Majuscules + minuscules
  • Un, ou plusieurs caractères spéciaux.

 

Ça fait beaucoup, effectivement.

 

Bien, maintenant, on va passer aux choses sérieuses, fini le blabla !

 


 

La manière de crypter la plus simple est celui utilisé par César. 

 

Le principe est très simple, on va en fait effectuer un décalage des lettres.

 

Par exemple, nous allons effectuer un décalage de 22 caractères vers la gauche, ça donne :

213309Screenshot-19.png

Avec en haut, la lettre en claire, et en bas la lettre crypté.

 

Par exemple :

"Salut Funky Emu !" devient "Owhqp Bqjgu Aiq".

 

Malheureusement ce chiffrement est extrêmement facile à déchiffré.

On a pour habitude de chiffré en allant avec un nombre vers la gauche, mais rien ne vous empêche de le faire vers la droite ou autre.

 

Si vous voulez essayer de vous entraînez, chiffré le message: "OUI" avec un décalage de 10 caractères. Vous trouverez quelque chose d'amusant.

 

La réponse...

Vous allez normalement trouvé "YES"

 

Vous pouvez facilement déchiffré le message en effectuant tous les décalages.

 


 

Maintenant, on va passer à la méthode de chiffrement par substitution. Le principe de celui-ci est extrêmement simple également. Nous allons devoir substituer chaque lettre par une autre. Celui qui va recevoir le message devra bien sûr lui aussi avoir la grille avec les différentes substitution effectuées.

 

Par exemple : 

214238Screenshot-20.png

 

Ici, le message : "ASIKOO", vas donner : "ZWBPTT".

 

Cette méthode est malheureusement très déconseillée aussi.

 


 

Bien, maintenant j'aimerais vous parler d'une méthode de déchiffrement cette fois-ci. Bon le mot n'est je pense pas flou pour vous, le but va être de passer d'un texte chiffré à un texte claire. Je ne vais pas vous dire le chiffrement utilisé, nous allons prendre ceci :

 

"TOPKS CMODE DYBSO VCEBP EXUIO WECEB VKMBI ZDYQB KZRSO OXOCZ OBKXD ZYEFY SBFYE CKSNO BODFY ECKZZ YBDOB AEOVA EOCMY XXKSC CKXMO C"

Notre objectif est de déchiffré ce code... Pas simple vu comme ça hein ?

 

Nous allons faire ce qu'on appelle une étude des fréquences.

C'est à dire que nous allons étudier la fréquence d'apparition des lettres. Bien, faisons un tableau...

 

215230Screenshot-22.png

 

Bien, maintenant regardons, et examinons... 

 

Nous savons presque tous que la lettre la plus fréquente en français est la lettre E. Imaginons donc que la lettre O = E.

Nous obtenons ce message :

"TEPKS CMEDE DYBSE VCEBP EXUIE WECEB VKMBI ZDYQB KZRSE EXECZ EBKXD ZYEFY SBFYE CKSNE BEDFY ECKZZ YBDEB AEEVA EECMY XXKSC CKXME C"

Les "E" soulignés étant ceux qui viennent d'être remplacés.

 

On peut essayer déjà de vérifier, si ce n'est pas un cryptage de César, un chiffrement par décalage !

Pour aller de E à O il y a... 10 décalage ! 

 

Essayons...

T devient... J

P devient... F

Cela donne : 

 

Citation

JEFAI SCETU TORIE LSURF UNKYE MUSUR LACRY PTOGR APHIE ENESP ERANT POUVO IRVOU SAIDE RETVO USAPP ORTER QUELQ UESCO NNAIS SANCE S

 

Ah ! On arrive à quelque chose... essayons d'espacer chaque lettre afin de les isoler...

 

Citation

J E F A I S C E T U T O R I E L S U R F U N K Y E M U S U R  L A C R Y P T O G R A P H I E E N E S P E R A N T  P O U V O I R V O U  S A I D E R E T V O U S A P P O R T E R Q U E L Q U E S C O N N A I S S A N C E S

Hum... On pourras essayer de séparer le "JE" devant et ainsi de suite, pour tomber sur : 

 

Citation

JE FAIS CE TUTORIEL SUR FUNKY EMU SUR LA CRYPTOGRAPHIE EN ESPERANT POUVOIR VOUS AIDER ET VOUS APPORTER QUELQUES CONNAISSANCES

 

Et voilà on a déchiffrer ce message ! 

 

Bien sûr, cette méthode ne marche que pour très peu de technique, et les plus simples. Il faut pour que cette méthode marche que chaque caractère donne toujours le même caractère/la même séquence une fois chiffré.

 


 

On va finir par parler des fonctions, plus particulièrement des fonctions cryptographiques. C'est juste pour vous montrer le principe, les fonctions sont bidons et totalement inutiles hein ?

 

Les fonctions étant au programme de.. 4ème ? 3ème ? Désolé les plus jeunes, il va falloir apprendre avant de continuer. Je vais ici rester dans les fonctions les plus simples. C'est à dire les fonctions linéaires, et affines. Je pourrais aussi vous parler des fonctions homographique, des fonction polynôme du seconde degré etc... Mais j'pense au 2002 qui ont pas peut être pas encore vu ça. Et (peut être) à certaines filières qui n'ont peut être pas vu ça. 

 

On va donc utiliser une fonction f qui à M (Messages clair) nous renvoie C (Message Crypté)

Soit, f(M) = C.

 

Je vais utiliser une fonction affine, ça sera le plus simple, du type y = (ax +b).

Je vous fait aussi remarqué que si le coefficient directeur a de la fonction affine est égale à 1, on obtiendra un chiffrement de César de décalage b.

 

Par exemple, la Lettre A ici désigné par x qui vaut le numéro de sa place dans l'alphabet par exemple, 1, F(A) = a+b

 

Prenons par exemple comme coefficient directeur a 5, et comme ordonné à l'origine 21.

 

F(A) = 5*1+21

        = 5+21 = 26

F de A donne Z.

 

Si de Z on veut passer à A, on va utiliser l'inverse de f (f^-1), soit :

Z = 26

On cherche donc en fait l'antécédent de 26, donc : 5x + 21 = 26. Compliqué hein ?... On obtient donc x = 1.

 

Le problème de cette méthode est que si quelqu'un à votre fonction, il peut déchiffré.

 

Plus de sécurité ?

 

Oui c'est possible, dites vous bien que plus votre fonction sera complexe, plus la personne aura du mal à la trouvé. On pourra pour les fonctions les plus simples les retrouver grâce à l'étude de fréquence etc. Même par tâtonnement.

Maintenant, on peut essayer de faire quelque chose de plus dur, désolé pour les petits et les grands qui ont oublié, prenons par exemple la fonction f telle que : f(x) = 4x²+2x+6.

Ici, on peut utilise toujours la même méthode

f(A) = 4*1²+2x1+6 = 4+2+6 = 12.

F(A) = L

 

Celui avec le carré est beaucoup plus dur à trouver. La différence de terme fait aussi la différence. N'essayez pas cependant de faire quelque chose qui se simplifie, ça reviendra au même par exemple : si f(x) = 4x+9x-4x+95x-91x etc... On peut toujours simplifier. Alors qu'avec des fonctions dont le degré est de plus en plus élevés, vous aurez plus de terme.

 


Une fonction de cryptage connue ? On va ici parler des hash md5, et de comment il marche. Déjà, qu'est ce qu'un hash ? C'est une emprunte, c'est à dire que sauf par dictionnaire, il est impossible de revenir de l'empreinte au texte claire.

 

Au début, le MD5 se ventait de donner une emprunte "unique" à chaque fichiers. Cependant il a été prouvé que plusieurs fichiers peuvent provoquer des collisions. Oui, on ne crypte pas que des messages, mais aussi des programmes, images etc... Même si au final ça revient à des messages de 0 et de 1 !

 

Bien voyons ensemble comment fonctionne le MD5, un des cryptage le plus connu ! 

 

  • Un message est constitué de bits (m1...mb). On complète ensuite le message par un 1, puis autant de 0 pour que le message est une longueur congruente à 448, modulo 512.
  • On ajoute ensuite à ce message la valeur de b codée en binaire sur 64 bits. (Valeur maximale = 2 à la puissance 64).
  • La longueur de message obtenu est donc un multiple de 512 (bits). Nous allons donc travailler sur chacun de ces "blocs" de 512 bits.
  • On va donc définir ce qu'on appelle 4 buffers(des tampons si vous voulez) de 32 bits définie comme ceci :
    • A=01234567
    • B=89abcdef
    • C=fedcba98
    • D=76543210

     

    [*]On va dans la même foulé définir quatre fonctions F,G,H et I qui renverront une valeur en 32 bits.

     

    • F(X,Y,Z) = (X AND Y) OR (not(X) AND Z)
    • G(X,Y,Z) = (X AND Z) OR (Y AND not(Z))
    • H(X,Y,Z) = X xor Y xor Z
    • I(X,Y,Z) = Y xor (X OR not(Z))

     

    [*]Pour chaque bloc on effectue ensuite ceci :

     

    • On fait une cioue des valeurs des registres.
    • On calcule de nouvelles valeurs pour A, B, C et D (Dans AA, BB, CC, et DD --> On leur donne un nom car on va s'en re servir.) grâce à leurs anciennes valeurs et du bloc bits qu'on traite en ce moment même et bien sûr des quatre fonctions définies plus haut.
    • On fait A = AA+A, et ainsi de suite pour B, C et D.

     

    [*]On obtient donc 4 buffers de 32 bits, soit 128 bits en tout.

    Je laisse google vous décrire l'étape suivant sous un schéma beaucoup plus compréhensible que mes explications :

 


  • Sachant que :

 


  • La complétion = la première étape.

 

On obtient avec tout ça un hash MD5 qui génère malheureusement des collisions.

 


 

Bon bon bon... On va s'arrêter là hein ? C'est déjà pas mal, on en verra plus plus tard. j'hésite à pas faire un peu la même chose sur toute l'histoire de la stéganographie. On verra :D

 

Bon j'espère que ça sera pas illisible et que ça pourra intéresser quelques personnes.

 

A ploush

Modifié par GuiguiOfMetin

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

By using this site, you agree to our Conditions d’utilisation.