IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Avis chiffrement XOR


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut Avis chiffrement XOR
    Bonjour tout le monde !

    J'ai travaillé sur un projet de chiffrement XOR il y a un moment. Malheureusement à cause de la mort du disque dur j'ai tout perdu, code compris ^^J'ai donc décidé d'éventuellement recoder ce projet, en y apportant quelques petits plus.

    Dans ce projet je générais une clé aléatoirement (avec un rand borné entre 0 et 255 car je gérais les caractères avec un unsigned char) de la même taille que le message (code de vernam) ce qui assurait une sécurité minimale normalement.Cependant, j'ai décidé de refaire la même chose avec un détail en plus pour "améliorer l'aléatoire".J'ai choisi d'appliquer un polynôme à chaque caractère de la clé générée grâce à rand.Le polynôme sera géré par une liste chaînée et l'utilisateur entrera le coefficient et la puissance de chaque monôme, ensuite le calcul sera fait, puis pris au modulo 255 pour obtenir un nouveau caractère. Ceci sera fait pour chaque caractère de la clé obtenue via rand, pour obtenir une clé qui sera normalement plus "aléatoire" car c'est l'utilisateur qui entrera son polynôme. Bien entendu, il ne faudra pas des polynômes "simples" (linéaires par exemple, du style y = 3x + 1), il faudra plus compliqué.Pour cela j'ai pensé aux polynômes d'interpolation de Lagrange (j'ai fait un peu de math...). C'est tout simplement trouver un polynôme qui satisfait les conditions qu'on veut. Par exemple le polynôme qui vaut 0 en 0, 10 en 1, -3.7 en 2, 0 en 3 et - 1 en 4 est défini par la fonction f : x -> (-79/30)x^4 + (453/20)x^3 - (1841/30)x^2 + (1027/20) x

    On peut calculer ça à la main c'est pas très difficile (mais c'est un peu fastidieux) ou utiliser ce site par exemple : http://homeomath.imingo.net/lagrange.htmBref, on veut avoir un polynôme irrégulier si je peux dire, pas simple.Biensûr en utilisant ça on va arrondir (si on n'obtient pas un nombre entier) puis appliquer le modulo 255 pour obtenir le nouveau caractère de la nouvelle clé sensée être un peu plus aléatoire.

    Voilà, autrement, le chiffrement sera possible via la console ou depuis un fichier, etc.

    J'ai aussi pensé à donner à l'utilisateur la possibilité de "binariser" un texte. Bref, faire exactement la même chose qu'ici : http://www.binaryhexconverter.com/as...nary-converter , avec le padding désactivé.Le défaut est qu'en binarisant un fichier, on obtiendra un nouveau fichier huit fois plus gros, mais ce n'est pas très grave.Pourquoi je veux faire ça.... ? C'est sympa visuellement c'est tout... est-ce vraiment utile, je ne sais pas.On pourrait très bien chiffrer XOR vernam (avec la clé un peu plus aléatoire obtenue avec un polynôme quelconque qu'on a choisit) et ensuite binariser le fichier obtenu.

    Voilà voilà... j'espère que je n'ai pas trop mal expliqué... ^^

    Pouvez-vous me donner votre avis sur mon idée d'appliquer un polynôme pour "améliorer" l'aléatoire ?Celà améliore-t-il vraiment l'aléatoire (au lieu de simplement faire le rand et fini...) ? Est-ce vraiment utile de faire ça sachant que le vernam est déjà pas mal puisqu'on peut obtenir absolument tous les types de messages possibles, qu'ils aient du sens ou pas, on a donc du 255^x possibilités, où x est la taille du message cherché et aussi la taille du message chiffré... C'est quand même sécurisé ? Après j'ai pensé à "améliorer" un peu l'aléatoire car je sais que quand on génère une série de nombres, avec des analyses on peut prévoir les nombres qui sont générés... donc je voulais pouvoir éviter ça en faisant intervenir quelque chose de vraiment aléatoire qui est un polynôme choisi par l'utilisateur pour modifier la clé.

    Merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Salut
    Ton sujet serait plus approprié dans un forum de maths ou d'algo que de C.

    Le code de Vernam est un codage absolu et réellement incassable. Mais autant il est incassable, autant il est impossible à mettre en oeuvre car il nécessite une clef totalement aléatoire et aussi longue que le texte à chiffrer. Donc celui qui a un soucis pour transmettre un message à son copain peut le chiffrer selon Vernam et aura un message incassable mais aura alors le soucis de transmettre la clef (aussi longue que le message) à son copain.
    D'après le livre de Simon Singh (histoire des codes secrets, ISBN 978-2253150978), le code de Vernam aurait été implanté dans des applications très particulières comme le téléphone rouge reliant Washington et le Kremlin.

    Donc le code de Vernam nécessite une clef totalement aléatoire. Si ta clef, même basée sur un polynôme irrégulier, n'est pas aléatoire alors ce sera forcément moins sécurisé. Maintenant si tu veux juste faire un projet qui empêchera ta petite soeur d'ouvrir tes images porno alors il conviendra pleinement mais si tu veux faire un truc qui concurrence OpenPGP, Zed ou TrueCrypt ce ne sera pas la même chose..
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Lol non c'est pas pour cacher quoi que ce soit, j'ai rien à cacher, c'est juste un projet comme ça, j'aime bien voir la transformation d'un message avec le chiffrement ^^

    Ici le problème de transmission de clé ne se posera pas car ça sera un programme pour moi uniquement, et même que je ne vais pas utiliser, c'est juste pour coder comme ça ^^

Discussions similaires

  1. Comparatif des hébergeurs payants : Vos avis
    Par RideKick dans le forum Hébergement
    Réponses: 346
    Dernier message: 12/03/2017, 10h47
  2. Réponses: 6
    Dernier message: 05/12/2014, 15h01
  3. Chiffrement XOR avec un fichier
    Par jamesb dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2009, 00h59
  4. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00
  5. Qui se sert de Together ici ? votre avis ?
    Par Matthieu Brucher dans le forum Autres
    Réponses: 28
    Dernier message: 25/08/2006, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo