NewbieContest

Général => Général => Discussion démarrée par: Eregrith le 26 Août 2008 à 16:18:28



Titre: [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 26 Août 2008 à 16:18:28
Bonjour a tous, je ne sais pas si je suis au bon endroit, mais voila j'ai mis au point un algo de cryptage qui m'as l'air assez sympa, et je voudrais savoir si d'aucuns seraient interesses pour tenter de le briser...

Voici le message a décrypter, la source est en français, bien orthographiée et grammaticalement correcte :

420 83 341 281642 05211 40390 542445 2905 15 775 4 2 024 13 006 77 83 19 42041 7512 8052 186 542 041 737 300 66 731 9842 04 17 61

[Indice retiré]

Pour la petite histoire j'ai imagine cette méthode moi même, et elle défie la plupart des méthodes de décryptage courantes (analyse fréquentielle etc...  :D)

Pour les indices :
Aucune distinction de casse, tout est en majuscules, ou tout est en minuscules.
L'algorithme de cryptage fonctionne a la manière d'un hash, cependant il n'entraine aucune perte de données, est réversible, mais a une solution multiple.
Par exemple on peut coder la phrase BONJOUR d'autant de manières qu'on le souhaite. Il sera toujours possible de retrouver BONJOUR (si on sait comment fonctionne l'algorithme évidemment ...)

Ainsi vous avez affaire a autre chose qu'une fonction (Rappel : une fonction est définie comme suit : pour tout x il existe un et un seul f(x) qui est l'image de x par f.) car ici on a F(x) = y ou bien z ou bien w ou encore v etc....
Cependant pour tout F(x) on a un seul x qui lui correspond.
C'est donc très complique a modéliser. En gros dans le sens cryptage vous avez une infinité de possibilités, et dans le sens décryptage, une seule solution. Il est pas beau mon cryptage ? ;)


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: sandman le 26 Août 2008 à 17:35:45
Ainsi vous avez affaire a autre chose qu'une fonction (Rappel : une fonction est définie comme suit : pour tout x il existe un et un seul f(x) qui est l'image de x par f.) car ici on a F(x) = y ou bien z ou bien w ou encore v etc....
Cependant pour tout F(x) on a un seul x qui lui correspond.
C'est donc très complique a modéliser. En gros dans le sens cryptage vous avez une infinité de possibilités, et dans le sens décryptage, une seule solution. Il est pas beau mon cryptage ? ;)

Cela dit, note bien que cela n'a rien d'extraordinaire. En prenant tout simplement le rang de chaque lettre du message original dans ton alphabet, et en y ajoutant n*32 (n étant un nombre aléatoire différent pour chaque lettre), on obtiendrait le même genre de fonction de chiffrement. "A" pourrait être ainsi codé en 1, 33, 65... Un message, plusieurs messages chiffrés...


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: BAAL le 27 Août 2008 à 03:04:15
Citation
... axiome fondamental de la cryptographie: l'ennemi possède tous les détails de l'algorithme et il ne lui manque que la clef spécifique pour le chiffrement.
(...)
Un chiffre basé uniquement sur le secret de l'algorithme n'a aucun intérêt, car un jour ou l'autre ce secret sera éventé ou volé.

J'aurais donc une question concernant ton algorithme: est-ce qu'il y'a besoin d'une clef pour chiffrer/déchiffrer le message, ou est-ce que, comme pour un hash, il suffit d'avoir l'algorithme pour être capable de crypter (et ici de décrypter) ?

Si c'est le deuxième cas, je crains que ton algorithme ne soit pas très pratique, car il ne procurera aucune protection contre quelqu'un qui connaît l'algorithme. De plus, l'intérêt des algorithmes de hashage est justement cette incapacité à retrouver le message d'origine même quand on a l'algo, ainsi si ton algorithme fonctionne comme un hash mais qu'il offre la possibilité de revenir en arrière ça n'est sûrement pas un plus par rapport aux hashs.

Sinon je vois que ton message chiffré contient 32 nombres, un md5 contient 32 chiffres en base 16, supposition hasardeuse: Est-ce qu'un message de 1000 lettres, comme un message de 2 lettres donnent tous les deux toujours 32 nombres?


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 27 Août 2008 à 08:05:33
Non pas besoin de clef, ce n'est pas un hash justement, et donc un message de 1000 lettres contiendras x chiffre tandis qu'un message de 2 lettres contiendra y chiffres, x et y pouvant varier dans leur coin.

Il n'y a pas besoin de clef juste de l'algo, je mise sur la difficulte a comprendre l'algorithme : on est pas cense savoir [Indice retiré] lorsqu'on tombe sur ce genre de cryptage.

Je me doute bien que ce que j'ai la n'est pas une revolution en matiere de cryptage mais en fait j'aimerais connaitre une methode de decryptage quand on rencontre ce genre de "probleme crypté" car je suis responsable de l'antenne Lyonnaise d'une association de paris de mon ecole (Epitech) qui s'apelle Epitech Security Lab, et j'aimerais ecrire un genre de "cours" sur une telle methode (et j'en apprendrai + moi meme :) ).
Merci d'avance a ceux qui voudront bien se pencher dessus :)


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Mr_KaLiMaN le 27 Août 2008 à 11:40:51
/me veut bien un autre message crypté, plus long si possible.


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: crocrodile le 27 Août 2008 à 15:41:10
Salut,

D'un point de vu mathématique, on a bien à faire à une fonction (ou application), mais elle est injective: tout élément de l'ensemble d'arrivé de f possède au plus un antécédent dans l'ensemble de départ par f. La définition que tu donnes ne définie pas une application mais tu faisais peut-être référence à une application bijective: tout élément de son ensemble d'arrivé a un antécédent et un seul dans l'ensemble de départ. Il existe aussi des application surjectives, mais elles sont pas adaptées au chiffrement car elles font perdre de l'information (ce sont les fonctions de hashage).

D'un point de vu sécuritaire, rappelle bien à tes étudiants que la méthode que tu leur montre n'assure vraiment pas un haut niveau de sécurité et que seul la méthode d'attaque peux présenter un intéret:

Tu proposes un chiffrement basé sur le secret de l'algorithme, ce qui est plutôt risqué, car si quelqu'un découvre l'algorithme, tu peux le jeter aux oubliettes contrairement aux système modernes à clés. Il suffit donc d'une attaque réussie pour rendre caduque la méthode de chiffrement.


Titre: Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 27 Août 2008 à 15:51:40
Salut,

D'un point de vu mathématique, on a bien à faire à une fonction (ou application), mais elle est injective: tout élément de l'ensemble d'arrivé de f possède au plus un antécédent dans l'ensemble de départ par f. La définition que tu donnes ne définie pas une application mais tu faisais peut-être référence à une application bijective: tout élément de son ensemble d'arrivé a un antécédent et un seul dans l'ensemble de départ. Il existe aussi des application surjectives, mais elles sont pas adaptées au chiffrement car elles font perdre de l'information (ce sont les fonctions de hashage).

Ok, merci pour le mini cours de maths ;)

si j'ai bien compris une fonction injective a les memes proprietes que la fonction bijective si on inverse x et y ?
par exemple la fonction x² subissant une rotation de 90° est bien une fonction injective ? Ou bien alors "jé rien compri" ^^?

D'un point de vu sécuritaire, rappelle bien à tes étudiants que la méthode que tu leur montre n'assure vraiment pas un haut niveau de sécurité et que seul la méthode d'attaque peux présenter un intéret:

Tu proposes un chiffrement basé sur le secret de l'algorithme, ce qui est plutôt risqué, car si quelqu'un découvre l'algorithme, tu peux le jeter aux oubliettes contrairement aux système modernes à clés. Il suffit donc d'une attaque réussie pour rendre caduque la méthode de chiffrement.

T'en fais pas, je comptais pas leur presenter comme methode ultime de protection ...

Cependant, est-il vrai de dire que si on crée soit même un algorithme de cryptage et qu'on le programme en local (par exemple) pour crypter des dossiers que nous seul réutilisons (donc décryptons) cela peut etre une bonne idee ? Parce que du coup, ce n'est pas un algorithme connu du monde (et donc les methodes de decryptages doivent etre reinventees) et que toute personne souhaitant se casser la tete a decrypter nos dossiers, au final recolteras une methode pour decrypter le peu de dossier cryptes avec cette methode, il suffirait alors de faire plusieurs algorithmes personnels un peu aleatoires dans les idees, pour que le temps de les comprendre soit plus long.
Mais bien sur l'interet est limite, et uniquement personnel ^^ et il faut avoir la patience et l'envie de faire plusieurs programmes de cryptage ...


Et c'est pourquoi je poste ici : je sais que j'y trouverais un tas de personnes (bon ok un petit tas mais quand meme :P) capables et peut etre meme motivees (soyons fous !) par l'attaque de mon cryptage, et pourraient ainsi me fournir une bonne base pour un futur cours :)

A ce propos Mr_KaLiMaN, je poste ici un message plus long des que je suis rentre chez moi :) (oui au boulot ca le fait pas trop ;) )


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: crocrodile le 27 Août 2008 à 16:54:05
Les applications injectives et surjectives sont deux cas différents et les bijectives sont en fait à la fois injectives et bijectives. Pour le visualiser géométriquement dans un espace à deux dimensions, tu peux prendre l'axe des abscisses (x) comme ensemble de départ et l'axe des ordonnées comme ensemble d'arrivé. f(x) = x est clairement bijective, tu prends n'importe quelle valeur en ordonnée, il n'y strictement qu'une valeur correspondante en abscisse. f(x) = x^2 est injective dans R (par exemple, x^2 = -1 n'a aucune solution), mais est surjective dans R+ (x^2 = 0 a une solution, toute les autres images sur l'ordonnée trouvent deux antécédents sur l'abscisse).


mmh à quoi bon chiffrer des données avec un algo faible si l'on sait qu'une personne vraiment mal intentionnée peut se casser la tête et réussir à tout déchiffrer ?



Petit supplément questions, qui pourront peut-être t'orienter sur des pistes quant à l'attitude à adopter pour déchiffrer ton algorithme:

Moi j'essaie d'abord de voir si je peux rapporter ton algorithme à quelque chose de connu, car j'ai la chance de pouvoir discuter avec son auteur. Dans un coin de ma tête, je sais que de grands mathématiciens travaillent sur le chiffrement depuis toujours, et qu'une application injective a peu de chances de leur avoir échappé.

Comme on peut chiffrer un message de plusieurs manières différentes, comment ton algorithme arrive-t-il à produire une solution plutôt qu'une autre ? en gros ton algorithme est-il non-déterministe ? as-tu introduit un élément aléatoire ?

- si tu n'a pas introduit d'élément aléatoire, alors la même solution sera toujours utilisée pour coder un message donné. ce qui me laisse penser qu'il y a bien un élément aléatoire.

- si tu as introduit un élément aléatoire, peux-t'il assurer de ne JAMAIS produire deux fois le même résultat en fonction du message crypté ? si tel n'est pas le cas, je pense que l'algorithme est équivalent à un algorithme à clé privée et pour lequel on tenterait d'utiliser des synonymes (malheureusement la langue ne propose pas une infinité de mots donc de synonymes) pour les mots que l'on aurait déjà chiffré auparavant avec le même algorithme.

Avec une masse suffisante de messages codés, on devrait pouvoir utiliser les méthodes classiques d'attaques d'algos à clé privée/symétrique).

Je ne pense pas que l'on puisse assurer de ne jamais produire deux fois le même résultat pour un message donné. Si l'ensemble d'arrivée de ton algo est effectivement infini, tu ne l'épuisera effectivement jamais, par contre, tu risques rapidement d'épuiser les ressources de ta machine pour chiffrer le moindre message.

Qu'en penses-tu ?


Titre: Re : Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: _o_ le 27 Août 2008 à 18:22:50
Cependant, est-il vrai de dire que si on crée soit même un algorithme de cryptage et qu'on le programme en local (par exemple) pour crypter des dossiers que nous seul réutilisons (donc décryptons) cela peut etre une bonne idee ?

Bah, si le programme qui chiffre et déchiffre (et non pas crypte, je le signale une fois pour toute) n'est pas loin des dossiers, ça n'a pas beaucoup d'intérêt. D'autre part, sauf à des fins d'éducation, il est inutile de réinventer la roue : il existe des implémentations fiables d'algorithmes forts qui éviteront de coder soi-même son truc et assureront une sécurité supérieure. Et on sera très content d'utiliser des algorithmes ouverts le jour où on souhaitera échanger les données chiffrées en question avec des amis.


Titre: Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: ulmo le 27 Août 2008 à 23:14:27
D'un point de vu mathématique, on a bien à faire à une fonction (ou application)

Salut,
Ca a peu d'importance puisqu'on parle de cryptographie, mais il me semble que comme le disais Eregrith, il ne s'agit ni d'une fonction ni d'une application.

En effet, lorsqu'on prend un élément x dans l'ensemble de définition d'une fonction f, il existe un et un seul élément dans l'ensemble d'arrivée qui est l'image de x par f soit f(x). Si f et x sont donnés alors f(x) est unique. Ce qui n'est pas le cas le l'algorithme de cryptage proposé (à comparer à f) puisque pour un message donné (à comparer à x), il existe plusieurs messages cryptés possibles (à comparer à f(x)).

Aussi, si je me souviens bien, une fonction est une application dont le domaine de départ est restreint à son domaine de définition. Donc les deux mots ne sont pas équivalents.


Titre: Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 28 Août 2008 à 08:11:40
Les applications injectives et surjectives sont deux cas différents et les bijectives sont en fait à la fois injectives et bijectives. Pour le visualiser géométriquement dans un espace à deux dimensions, tu peux prendre l'axe des abscisses (x) comme ensemble de départ et l'axe des ordonnées comme ensemble d'arrivé. f(x) = x est clairement bijective, tu prends n'importe quelle valeur en ordonnée, il n'y strictement qu'une valeur correspondante en abscisse. f(x) = x^2 est injective dans R (par exemple, x^2 = -1 n'a aucune solution), mais est surjective dans R+ (x^2 = 0 a une solution, toute les autres images sur l'ordonnée trouvent deux antécédents sur l'abscisse).

Ok je comprends mieux avec un dessin (meme mental :p)

mmh à quoi bon chiffrer des données avec un algo faible si l'on sait qu'une personne vraiment mal intentionnée peut se casser la tête et réussir à tout déchiffrer ?

C'est pas faux XD



Petit supplément questions, qui pourront peut-être t'orienter sur des pistes quant à l'attitude à adopter pour déchiffrer ton algorithme:

Moi j'essaie d'abord de voir si je peux rapporter ton algorithme à quelque chose de connu, car j'ai la chance de pouvoir discuter avec son auteur. Dans un coin de ma tête, je sais que de grands mathématiciens travaillent sur le chiffrement depuis toujours, et qu'une application injective a peu de chances de leur avoir échappé.

Je ne m'y connais pas (encore) assez en cryptologie pour te repondre sur ce point ^^"


Comme on peut chiffrer un message de plusieurs manières différentes, comment ton algorithme arrive-t-il à produire une solution plutôt qu'une autre ? en gros ton algorithme est-il non-déterministe ? as-tu introduit un élément aléatoire ?

- si tu n'a pas introduit d'élément aléatoire, alors la même solution sera toujours utilisée pour coder un message donné. ce qui me laisse penser qu'il y a bien un élément aléatoire.

- si tu as introduit un élément aléatoire, peux-t'il assurer de ne JAMAIS produire deux fois le même résultat en fonction du message crypté ? si tel n'est pas le cas, je pense que l'algorithme est équivalent à un algorithme à clé privée et pour lequel on tenterait d'utiliser des synonymes (malheureusement la langue ne propose pas une infinité de mots donc de synonymes) pour les mots que l'on aurait déjà chiffré auparavant avec le même algorithme.

Il y a 2 elements aleatoires, dont 1 qui ne change pas grand chose au cryptage lui meme, mais si j'en dis trop ca sera peut etre trop facile ;)


Avec une masse suffisante de messages codés, on devrait pouvoir utiliser les méthodes classiques d'attaques d'algos à clé privée/symétrique).

Je ne pense pas que l'on puisse assurer de ne jamais produire deux fois le même résultat pour un message donné. Si l'ensemble d'arrivée de ton algo est effectivement infini, tu ne l'épuisera effectivement jamais, par contre, tu risques rapidement d'épuiser les ressources de ta machine pour chiffrer le moindre message.
Qu'en penses-tu ?

Je t'assure que si, c'est facilement demontrable quand on connais l'algo, on ne peut pas produire le meme resultat a partir de 2 sources differentes.
Les methodes classiques d'attaques d'algos a clef privee/symetrique, il faut qu'il y ait une clef privee/symetrique, non ^^? Apres, pour moi un clef c'est bien des donnees supplementaires au message utilisees pour le crypter d'une certaine maniere et pour savoir le decrypter ? Ou bien je me trompe ^^?
Par exemple une clef de cryptage de Caesar serait "3", avec a<->d du coup...
La table de vijnere est egalement un algorithme a clef ?

Tandis que mon algorithme se rapproche plutot du MD5 du point de vue "pas de clef", j'utilise le message et uniquement lui meme pour le crypter.


Sinon oui pour echanger ses fichiers c'est pas pratique XD


Titre: Re : Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: _o_ le 28 Août 2008 à 08:47:29
Ca a peu d'importance puisqu'on parle de cryptographie, mais il me semble que comme le disais Eregrith, il ne s'agit ni d'une fonction ni d'une application.

On va peut-être arrêter de raconter des bêtises, ça commence à faire beaucoup.
C'EST une fonction.
Ce que Eregrith omet de dire, c'est qu'il y a au moins un autre paramètre à sa fonction. Ce paramètre peut-être pas mal de chose : une clef (mais là, il parait qu'il n'y en a pas), un générateur d'aléa, ou l'environnement, dans sa globalité. Et donc, c'est bien une fonction, heureusement.

Tandis que mon algorithme se rapproche plutot du MD5 du point de vue "pas de clef"

Pareil, on ne mélange pas les algorithmes et les hachages cryptographiques, s'il vous plaît. Même si les distinctions sont bien claires dans vos têtes, mettez vous à la place du débutant qui vous lit et qui va commencer par tout mélanger. Donc, pour résumer, tu as créé un algorithme cryptographique sans clef; quant au MD5, c'est un algorithme de  hachage (qui peut être utilisé en cryptographie, mais dans des conditions bien particulières, puisqu'on ne peut PAS déchiffrer un MD5).



Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 28 Août 2008 à 08:56:16
voila :)

Desole pour l'amalgame ^^...

Sinon oui, si tu prends en compte le fait que mon algorithme a besoin du generateur de nombre aleatoires c'est un parametre supplementaire. Mais peux-tu vraiment dire que c'est une fonction (donc que pour tout x, f(x) est unique) alors que le nombre aleatoire n'est pas le meme (et que, par generation multiple, le nombre de f(x) differents est pseudo-infini pour un x donne ?)


Titre: Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: _o_ le 28 Août 2008 à 09:11:10
Sinon oui, si tu prends en compte le fait que mon algorithme a besoin du generateur de nombre aleatoires c'est un parametre supplementaire. Mais peux-tu vraiment dire que c'est une fonction (donc que pour tout x, f(x) est unique) alors que le nombre aleatoire n'est pas le meme (et que, par generation multiple, le nombre de f(x) differents est pseudo-infini pour un x donne ?)

Simple problème de notation. Dans tes phrases, tu parles de x -> f(x), où tout le monde comprend que f est une fonction de N dans N (entiers naturels). C'est faux. Ta fonction a pour prototype f(x,y) (où y est issu du générateur d'aléa, qui peut-être lui-même une fonction, ou alors une constante définie par la personne qui chiffre). En supposant que ce y est également un entier naturel, alors la fonction porte sur les ensembles (N, N) -> N.

M'enfin bon, les maths, ça commence à être un peu loin, pour moi.


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 28 Août 2008 à 09:23:02
Bin pour moi la fonction a comme prototype f(x) et le nombre aleatoire est choisi par la fct aleatoire du system (srandom et tout le tintouin) et donc ca depends plus de l'environnement que d'un parametre, mais si on considere x = y et que l'environnement de f est le meme lors du calcul de f(x) et f(y) on aura f(x) = f(y), et donc une unique solution (cependant possiblement modifiable par un second passage faisant autre chose (qui si il est lui aussi considere comme identique, donneras le meme resultat ^^) ;))


Titre: Re : Re : [CRYPTAGE]Proposition d'epreuve
Posté par: _o_ le 28 Août 2008 à 10:27:56
J'ai pas le temps de décortiquer clairement ce que tu dis, mais du point de vue mathématique, ça me parait être une explication assez bancale pas très rigoureuse. Bref, de toute façon, c'est de la masturbation intellectuelle.


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 26 Septembre 2008 à 09:29:47
Voici un message plus long :

1904 432742 04 10 07 310 51 9 0 334 20 36 29 42 07 15 359 814
204 29 81 3 110 10 02 208 23 84 202 4142 05 37 6 732 90 65 491
7217 04 317 6 42 04 175 0 280 63 175 0642 065 2 91 74 20 35 45
3 0 051 3 480 30 03 5 69 4 202 41 31 068 037 34 4 203 58 72 30 62
75 6 00 42 04 17 47 42 04 298 116 0440 1 2 220 4 918 84 20 24 11
9046 421 390 39 354 204 17 3 2320 535 542 42 05 26 458


EDIT : alors ? personne ne trouve ?

Ca serait cool de m'aider a faire ce cours :P

Mr_KalimaN est-ce que tu planches dessus ? Ca devrais pas etre si complique que ca quand meme ...
Quoi que, en fait si ... si on considere que tu ne sais rien du message ni de ce que tu y cherches ...


Titre: Re : [CRYPTAGE]Proposition d'epreuve
Posté par: Eregrith le 19 Juin 2009 à 20:55:38
Et bien dites donc, pas grand succes a ce que je vois :(

Mon cryptage etait pas assez interessant ? Pas assez challenging :( ?

Trop dur et personne n'a trouve et du coup ca a demotive tout le monde ?

En tout cas dommage j'aurais bien aime avoir des retours :(