Archive for December, 2009

Cryptographie, sécurité, nombres premiers et un test de psychologie assistée par ordinateur…

Monday, December 21st, 2009

Alors voilà.

Après des mois d’absence je suis de retour.

Et même pas avec un article qui fait rigoler.

Tout fout le camp.

Joyeux Noël quand même !!!

Bon, vous vous foutez royalement de la cryptographie et des théories mathématiques portant sur les nombres premiers. Vous ne vous intéressez pas plus à tous ces tests psychologiques qui fleurissent (ou moisissent…) un peu partout tant sur le web que dans les magazines féminins. Ben vous n’avez pas de bol, je ne vais parler que de ça dans ce très long article et vous allez vous faire chier mignon.

Premier test psychologique, vous allez quand même rester et continuer à lire. Premier résultat positif pour mon test, première preuve que quoiqu’il arrive, vous n’écoutez pas ce qu’on vous dit.

Alors passons à notre cryptographie. D’abord la crypto-machin-là, c’est quoi ce bordel ?

Résumé facile et grosso-modo vite fait bien fait : c’est la science qui étudie les méthodes qui permettent de crypter un message, c’est à dire le rendre illisible pour quiconque n’a pas le code pour le déchiffrer. Et ça suffira bien pour aujourd’hui comme explication parce que ça n’est pas l’objet de la fascinante étude à laquelle, sans le savoir, vous êtes en train de vous livrer, alors même que je vous ai prévenu, vous n’écoutez pas ce qu’on vous dit, vous feriez mieux de passer votre chemin, ça va vous énerver… Disons que la cryptographie c’est un peu comme une serrure.

Il était une fois une gentille petite vieille dame qui vivait seule dans une vieille ferme isolée. Un beau matin de printemps un jeune homme vint frapper à sa porte.

- “Bonjour Madame, je vois que vous avez là sur votre porte une vieille serrure qu’un cambrioleur pourrait forcer en quelques minutes, vous êtes au risque de tout perdre !”

- “Oh vous savez j’ai pas grand chose à perdre, je ne possède rien de valeur”

- “Mais Madame, vos petites économies, vos meubles, vos souvenirs, ou même votre vie ! Que se passerait-il si vous vous faisiez attaquer, si seule au milieu de nulle part, personne ne pourrait entendre votre appel au secours !”

- “Ah ben crotte oui mon Dieu, vous avez bien raison”

- “Heureusement je représente la société DANTONKU Sécurité, pour à peine 24800 euros je peux vous installer un système d’alarme relié à notre centrale qui en cas d’intrusion de quel type que ce soit dans votre domicile vous permettra d’être secourue dans les 5 minutes”

- “Merci mon brave, vous êtes un ange”

- “De rien rendez-vous dans une semaine, jour où nous allons vous installer tout ça”

Et la gentille petite vieille ne ferma plus l’oeil de la nuit, jour après jour, en attendant dans l’angoisse et l’insécurité le moment béni où enfin elle aurait son alarme…

Bon, ok… vous êtes toujours là…

Le rapport entre la cryptographie et les nombres premiers ?

Bah, encore plus simple résumé, les méthodes actuelles les plus répandues de cryptographie se basent sur les particularités des très très trèèèès grands nombres premiers. Voilà, ça suffira pour la suite si vous voulez en savoir un peu plus là dessus, demandez à Maurice Google ou Jean-François Wikipedia, mais je vous re-re-préviens vous y capterez que dalle. Et en particulier les très célèbres PGP (Pretty Good Privacy que ça veut dire ma ptite dame) et son pendant GPG (GnuPG, Gnu Privacy Guard, non non c’est pas un ruminant africain qui surveille les hangars la nuit…) sont basés sur ces comportements particuliers des nombres premiers trooooop trooooop grands (et ça c’est quand même super choupi lol !!!!!1111).

Oui, mais voilà, grâce à votre Jean-Claude Caca préféré, tout peut devenir limpide ! A votre niveau, livrés à vous même, car vous êtes cons, vous n’y comprendrez rien. C’est pourquoi (et je ne voudrais pas insister lourdement...) il est toujours temps de renoncer et tourner les talons. Alors faites ça, merci…

Non hein ?! Toujours là. Ok je vous dis, je le sais, vous êtes cons et vous n’écoutez jamais ce qu’on vous dit

“Toi même Jean-Claude, on n’est pas plus cons que toi !” vous entends-je déjà maugréer…

Bon ben tant pis, je vais être obligé de vous le prouver… m’en voulez pas, vous ne pourrez vous en prendre qu’à vous-même…

Alors un nombre premier c’est quoi ?

Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs, qui sont alors 1 et lui-même (François-Henri Wikipedia, le petit frère de celui de tout à l’heure…).

Pour les plus simplets je vais reformuler en ultra-simplifiant, écoutez bien ce que je vous dis et retenez : un nombre premier est un nombre qui ne se divise que par 1 et lui même. C’est à dire que si vous le divisez par n’importe quoi d’autre vous obtenez plein de bordel après la virgule sur la calculatrice de la grosse Céline de la compta et jamais un entier, un nombre bien gentil sans tout le bordel après la virgule même sur la plus grosse calculatrice de la boulangère de la rue d’à côté qui a des tout aussi grosses miches (la boulangère, pas la rue).

Exemple : 6 n’est pas un nombre premier car 6 divisé par 2 est égal à 3. Il peut donc être divisé par autre chose que 1 et lui même 6. En revanche 7 est un nombre premier car :

7 / 2 = 3,5
7 / 3 = 2,333
7 / 4 = 1,75
7 / 5 = 1,4
7 / 6 = 1,166

Voilà, reste plus que 7 / 1 = 7 et 7 / 7 = 1

Ayé ? On est clair ?

Ouais vous avez déjà eu un peu de mal… Bon ok, je ne vais pas être salaud… Pour cet article on va mettre la cryptographie de côté, et on va s’en tenir aux nombres premiers et à savoir si vous êtes aptes à y comprendre quelque chose. Et je sais que non. Car… on répète tous avec moi :

“VOUS N’ECOUTEZ JAMAIS CE QU’ON VOUS DIT !!!”

Et oui je sais que de une vous vous en branlez royalement des nombres premiers, et que de deux vous êtes trop stupides pour pouvoir être lavés de votre imbécilité crasse.

Allez je déconne… je vous aime et qui aime bien taquine bien.

Mais soudain, sortie de nulle part (enfin si, de ce blog…) une information surprenante vient frapper votre petit cerveau mollusquoïde :

Il existe des gens dans ce monde qui eux ont compris que les nombres premiers c’est intéressant, et qu’en plus c’est putain de super dur à trouver ! comme on dit dans toutes les cafétérias de toutes les universités de tout le monde occidental.

Je cite :

Des milliers de dollars pour des millions de chiffres

L’Electronic Frontier Foundation (EFF, association de défense et de promotion de l’utilisation de l’Internet) a annoncé, en mars 1999, que le don d’un mécène anonyme, 50 000 $ serait attribué au premier individu ou groupe qui découvrirait un nombre premier de plus d’un million de chiffres décimaux. Ce prix a été remporté quelques mois plus tard par les découvreurs de 26972593 -1. Un autre prix, de 100 000 $ cette fois, récompensera la découverte du premier nombre premier de plus de 10 millions de chiffre décimaux (il y a aussi 150 000 $ pour la découverte d’un premier nombre premier de plus de 100 millions de chiffres décimaux, et 250 000 $ pour le premier nombre premier de plus d’un milliard de chiffres décimaux).

Ah, ça vous troue le cul hein ?!

Les nombres premiers ça peut rapporter des sacrées pépettes ! Sans compter que si jamais un créateur de génie trouvait une formule mathématique “magique” ou parvenait à écrire un programme informatique suffisamment rapide pour calculer tout ce petit bordel dans des délais raisonnables, il serait un génie (ah, merde, je l’ai déjà dit) et un génie riche (enfin un peu plus riche qu’au départ… parce que faut pas non plus exagérer 250 000$ c’est pas l’euromillions non plus…) et c’est là que le monde est mal foutu, car quand on est con, on joue à l’euromillions et on pourrait (en théorie…) gagner bien plus…

On va donc voir ici même dans quelle catégorie vous pourrez vous ranger (je sais où vous finirez… mais pour vous consoler dites vous que du coup vous aurez peut-être l’euromillions…)

Alors voilà, vous avez vu la méthode est simplissime, on prend un nombre quelconque, on le divise par 1,2,3,5,7 (oui, certains calculs sont inutiles à tester… si votre nombre n’est pas divisible par 2, il ne le sera pas par 4… vous me suivez… on peut économiser des divisions… et c’est justement là tout le problème, ECONOMISER LES CALCULS INUTILES qui consomment du temps)… etc… jusqu’à trouver un entier. Si on n’en trouve pas, ben twingo ! Votre nombre est un premier.

Car oui, le temps de calcul est la clé de ce problème bien simple. Vous réalisez que très rapidement, passés les premiers nombres premiers, les calculs deviennent de plus en plus longs et de plus en plus nombreux…

Faire 5 divisions avec des nombres compris entre 2 et 6 pour découvrir que 7 est un nombre premier ne prend que quelques millièmes de secondes sur les ordinateurs actuels. Mais que se passe-t-il soudain quand on veut vérifier si 43567894354589890856597878782732688762553421 est un nombre premier ?

Ben rien, on lance le programme, et on attend… Et pour de très grands nombres on peut attendre… des jours, des mois, des années

Si si…

Sauf si un jour notre génie sus-cité trouve un algorithme, une nouvelle méthode de calcul, une autre formule mathématique, pour effectuer ce test.

Bon, vous savez tous que je suis un génie de l’informatique, et vous savez tous aussi que je suis encore plus un génie du fonctionnement de l’esprit humain (et oui modeste, je sais merci…). Et si on croise les deux on entre dans le monde merveilleux de l’intelligence artificielle, monde dans lequel les ordinateurs sont soudain capables de réaliser des prouesses encore inimaginables, et où…

Ouais ok…

Donc voici notre premier test, amené à prouver deux choses, la première c’est que je suis un génie, la deuxième c’est que vous n’y comprenez décidément rien aux nombres premiers et la troisième (ben si, troisième si je veux…) que vous n’écoutez pas ce qu’on vous dit.

L’algorithme utilisé ici est extrêmement simple. La magie viendra plus tard dans cet article.

Ne passez pas des heures ici (sauf si ça vous amuse… car je le sais… vous n’écoutez blablabla…)

Vous entrez deux nombres entre 2 et 88 (ben oui on multiplie pas par 1… ça serait quoi l’intérêt ??? et 88 parce que, comme je l’ai expliqué, mais suivez bordel ! dès que les nombres deviennent trop grand les temps de calcul pour les algorithmes classiques deviennent rédhibitoires) et le programme va effectuer la multiplication de vos nombres et regarder si le résultat est un nombre premier. J’ai choisi la limite à 89 pour ce premier algorithme parce que 89 x 89 = 7921 et que le 1000ème nombre premier est 7919 donc juste avant. Mais c’est pour simplifier. Et puis on s’en fout… Allez… de 2 à 89, facile hein ??? Ouais ben faites les malins… Vous verrez par la suite… Allez lancez-vous…

Ah oui, il vous faut avoir Adobe Flash Player installé sur votre naviguateur pour accéder à l’interface de mon programme. Si vous ne voyez pas le gros carré rouge ci dessous avec des cases oranges pour saisir vos chiffres… ben euh… allez vous faire foutre… Sinon allez-y amusez vous… et rendez vous plus bas pour la suite dans quelques minutes…

Bon ok, j’ai limité à des petits nombres, mais quand même… Rapide non ?

Bon, allez, assez joué dans la cour de la maternelle, maintenant on attaque les gros travaux… Les vrais grands nombres, et le point culminant de ce merveilleux test que vous êtes en train d’effectuer qui sera probablement l’aboutissement orgasmique de mon génie sadique et néanmoins fascinant.

Plus aucune limite dans la taille des nombres, un tout nouvel algorithme diabolique et encore tout fumant qui, si jamais vous êtes amateur et connaisseur devrait vous laisser sur le cul… Mais comment est-ce possible ??? Comment a-t-il osé pousser l’informatique dans de tels extrêmes ?!? Allez bientôt vous saurez tout, LE SECRET, si, si le vrai car je ne suis pas un salaud, je vais tout vous dire sur ce secret… Je vais vous dire comment il est possible de calculer aussi vite des nombres aussi vertigineux… Et je vous livrerai par là même le secret de cette étude qui pourrait révolutionner le monde des mathématiques en prouvant que oui… le cerveau humain a des failles de fonctionnement que l’on peut exploiter à son avantage pour arriver à ses fins, qu’elles soient louables ou honteuses… Et un ordinateur peut-être utilisé de la même manière pour ce même but. Car comme disait René Pirelli, le célèbre philosophe pneumo-calendrien, sans contrôle, la puissance n’est rien…

Allez-y, lachez vous dans les chiffres, rentrez dans chacune des deux cases des nombres de cent quatre vingt quarante douze millions trente deux trois cent milles dollars cents chiffres décimaux qui seront alors multipliés l’un par l’autre les rendant encore et encore plus vertigineux… et hop ! Le miracle… comme si de rien n’était… (bon euh… ça peut prendre quand même quelques loooongues secondes hein… suis un génie pas Merlin l’Enchanteur ou Mary Poppins)… hop disais-je un résultat infaillible, et je ne déconne pas, le test est bien réel, et réellement infaillible, c’est pas des conneries malgré les apparences, le test vous dira réellement si le résultat est un nombre premier ou pas, promis juré craché que je ne plaisante pas…

Et là soudain je ne vois plus personne qui rigole… Car oui, c’est pour de vrai… Le résultat est véridique, valide, réel, pas pipeau, euh c’est bon… c’est rentré là ???

Pour des raisons évidentes de place le nombre résultant de la multiplication n’est pas affiché s’il n’est pas premier (je ne vois pas l’intérêt de trois pages de chiffres juste pour le fun alors que seul savoir s’il est premier ou pas compte…)

En revanche bien sûr s’il est premier il s’affichera, oui, je suis grand seigneur et je travaille pour le bonheur de faire progresser la science et les petites gens comme vous… et pas pour gagner les 250 000$, je vous les laisse… Suis comme ça moi… L’Amour de la recherche, le bonheur du travail accompli et le respect de son petit prochain… Aaahhh…

Bon comme c’est indiqué dans la mise en garde du programme qui suit, je ne peux pas vérifier si vos nombres entrés sont corrects, les temps de calcul seraient trop longs.

Ceci est du à la nature même de la méthode utilisée, qui n’est pas basée sur des calculs itératifs mais sur une analyse du problème en regardant quels sont les nombres entrés et en les découpant, et quelles sont les opérations à effectuer, en les analysant sans avoir besoin de les réaliser, l’ordinateur connait déjà le résultat, avant même de faire le calcul.

Pour utiliser une analogie, si je vous montre une plume et une boule de bowling et que je vous demande laquelle est la plus lourde, vous n’aurez pas besoin de les peser pour répondre. Vous saurez que la plume est plus légère d’office. Imaginez maintenant que je vous montre une caisse de plumes et une caisse de boules de bowling. Vous n’aurez pas besoin de plus de temps ou de plus de pesées.

Du coup le temps de calcul est à peu près identique et à peu près constant, que les nombres soient petits ou grands. Si, si, ben essayez…

Donc du coup, saisies correctes ou pas, je lance l’algorithme quoi qu’il arrive et si jamais en route il s’avère qu’il y a une erreur dans ce que vous avez tapé, le programme rend la main automatiquement en indiquant que le résultat ne sera pas un nombre premier, ce qui est le cas puisque les calculs sont impossibles…

Faites donc attention à ce que vous tapez si vous voulez des résultats cohérents. Je pense en particulier au réflexe de taper au clavier des centaines de chiffres sans regarder et insérer malencontreusement un + ou un - ou un !, bref vous voyez !

Allez, jouez un peu et rendez vous après pour vous livrer mes résultats et l’explication scientifique de ce prodige…

Bon, alors ça y est ?

Avez vous été chanceux ?

Avez vous trouvé le nombre premier que le monde entier recherche ?

Ca vous a quand même troué le cul la puissance de calcul non ?

Allez honnêtement ?

Naaaan sérieux… reconnaissez…

Alleeeeeeez !!!

Mais bordel merde quand même !!! Vous avez vu la taille de vos chiffres ?!?!?!

Et ça a pris quoi ? 10, 20, 30 secondes ?!?!? Nan sérieux !!!

Ben oui hein…

Revenons à notre gentille petite vieille que je suis sûr vous aviez déjà oubliée… C’est elle qui va vous permettre de comprendre comment tout ça fonctionne (je sais je suis un Dieu de la didactique…)

- ” Bonjour Madame ! Je suis ici pour vous libérer de vos angoisses et de vos peurs !!! Je suis ici pour vous installer votre alarme ! Avez vous les 24800 euros ?”

- “Ah ben non…”

- “Comment ça ? Mais… Mais… vous n’avez pas peur ?!?! Vous n’avez pas peur ?!?!?! Vous n’avez pas écouté ce que je vous ai dit ?!?!?!”

- “Ben si justement… J’ai bien écouté ce que vous m’avez dit… Et j’ai bien réfléchi…”

- “Mais… Et alors ??? Et les cambriolages ?!?!?! Et les agressions ?!?!?!? Et votre sécurité ?!?!?!? Et mes 24800 euros ?!?!?!?! Vous ne voulez plus de mon alarme ?!?!?! ”

- “Ben non… j’ai changé ma serrure…”

Voilà, voilà… oui ben oui euh… et c’est à dire ???

Je mets à disposition de tous ceux qui le désirent tous les algorithmes que vous avez utilisés ici.

Tout, le code source, les logs, les analyses des résultats, tout tout tout.

Mais à une condition…

Que vous lisiez attentivement les quelques lignes qui suivent :

Ce test n’est pas un test démontrant quoi que ce soit sur la cryptographie ou les nombres premiers.

Ce test n’est même pas un test démontrant quoi que ce soit, à part qu’avec suffisamment de blabla et de langage technique on peut noyer le poisson et éloigner le sujet du fond du problème principal.

Ce test n’est même pas un test effectuant une quelconque multiplication.

Et pourtant tous les résultats affichés sont rigoureusement exacts, quels que soient les chiffres que vous tapez et quelle que soit leur taille.

Car oui, et je vous ai prévenus maintes et maintes fois…

Vvous n’écoutez pas ce que je vous dis…

Tssss tssss tssss…. Si si si si…

Un nombre premier est un nombre qui n’est divisible que par 1 et lui-même…

Alors putain !!! Comment voulez vous obtenir un nombre premier en faisant une multiplication ?!?!?!?!