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

Langages de programmation Discussion :

Autre vision du XOR


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    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
    Points : 42
    Points
    42
    Par défaut Autre vision du XOR
    Bonjour tout le monde, j'ai implémenté un chiffreur XOR en C++ pour m'amuser et il fonctionne bien, avec générateur de clé "aléatoires" avec un RAND de façon à ce que cette clé fasse la même taille que le message à chiffrer.

    Mais j'ai pensé à autre chose.
    On a un fichier entré qu'on veut chiffrer.
    L'utilisateur crée un fichier qui va en faite représenter le fichier d'entré chiffré.
    Dans ce fichier il met ce qu'il veut, par exemple : "ceanqoidO?CUcn FNIZONVR 515V15RV 51RCZ1ACARDC XEFAc raze5c1xd 0v5rz15..."

    Alors soit X un caractère du fichier d'entré
    soit Y le caractère correspondant du fichier de sortie
    soit Z le caractère correspondant de la clé de chiffrement

    Le chiffreur va chercher Z de façon à ce que X XOR Z = Y
    Il faudra donc tester au plus les 256 possibilités de la table ASCII étendu.

    Je pense en faite que l'aspect "aléatoire" de la clé est plus net car c'est l'utilisateur lui-même qui tape son fichier de sortie, ce qui est aléatoire car il n'a même pas besoin de regarder le clavier pour cela.
    Logiquement, la clé obtenue sera elle aussi "aléatoire".

    Evidemment, on aura toujours une clé de la même taille que le message à chiffrer.
    Si le message à obtenir (que l'utilisateur à tapé sans regarder le clavier) est plus petit que le message à chiffrer, on va considérer que le message tappé par l'utilisateur à autant d'espace que nécessaire (à la fin) pour qu'il ait la même taille que le message à chiffrer.
    Réciproquement, s'il est trop long, on ne considérera que le nombre de caractère égal à la taille du message à chiffrer


    Que pensez-vous de cela ?
    Je rappelle que je n'ai pas de notions particulière en cryptographie, c'est juste pour m'amuser
    Est-ce correcte au niveau de la complexité temporelle ?
    Discutons ^^


    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    En gros, c'est un one-time pad.
    Son unique problème, c'est que maintenant tu as une clé de la même taille que ton fichier, et que tu dois également transporter de manière sécurisée.

    Donc en gros, tu n'as fait que déplacer le problème, sans même entamer sa résolution.

    Pour être viable, un one-time pad est généralement énorme et préparé à l'avance: On le transmet d'avance sur un support physique (par exemple sur clé USB ou DD externe, en rendant personnellement visite à ton correspondant), en le jetant s'il y a un soupçon de chance qu'il soit compromis.
    Ensuite, il n'y a plus qu'à l'utiliser octet par octet, en mémorisant où on s'était arrêté lors du dernier message.

    Avec un OTP de plusieurs GO, tu peux échanger de nombreuses données avant de devoir transmettre une nouvelle clé.

    PS: Normalement pour générer la clé, on utilise un Générateur pseudo-aléatoire de qualité cryptographique qui prend diverses informations non-prévisibles en entrée ("bruits" électroniques, mouvements de souris, etc.) pour éviter d'être "cassé" (prédit)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    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
    Points : 42
    Points
    42
    Par défaut
    Waw, j'ai oublié de préciser, les questions de transmission de clé ou autre on ne S'EN OCCUPE PAS.
    Je ne suis pas un professionnel, je veux juste coder pour m'amuser.


    Ah d'accord, dans ce cas ma méthode n'est pas correcte ?
    Alors le générateur pseudo-aléatoire est vraiment "incassable" ?


    Il y a-t-il une librairie particulière pour le C++ ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    J'ignore s'il y a une bibliothèque particulière, mais je sais que:
    • Sous *n*x, tu peut avoir des octets aléatoires de qualité cryptographique en lisant le flux /dev/random
    • Sous Windows, tu peux utiliser RtlGenRandom pour ça.

    À ma connaissance, avec la technologie actuelle, une source aléatoire matérielle est "suffisamment" imprévisible, donc incassable: On n'arrive pas à déterminer et reproduire l'état complet de la machine qui génère les données aléatoires.

    Et en tout cas, un one-time pad est absolument incassable (enfin, "aussi sûr que sa clé") vu que la clé n'a pas de répétition.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [XL-2007] VBA, Autres ou refonte de ma vision
    Par hboisteau dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2012, 14h24
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  4. Réponses: 2
    Dernier message: 21/05/2002, 10h25
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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