Annonce

Réduire
Aucune annonce.

Phénomène des séquences mathématiques

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel Phénomène des séquences mathématiques

    Bonjour à tous !
    Petit tutoriel sur les suites mathématiques, les générateurs de nombres pseudo-aléatoires et la cryptographie.

    Suites mathématiques

    Introduction

    Les suites se présentent sous deux formes.
    {Suite arithmétique} Un+1=Un+4 (Addition ou Soustraction)
    {Suite géométrique} Un+1=Un*18 (Multiplication, Division ou Puissance)
    (Ce sont purement des notions de 1ère. Ça ne doit pas poser de problème. )
    Autrement on note sous forme de calcul.
    {Suite arithmétique} Un = U0+4*n
    {Suite géométrique} Un = U0*18^n
    Là en général beaucoup d'élèves décrochent.
    C'est pourtant très simple. U0 indique la valeur de départ.
    Si on multiplie ou que l'on élève à la puissance de la valeur N, on calcule la récurrence dans un seul terme.
    Ensuite on peut l'appliquer à une fonction pour visualiser la courbe.
    {Suite arithmétique} f(x) = U0+4x
    {Suite géométrique} g(x) = U0*18^x
    Exception

    Certaine suites ne peuvent pas être transformés sous forme de calcul.
    Par exemple :
    Un+1 = Un*Un-1
    Ici, les termes appelés font partie de la suite.
    Pour calculer la chaîne, il est nécessaire de programmer une boucle.

    Suites démultipliés

    Autre exception qui permettra d'arriver au second point de ce tutoriel.
    Pour obtenir une suite démultiplié, il suffit de créer plusieurs fonctions liés.
    Exemple :
    f(x) = 4+7*x
    g(x) = 2*3^x
    h(x) = f(x)+g(x)+h((x-1))
    La suite démultiplié est bien entendu la fonction h().
    Elle fait appel à deux autres fonctions en parallèle.

    Générateur de nombres pseudo-aléatoires

    Introduction

    Les générateurs de nombres pseudo-aléatoires sont des algorithmes qui génère une série de nombres par séquence (ensembles de valeurs qui se répètent dans le temps).

    Sur une seule valeur on ne peux pas voir la répétition, il faut en observer une liste. Les nombres pseudo-aléatoires générés par l'ordinateur ne vous permettra pas d'identifier la suite, puis-ce qu'elle est basé sur l'heure.

    La graine (seed)

    Les générateurs utilisent des graines. Ce sont des valeurs génératrices qui changent la séquence utilisé, évitant ainsi une possible répétition événementielle. La taille de la graine importe peux, on va en discuter tout prochainement.

    Exemple de générateur de nombres pseudo-aléatoires en Python 2.7
    Code:
    # Par Yarflam
    # Python 2.7
    class random:
     def __init__(self,seed):
       self.y=seed if seed > 1000 else 1111
     def gen(self,a,b):
       self.y=(int(str(pow(self.y,2))[1:-1]) % 10000)
       self.y=self.y+1111 if self.y < 1000 else self.y
       return (self.y % (b-a))+a
    
    g=random(1111)
    i=0
    while i < 60:
      print g.gen(5,50)
      raw_input()
      i=i+1
    raw_input()
    J'ai un peux améliorer le générateur de Von Newman.
    Pour augmenter la taille de la séquence, la fonction utilise une variable stocké "self.y" et retourne uniquement le résultat compris dans l'intervalle [A,B[.

    Vous suivez toujours ?! La difficulté à totalement basculé.
    D'ailleurs je pense que vous ignorez pourquoi j'ai fais un tutoriel sur les suites numériques et les générateurs de nombres pseudo-aléatoires. Patience ...

    Cryptographie

    Oui, oui la cryptographie !
    La plupart des systèmes cryptographiques ont un point faible : les séquences.
    Il s'agit d'une suite mathématique que l'on ne voit pas forcément mais qui impacte sur la sécurité du chiffrement.
    Les chiffrements asymétriques, tel que le RSA, sont encore plus sensible à ce genre de phénomène mathématique.

    Observation

    Pour comprendre le mécanisme, étudions les répétitions des suites arithmétiques et des suites géométriques.
    Voici les résultats :
    Code:
    Suite arithmétique
    
    +1 (0)123456789
    +2 (0)468
       (1)3579
    +3 (0)369258147
    +4 (0)4826
       (1)5937
    +5 (0)5
       (1)6
       (2)7
       (3)8
       (4)9
    +6 (0)6284
       (1)7395
    +7 (0)741852963
    +8 (0)864
       (1)9753
    +9 (0)987654321
    
    Comment ça fonctionne ?
    Sur le côté vous avez la suite +1/+2/+3..., la valeur entre parenthèse est celle de départ.
    Par exemple avec la suite +3, on part de 0.
    
    0+3 = 3
    3+3 = 6
    6+3 = 9
    9+3 = (1)2
    2+3 = 5
    5+3 = 8
    8+3 = (1)1
    1+3 = 4
    4+3 = 7
    7+3 = (1)0 --> Retour à la case départ.
    
    On peut observer un parallélisme inverse.
    Soustraire 3 ou ajouter 7 reviendrai à la même chose. 8-3=5, 8+7=(1)5.
    Idem avec les couples (1,9) (2,8) (4,6).
    
    Yarflam est fou ! oO
    Attendez j'ai pas fini. ;)
    
    Suite géométrique
    
    *2 (1,3,7,9)->2486
       (5)->0
    *3 ->3971
       ->2684
       ->5
    *4 (1,9)->46
       (3,7)->28
       (5)->0
    *5 ->50
    *6 (1)->6
       (2)->2
       (3)->8
       (4,9)->4
       (5)->0
    *7 ->1793
       ->2486
    *8 (1,3,7,9)->2684
       (5)->0
    *9 ->19
       ->28
       ->37
       ->46
       ->5
    
    Petit changement de notation.
    Les valeurs entre parenthèses n'apparaissent qu'une seule fois dans la suite géométrique.
    Exemple avec le multiple de 6, 9 donne :
    9*6=(5)4
    4*6=(2)4
    
    Pareille à la suite mathématique, on retrouve des similitudes inverses.
    *7 et *3, *8 et *2.
    Bon, j'ai peut être fumé la moquette en lançant cette expérience.
    Mais elle est plutôt concluante pour expliquer le phénomène des boucles mathématiques.

    Chiffrement en RSA

    Pour déchiffrer du RSA, on part du principe que chiffrer N fois la valeur permet de retrouver la valeur initiale.
    Voir mon script de RSA

    Code:
    i=tant que y différent de x(
     y=chiffrement(y)
    )
    
    tant que j différent de i(
     y=chiffrement(y)
    )
    Dans ce code source, on observe deux boucles.
    La première calcule le nombre de tour pour que la valeur X chiffré en RSA retourne à sa valeur initiale X. Cette donnée est sauvegardé dans i.
    La seconde, boucle sur i afin que la valeur Y chiffré en RSA retourne à son couple X.

    Génial, non ?! Ce genre de petit problème est lié au phénomène que nous avons étudié : les séquences.

    Conclusion

    Les systèmes mathématiques (ou cryptographiques) ont un problème de séquence. Pour des chiffrement asymétriques, il suffit de compter sa taille et de boucler le nombre recherché. Pour des suites mathématiques et géométriques, on peut très simplement deviner la logique qui s'exerce dessus. Et pour les générateurs de nombres pseudo-aléatoires, elle restera une limite à son développement.

    Attention, ce tutoriel n'est pas définitif. J'aurai sans doute besoin de ré-expliquer certain passages. Il est loin d'être facile à comprendre pour tout le monde..

    Postez vos questions.
    A bientôt !
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

  • #2
    Pourquoi je ne peux pas ré-éditer mon post ?!

    Petite image à rajouter après le générateur de nombres pseudo-aléatoires.
    Gen.jpg

    Code:
    17372941412527481619131432402020564426294918433723333294222394431572822739432842
    36184942468552015303525114932234641172432431816273525102015303525114932234641172
    43243181627352510201530352511493223464117243243181627352510201530352511493223464
    11724324318162735251020153035251149322346411724324318162735251020153035251149322
    34641172432431816273525102015303525114932234641172432431816273525102015303525114
    93223464117243243181627352510201530352511493223464117243243181627352510201530352
    51149322346411724324318162735251020153035251149322346411724324318162735251020153
    03525114932234641172432431816273525102015303525114932234641172432431816273525102
    01530352511493223464117243243181627352510201530352511493223464117243243181627352
    51020153035251149322346411724324318162735251020153035251149322346411724324318162
    73525102015303525114932234641172432431816273525102015303525114932234641172432431
    81627352510201530352511493223464117243243181627352510201530352511493223464117243
    24318162735251020153035251149322346411724324318162735251020153035251149322346411
    72432431816273525102015303525114932234641172432431816273525102015303525114932234
    64117243243181627352510201530352511493223464117243243181627352510201530352511493
    22346411724324318162735251020153035251149322346411724324318162735251020153035251
    14932234641172432431816273525102015303525114932234641172432431816273525102015303
    52511493223464117243243181627352510201530352511493223464117243243181627352510201
    53035251149322346411724324318162735251020153035251149322346411724324318162735251
    02015303525114932234641172432431816273525102015303525114932234641172432431816273
    52510201530352511493223464117243243181627352510201530352511493223464117243243181
    62735251020153035251149322346411724324318162735251020153035251149322346411724324
    31816273525102015303525114932234641172432431816273525102015303525114932234641172
    Code:
    # Yarflam
    # Python 2.7
    class random:
     def __init__(self,seed):
       self.y=seed if seed > 1000 else 1111
     def gen(self,a,b):
       self.y=(int(str(pow(self.y,2))[1:-1]) % 10000)
       self.y=self.y+1111 if self.y < 1000 else self.y
       return (self.y % (b-a))+a
    
    k=''
    g=random(1111)
    i=0
    while i < 5000:
      k=k+str(g.gen(5,50))
      i=i+1
    print k
    raw_input()
    On voit bien que les nombres se répètent - des lignes diagonales se voient à l’œil nue. Ce phénomène de répétition est une plaie pour tout les mathématiciens et cryptographes, détruisant les chiffrements asymétriques et les générateurs.

    @++ Si vous avez des questions, n'hésitez pas !

    Edit :
    Le générateur de nombres pseudo-aléatoires de Windows est beaucoup poussé (la graine utilise l'heure):
    Code:
    1590753366152842973506663456499044034320834636686220847187375694931222225170394
    8102020278059292083376324188963267417884023378804458993297898780031234296199546
    7477905609300762838960673942157691507694805382616315908808956941421822600419551
    3862035746835058086860711570301626106093677174487153183522262284693746432030733
    1876519237784194072357264631397474950450217546393354990793753125181429598923538
    7837904649455515184926311416583852843030695187518511509705131232693679123079726
    4052771690021324390410070909849518977048154562787085329269073853042555893361842
    2776331566989801410456566173286133551792985762904094724424896661334210520253097
    9850212236687392927202724292653153836087588753032314398877356527903419584410029
    9934288191664652372050902787962269263124108634434836215335224672739877859377488
    7857142915546055688952287766206743717461046553522315117725208553177468568660035
    6112922764845930305808023625055513207058967708665281417624557056867609356860996
    8964033386453214606879634091750860832758782477042377211262833915244212330263515
    3129570767972098614533560471433428204792145765253979655437651377365376037278780
    5873706181091526453868920852340820293324891212200469892037840803951643369124836
    0769523285634111299152309794684375065482901304363890613101529755340234213928358
    7887751512590473232084320956754377958930952843342212370458291338589669156041941
    2121724345831525109153466945238006694371368900605151484931375361859538541493298
    8177812521760944289952770103829731164631643016319948507673194740594686700645761
    6642179497988425947778976916622357345378248404390436235130222740334573715887480
    5437203307776786219294711728142626418259529087972195865779420703145354901705858
    4664337267332588733174842912092774684620582032327145122610170970432756253515775
    2977570256597230830578875236626264279728133943245493695204502703324344960340898
    2224789240766625171553916823930186205090179500744820687549870493932948921457113
    5923232859623030693441390573225917989416667248173195488897635787125441363240733
    9752986321133620125443961477117487204726147265239399975064401021957658605385756
    9592414075599435066204872558225349993075201287296512893248661979375464587335777
    9413467857469625828049727925938334039075917468824091080059934221276170526098735
    8501581163549899301646638307140969085148617006717407250765900787728627913678415
    2638515774856046166785393853083464748881021614734434798640808630645248301146752
    1563745246692537858119498478892757985798315505283660441833546790161026457102686
    7556112377546815022148777178611887302876328558248056716930659987450349758745802
    2543513832230841467024008384534483925764548803557356721347408700381612658987418
    8578473210874655097984464824553493824064250498131499138650624826003608716289602
    2158077410646664437525407599736529016423657524495538527480522690156749321165462
    9627137120383958113865257030877182155063774762273809315318729511620625796766560
    8760278387258796220509313923247405152470418430011975952468746552102483080138778
    6547680564286826461904342609549730548802456301561491270565341982155805451120238
    6524516825392755816878314737723116544086555718453861969418528034756092276021346
    6881589304983946736216618855345883744694358291437593287443838192607619581894424
    1977299503046585135886491579597975119588837178471225527182740322269961144935064
    9427212024286826741716350586348447731323432641192246169406221964537688588393241
    8820836216083157522914102619361093298223054997602380175562519579737473734259105
    5974289374548240943067878110917671826248893568916172947722075801522919213561684
    3369265143325667754503361520306192704670152533668136619328649725268651085015204
    8503602485317480686500232748954649927782735512124268809480185963419034700904463
    0694742914434976102484542242158690211337670128823402651603334877714961639440941
    2950127924919916957046620650732060715090167128505041679865894644840866819992294
    4321445346632304845976637210030807920629556633775655016555548598775895898496616
    9842439414565389789496483090640723456456422686219073906292404143362768832231989
    7646616577998289384440395101303482552379282837417317320485460208692913823271332
    Code:
    @echo off
    REM MS-DOS
    set /a j=0
    set /a width=78
    set /a height=500
    
    :boucleA
      set /a j=j+1
      set /a i=0
      set r=$
      if %j% GTR %height% goto end
    
    :boucleB
      set /a i=i+1
      set /a k=%random% %% 10
      set r=%r%%k%
      if %i% GTR %width% goto view
    goto boucleB
    
    :view
      set r=%r:$=%
      echo %r%>> out.txt
    goto boucleA
    
    :end
      type out.txt
      pause>nul
      exit
    Edit 2:
    A propos du générateur de Von Newman, j'ai fait une erreur transcription.
    Code:
    Remplacez la ligne :
    self.y=(int(str(pow(self.y,2))[1:-1]) % 10000)
    par :
    self.y=(int(str(pow(self.y,2))[2:-2]) % 10000)
    Ça permet de grossir la séquence.
    Dernière modification par Yarflam, 17 avril 2013, 12h54.
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

    Commentaire


    • #3
      Allez je vous donne un autre générateur. La séquence est un peux plus conséquente, tout dépend des paramètres (affichage, intervalle, graine etc ...)

      La suite de Fibonacci :
      Code:
      # Yarflam
      # Suite de Fibonacci
      # Python 2.7
      class random:
       def __init__(self,seed):
         self.n=10000
         seed=(seed % self.n)+1
         self.y=[seed,seed]
       def gen(self,a,b):
         self.y[0], self.y[1] = self.y[1], (((self.y[0]+self.y[1]) % self.n)+1)
         return (self.y[1] % (b-a))+a
      
      k=''
      g=random(24)
      i=0
      while i < 5000:
        k=k+str(g.gen(5,50))
        i=i+1
      open('out.txt','w').write(k)
      print k
      raw_input()
      Code:
      11374432271033392313324114414133254410404637241232301329288322644216131524253511
      42393212303819813716193136185945546373422425434428133746342141134049302046171417
      27308342848176192126334519153031472917324528143848271639631234014554132144242251
      83984337214416464845444025163739177202329388424629266181024304011479424740281943
      48323149313148209253041124947373513444328224619162123304930203642191227354824234
      31746494636231029254064234174715131413233262416364825142535113229472715283918434
      74139214685443530164293742301329284322624263648352445206222432421581913181731441
      64613101915203137942473018344833224149413113404940301137341242533248182226341141
      48302910252132493222523142333422692126432014304011374422725183983327462421313820
      91510111714273752829431371691116132524351041472927421048981317262941214820192530
      63224427454834238272144636382549151526274927173043248283246291641835295302147197
      12513141313223149212128351445106124947474543292348124696114810954546422912374533
      19488424639362613253445201632442712253393843226141626284019101521223912373513343
      31837412911364320492020264219477403324431812161416263852930452612243273528142828
      73134163648252445104137194212403829184312413931214820915202127442271518192338473
      63411312810343053132143232154394843322692116334519520213744221735483423431711141
      12128351435352172427471513242333421644116484029204563739277303349333372619411138
      35241020162234421710232948181731346262840945536271427275281933382211191631335343
      51041371972225339383312313921461815193045164714121220182438134711446463825143535
      11323922472081418283211393616385393010263292722451849881261461618202430531223912
      47453329132827619112623459404536321947175181923284716491616182034535361234421745
      13984842412462628529203562729722152324438476393111283514454531279221735381448483
      73624112118253915404132144273528491818222644216131524351031279322710232948187114
      91111815192025317342712353393843321644464128103440251637492727408444843422619314
      62815293045262234737308241838731246168201420304627143737154814481312119162123303
      91045637291732351849843474129213683024525264724122230481918333711444136285191015
      21324922123038943382211292662820445453622927321038443318471649664335291530412249
      12122018242838176911161315142535463229472725381438482726491668453935154612444227
      20333923133241246161820345251627297322543191328376292146181519203541279222745239
      18232736144611854435306222442174548444328123634114148402910354127193237208241828
      42114911464330244015674437224518491818222634462118353925152637493737153839288323
      69313683034153536224474740281943484231144164335195201117243747353392823471196464
      84544402516373917421038443318374129112633102935153647242232402314334327213441268
      20244053132493222401349131312111926418454935251122193742302339483837163964133153
      43520612142222303819813769466384029102521323912373523918131726396413315441051147
      94237301834483322411466434539255262739742452814383817619213683024515617193237104
      34943331746494646332049201016223442272033391338473634113138103440256271942474038
      19434832213946362310292540164244373220384433281226244611859454036271437472513344
      32822364431164310393525461297121513141323224114414123152425452117343712458494343
      37214463638254915152627491772023394828276191116232544104046373422715891318172124
      41643452915404122143232154344282347219263143159101521222937174043342848271639412
      11330392010161214223240231423234216444631281034305312239124710434933237262963123
      40494040214797475382918431264941413315441040361749177101398137161921263310292551
      61729324730284413874649363623459404526224473730834381337362411211835392551617294
      22251314131322212946261325344530264294742302339133847261436463330143030462724371
      24543292338123634216232544205111291722253393833124149313113302910353117344732203
      84423817213462618409455362749271740834284817691164854940301137442217252849282872
      12431412315344520622243272518398433721916213340144040311239472715282943231726294
      11148104440352612242242154394843321634462118253915404122492212202844134342361961
      14810915203147197121523244318476394131134049302046171417173033493323421691116232
      53410303672932124048393818421139362648151425254612447474038298232746144611854445
      40261739423215434438231231294616485393010364219477543342813273614363623451952021
      27344722102824381337463421411354940402147191732451849884741393121381034301541744
      @++
      Dernière modification par Yarflam, 17 avril 2013, 13h26.
      ~ Yarflam ~

      ❉ L'Univers se dirige vers son ultime perfection ❉

      Commentaire


      • #4
        C'est le style de truc qui ma toujour intéresser ^^ savoir comment marcher ces fonction, je soupçonné la
        présence de suite mais je n'ai jamais approfondi le sujet.

        Commentaire


        • #5
          Envoyé par SpiritWhite
          Je n'ai jamais approfondi le sujet
          Je pense qu'on peut faire davantage d'expérience sur ces fameuses suites.
          Notamment casser le RSA d'un seul calcul, deviner une suite ou créer un générateur de nombres évolutifs.
          Ce que permettra les machines quantiques. Mais on risque pas d'en voir de sitôt.
          ~ Yarflam ~

          ❉ L'Univers se dirige vers son ultime perfection ❉

          Commentaire


          • #6
            Etant donné que le RSA est géré par des équations je pense qu'en effet c'est possible de le cassé mais avec des suites ? pas sur ...
            Que veux-tu dire par nombre évolutif ?

            Les machines quantiques, ils font des recherches dessus si je me rapelle biend d'un article les premiers calculateur quantique ont était fait au alentour de 1990 ... Mais oui on est pas prêt des les voir encore ^^' ...

            Commentaire


            • #7
              Envoyé par SpiritWhite
              Que veux-tu dire par nombre évolutif ?
              Un concept qui m'ait venu à l'idée : créer un groupe de créatures virtuelles s'influençant mutuellement. En prenant en compte par exemple les collisions. Si ces dernières affectent le mouvement des autres créatures, ça ne peut que bouleverser la suite.
              ~ Yarflam ~

              ❉ L'Univers se dirige vers son ultime perfection ❉

              Commentaire

              Chargement...
              X