logo Homepage
+  NewbieContest
|-+  Général» Général» [CRYPTAGE]Proposition d'epreuve
Username:
Password:
Pages: [1] 2
  Imprimer  
Auteur Fil de discussion: [CRYPTAGE]Proposition d'epreuve  (Lu 8467 fois)
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« 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...  )

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 ?
« Dernière édition: 10 Juin 2014 à 13:51:26 par Eregrith » Journalisée
sandman

Profil challenge

Classement : 1709/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 7


Voir le profil
« #1 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...
Journalisée
BAAL

Profil challenge

Classement : 13/54277

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 532


Voir le profil
« #2 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?
Journalisée
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« #3 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
« Dernière édition: 10 Juin 2014 à 13:58:55 par Eregrith » Journalisée
Mr_KaLiMaN
Relecteur

Profil challenge

Classement : 64/54277

Membre Senior
*
Hors ligne Hors ligne
Messages: 426


Voir le profil WWW
« #4 le: 27 Août 2008 à 11:40:51 »

* Mr_KaLiMaN veut bien un autre message crypté, plus long si possible.
Journalisée
crocrodile
Profil challenge

Classement : 4568/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 13


Voir le profil
« #5 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.
Journalisée
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« #6 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 ) 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 )
Journalisée
crocrodile
Profil challenge

Classement : 4568/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 13


Voir le profil
« #7 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 ?
« Dernière édition: 27 Août 2008 à 16:58:37 par crocrodile » Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54277

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #8 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.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
ulmo
Profil challenge

Classement : 3800/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 11


Voir le profil
« #9 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.
Journalisée
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« #10 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
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54277

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #11 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).

Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« #12 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 ?)
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54277

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #13 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.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Eregrith
Profil challenge

Classement : 533/54277

Néophyte
*
Hors ligne Hors ligne
Messages: 10


Voir le profil
« #14 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 ^^) )
Journalisée
Pages: [1] 2
  Imprimer  
 
Aller à: