Forum

Catégorie : Discussions générales
Forum : Articles
Vues : 6496
Réponses : 49
Type : discussion
Etat : réponses autorisées

Chaos mathématique et cryptage

vibra le 01/11/2007 à 21:02
Je viens de découvrir un phénomène tout à fait fascinant pouvant peut-être avoir une utilisation dans certains algorithmes de codages.
Rentrez le programme suivant :
Code
"X^2"->Y1
Fn-Off
0->Xmin
10->Xmax
-.5->Ymin
1.5->Ymax
For(A,0,10,.01
Pt-On (A,Y1(A)-((1<0)+int (Y1(A)
End

Mettez le programme en route, et là, si je vous dit que ce qui s'inscrit sur l'écran est la fonction "x^2" vous me croyez ? Que c'est-il passé ? Tout simplement la bonne vieille fonction "x^2" s'est littéralement fait hachée menu par une bande de petits rigolo appelés modulos.
Un autre exemple encore plus impréssionnant ?
Code
"7,5+x sin (cos (X^2"->Y1
Fn-Off
0->Xmin
10->Xmax
-.5->Ymin
5.5->Ymax
For(A,0,10,.01
Pt-On (A,Y1(A)-5((5<0)+int (Y1(A)/5
End

On peut donc constater que les fonctions sont complètement dénaturées, et ne ressemblent plus à rien de connu.
Alors, quelle utilité à ce phénomène ? Tout simplement l'utilité est que cette fonction, à moins qu'on repousse les maths dans ces derniers retranchements, les fonctions modulées ne possèdent pas de fonction réciproque. Quésaco ? Quand on marque y=x^2+3, on peut retrouver x si l’on connaît y an faisant x=sqrt(Y-3) ou x=-sqrt(y-3). Les deux fonctions sont des fonctions dites réciproques. En revanche avec une fonction modulée, pas moyen d’exprimer x en fonction de y. (Note : le sqrt signifie [racine])
Ainsi un petit futé qui ferait un algorithme pour protéger un programme du type :
Code
Prompt A
If 36(A+3)/15=35+2
Then
Disp "CODE  CORRECT
Else
Disp "CODE INCORRECT
Stop

aurait tout faux, puisqu’il suffit au « cracker » d’éditer le programme et de résoudre l’équation pour trouver le code. En revanche, avec une fonction modulée, même en connaissant le nombre d’arrivée, il est impossible de remonter jusqu’au code.
Mais il y a mieux : je vous propose un algorithme où il faut entrer 2 codes : le premier pour coder le modulo, et le deuxième pour coder le nombre, et le nombre d’arrivée est lui-même caché derrière un nombre aléatoire (avec Ans). Là c’est du solide ! Si vous pouvez faire en sorte qu’on ne puisse modifier le programme, alors le programme est en sûreté, d’autant plus qu’il y a 184^10^184^10^14 possibilités, ce qui fait…beaucoup de milliards de milliards…
Code
 "(10+X)sin(cos((10+X)^2"->Y1
Input "A=",A
ClrHome
Y1(A)-10[pi]((10[pi]<10)+int (Y1(A)/(10[pi]
Input "B=",A
ClrHome
Y1(A)-Ans((Ans<0)+int(Y1(A)/Ans->B
453->rand
rand
10^-3round(rand,4
If round(B,7)=11,937+Ans
Then
0
" " ->Y1
Disp " CODE ACCEPTE
Pause
Return
Else
0
" " ->Y1
Disp " CODE REFUSE
Stop
End

Le couple de solution est 1610 et 4^282 (soit 1312).
webmaster le 01/11/2007 à 23:24
Un article très intéressant...

@+ Le Webmaster beer.gif
Stupid le 02/11/2007 à 22:40
Citation
"7,5+x sin (cos (X^2"->Y1
Fn-Off
0->Xmin
10->Xmax
-.5->Ymin
5.5->Ymax
For(A,0,10,.01
Pt-On (A,Y1(A)-5((5<0)+int (Y1(A)/5
End


j'ai pas compris l'utilité du truc, ni ce qu'il y'a d'impressionant...
juste un debut de fonction et aprés des points...le graph de fucktime est bien plus impressionant minied.gif
coc5 le 03/11/2007 à 11:56
Il est intéressant dans le sens où on dispose d'une "fonction" dont on ne peut trouver l'origine à partir du résultat vu que c'est un modulo.
vibra le 03/11/2007 à 16:35
Voilà le but c'est pas d'avoir un beau graphique Baby, mais de ne pas pouvoir retrouver le nombre d'origine…
Stupid le 03/11/2007 à 17:00
ça me fait peur...
vibra le 03/11/2007 à 18:59
Baby a écrit :
ça me fait peur...

T'as raison, les modulos sont une bande de bêtes féroces assoiffée de sang Arrgggg… scared.gif
Sangohan38 le 03/11/2007 à 19:16
vibra a écrit :
sans


Jolie faute d'orthographe là.

Sangohan38
vibra le 04/11/2007 à 10:23
minied.gif Mais non c'est parce que les deux touches sont toutes proches… bon d'accord il y a quand même le F et le D entre… minied.gif
unknow le 11/11/2007 à 12:50
en quioi c'est utile?
vibra le 11/11/2007 à 14:10
T'as lu le premier post de l'article ou pas ??
mad67 le 14/11/2007 à 17:50
les modulos si j'ai bien compris divise jusqua ne plus pouvoir?
vibra le 14/11/2007 à 21:21
mad67 a écrit :
les modulos si j'ai bien compris divise jusqua ne plus pouvoir?

On les étudie en spé maths. La définition exacte c'est : (a congru à b modulo n) ssi (a et b ont même reste dans leur division euclidienne par n).
Ex : 15 est congru à 3 modulo 4.
unknow le 16/11/2007 à 19:39
si j'ai lu?? evidemment que oui, mais j'ai eu la flemme de comprendre laugh.gif
non serieusement j'ai absolument pas compris
vibra le 16/11/2007 à 20:42
Ça sert à crypter un code sans pouvoir le découvrir même en éditant le programme.
Stupid le 16/11/2007 à 21:42
au pire, si tu planque dans uen matrice+ un codetouche, si le gars il trouve c'est qu'il sait rpogrammer et si il sait programmer il vire les deux lignes
vibra le 17/11/2007 à 11:59
Oui je sais, mais bon c'était pour le principe…
tahmahal le 21/12/2007 à 17:08
J'aurais beaucoup aimé comprendre mais déja je cale : une fonction réciproque kézako?
vibra le 21/12/2007 à 18:26
Imagine que tu étudie une population de bactéries. Au début tu en as peu, puis le nombre augmente au cours du temps (il y a une augmentation exponentielle). En faisant des relevés régulièrement, tu vas être en mesure de trouver une fonction mathématique (ça s'appelle modéliser), que l'on notera f, et qui nous donne le nombre de bactérie n présentes à la date t. On note f(t)=n.
Mais ce n'est qu'un point de vu, car il est également possible de définir une fonction g qui nous donne la date t en fonction du nombre de bactérie n. On note g(n)=t.
Les fonction f et g sont des fonction réciproques, et on note g=f^-1.
Bref en conclusion, [f(x )=y] <=> [f^-1(y)=x]
Quand je dis que
vibra a écrit :
les fonctions modulées ne possèdent pas de fonction réciproque.
, je veux dire que quand on a une fonction normale f(x )=y, si on connaît y, peut retrouver x (presque tout le temps), alors qu'avec une fonction modulée g(x )=y, si l'on connaît y, on ne peut pas retrouver x, ce qui est particulièrement intéressant pour le cryptage.
J'espère avoir été clair. winkle.gif
webmaster le 25/12/2007 à 18:12
tahmahal a écrit :
J'aurais beaucoup aimé comprendre mais déja je cale : une fonction réciproque kézako?


Plus simplement la fonction racine carrée et la fonction carrée sont des fonctions réciproques car (sqrt(4))²=4. En gros, quand tu appliques la fonction et la fonction réciproque l'une après l'autre tu reviens au point de départ.

@+ Le Webmaster beer.gif
vibra le 25/12/2007 à 18:28
Finalement c'est beaucoup plus clair quand Webmaster répond ! winkle.gif
Akmdad le 29/06/2010 à 18:19
et puis pour le code le "pirate" peut supprimmer ces ligne et hop, plus de problèmes...
linkakro le 29/06/2010 à 20:54
-ça a déjà été dit donc remonter ce vieux sujet est un peu superflu (même si je le trouve chouette). Et puis c'est toujours mentionné dans toutes les discussions sur les protections.
-les programmes peuvent être protégés avec ZPROTECT. Cela limite le nombre de gens assez équipés.
-ce principe pourrait être appliqué dans d'autres langages.
C'est le même genre que le RSA.
Akmdad le 29/06/2010 à 22:56
oui... bien sur maitre linkakro
vibra le 22/08/2010 à 23:06
Hé ben, je ne pensais pas que mes vieux articles intéresseraient quelqu'un si longtemps après leur publication… laugh.gif

C'est bien, je vois que la relève est assurée. Continuez comme cela, et bonne programmation ! rollineyes.gif
Persalteas le 23/08/2010 à 15:43
tu reviens de temps en temps jeter un coup d'oeil avec nostalgie?
ton article est vraiment intéressant, vu que personne d'autre connaissait.
Sangohan38 le 24/08/2010 à 11:03
Citation
Plus simplement la fonction racine carrée et la fonction carrée sont des fonctions réciproques car (sqrt(4))²=4.


Finalement c'est bien de remonter les sujets des fois car le Webmaster à écrit une belle bourde là car ces deux fonctions sont réciproques que sur R+! (sqrt((-4)²)=4)

Sangohan38
vibra le 25/08/2010 à 19:44
Ouais un petit coup de nostalgie de temps en temps… happy.gif
Akmdad le 30/08/2010 à 19:06
vibra, d'après ce que tu dis, tu vas quitter le forum???
Persalteas le 31/08/2010 à 10:34
ça fait déjà un moment qu'il ne parle plus beaucoup...
C'est surtout que quand on est pas venu depuis longtemps on a la flemme de lire tous les suget qu'on a pas vus...
Akmdad le 31/08/2010 à 10:41
qui t'oblige a le faire?
les flammes?
sur le menu principal des forum, tu fait [marquer tous les forums comme lus]
Persalteas le 31/08/2010 à 10:42
je te rappelle qu'être sur ce forum sert a répondre au questions des autres et pas a les ignorer.
Akmdad le 31/08/2010 à 10:48
pas ds la section article
Persalteas le 31/08/2010 à 11:03
certes, mais c'est pas dans la section article qu'il y a le plus de messages à lire.
Akmdad le 31/08/2010 à 11:44
rhooo et puis zut
Cytropus le 02/12/2011 à 16:38
Salut à tous,
Désolé de rouvrir ce vielle article mais il y a deux trois points que je pige pas:
1: 4^282=1312 quelqu'un peut m'expliquer?
2: j'ai recopier le pgrm, relut 7 fois, il me met err div par 0
The K le 02/12/2011 à 20:53
Je sais que je suis inutile, mais :

(pas de commentaire xD)

1.Surement un truc de spé maths que je ne connais pas. (et ne connaitrais pas je compte prendre spé phys !)

2.Es tu sur d'avoir pris le bon programme ? En tous cas chez Vibra il a marché ... alors ...

3.Moi ne t'inquiète pas il y a BEAUCOUP plus de 3 points que je ne comprends pas godgrace.gif Je pense que le plus calé ici pour répondre serait Linkakro winkle.gif
linkakro le 03/12/2011 à 00:12
Ce motif me semble valable pour remonter un sujet.

Dis nous la ligne de l'erreur pour qu'on puisse la traquer.
Y1(A)-10[pi]((10[pi]<10)+int (Y1(A)/(10[pi] est propice aux erreurs.
[pi] désigne le nombre PI à écrire avec le caractère spéciale approprié.


L'intérêt de ce sujet est l'usage des divisions euclidiennes pour crypter des nombres. Et aussi vibra s'est amusé à crypter la clé de cryptage.

Dire que A est congru à B modulo C signifie que A=B+QC avec Q un entier relatif.
La division euclidienne en est un cas particulier.
Les congruences admettent des propriétés simples comme compliquées qui permettent de crypter de manière efficace.
L'astuce est que certains cryptages simples nécessitent des décryptages compliqués. Parfois il suffit d'une formule mathématique pour résoudre ce qui demanderait autrement un supercalculateur.

Je ne suis pas sûr mais 4^282 est probablement congru à 1312 modulo une clée puisque le programme semble basé sur une division euclidienne.
The K le 03/12/2011 à 11:25
Moi en fait j'ai une question globale, étant curieux naturellement ... ça veut dire quoi ça ?

Code
Y1(A)-10[pi]((10[pi]<10)+int (Y1(A)/(10[pi]
Input "B=",A
ClrHome
Y1(A)-Ans((Ans<0)+int(Y1(A)/Ans->B
453->rand
rand
10^-3round(rand,4
If round(B,7)=11,937+Ans


(ps : bon ... le clr home et input je connais ... quand même ... winkle.gif )
linkakro le 03/12/2011 à 21:30
Code
"(10+X)sin(cos((10+X)^2"->Y1
affecte une opération à Y1

Y1(A)-10[pi]((10[pi]<10)+int (Y1(A)/(10[pi]
revient à
Y-Pint(Y/P)-P(P<10
ce qui donne le reste euclidien de Y/P auquel on soustraît P si P<10

Y1(A)-Ans((Ans<0)+int(Y1(A)/Ans->B
revient à
Z-Ansint(Z/Ans)-Ans(Ans<0->B
ce qui donne le reste euclidien de Z/Ans auquel on soustraît Ans si Ans<0

453->rand
rand
10^-3round(rand,4

rand (NbrAléat) provoque un calul qui dépend de la précédente valeur du rand.
De plus on peut initialiser la valeur du rand et la prochaine lecture de sa valeur sera influencée.
rand sert juste à compliquer la tâche de quiconque espérerait décrypter, car la valeur générée n'est pas présente explicitement dans le programme.

If round(B,7)=11,937+Ans

effectue une opération bizarre sur l'image des rand pour vérifier que le résulat est valide.

Vibra a déterminé les valeurs du résultat expérimentalement en fonction de valeurs initiales qu'il a entré semble-t-il au hasard. Ces valeurs sont le code d'entrée et la constante du rand.
L'usage d'un modulo complique déjà le comportement mathématique mais en plus il s'est amusé avec des rand histoire d'avoir des nombres irrationnels dans les calculs.
The K le 04/12/2011 à 10:47
Ah ouais extraterre.gif

Ben je te remercie linka c'est quand même un peu plus clair bigmouth.gif

N'empêche que je serai content si un jour je fais un truc similaire xD (mais j'ai comme l'impression que c'est pas gagné ...)
Persalteas le 04/12/2011 à 16:38
vibra a pwned tout le monde avec cet article...
vibra le 11/09/2012 à 13:33
Je vous rassure, même après avoir fait Centrale, je ne suis plus fichu de comprendre ce que j'ai écrit. Je ne sais pas ce que j'avais fumé ce jour là... winkle.gif
En tout cas bonne programmation et vive la TI-82 !

PS : Hé oui, re crise de nostalgie qui me fait revenir sur ce bon vieux forum happy.gif
Persalteas le 11/09/2012 à 14:01
TOI !

ici !

beer.gif Je crois qu'on peut boire a ta santé ! Tu as fait de bons programmes happy.gif

Bonne continuation !

PS (tu as toujours ta 82 à Centrale ?)
The K le 12/09/2012 à 19:18
C'est qui le ... qui a remonté le sujet grrrr ? winkle.gif

Ah Vibra ? Heureux de te voir Vibra ^^

T'inquiètes : nous aussi on n'a pas tout compris je pense !
ashtrail le 13/09/2012 à 18:43
Je n'ai personellement pas compris pourquoi ça marche (les modulos) mais si on me dit que c'est vrai alors c'est vrai c'est comme ça en maths, du coup je demande pas d'explications, en rvanche je me demande si il y a un prgm qui protège d'autre prog de manière à ce qu'on ne puisse pas effacer ces deux lignes : ça rendrai cette protection invincible.
blg_flg le 13/09/2012 à 18:46
Il y a PROTECT bien sûr: https://tout82.pages-perso.fre[...].php?sujet=3337
ashtrail le 13/09/2012 à 18:51
Merci, donc en fait rien ne peut arrêter ce prgm, sauf que... a-t-il qqch de plus que PROTECT sinon c'est un prgm mathématique génial mais il n'apporte rien de nouveau (à part bien sur la-dite génialité mathématique)?
linkakro le 13/09/2012 à 19:04
Il y a aussi HIDE.

EDIT : oups je n'avais pas vu : nous pointons tous les deux vers l'article qui contient à la fois protect et hide
blg_flg le 13/09/2012 à 19:04
Bah si tu met un banal mot de passe de deux lignes avant un programme et que tu utilises PROTECT, ce programme (hors beauté mathématique) n'est pas mieux.



Pour Hide, il est aussi dans mon lien.