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 :

Hashage variable et paramétrable


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut Hashage variable et paramétrable
    Bonjour,

    J'ai une question saugrenue. Je cherche si il existe un algorithme quelconque qui remplisse les conditions suivantes :

    - Prends en entrée une chaîne de caractères de taille variable ASCII compris entre le 0x20 et le 0x126
    - Donne en sortie une chaîne de caractère de taille fixe MAIS paramétrée (par exemple, je veux qu'elle donne 5 caractères exactement)
    - Robuste à la collision

    Et il faut en plus qu'en sortie, je puisse choisir un ensemble de conditions à savoir
    - Uniquement des lettres minuscules
    - Des lettres minuscules ou majuscules
    - Des caractères alphanumériques
    - Des caractères imprimables (donc entre 0x20 et 0x126)

    Est ce qu'un tel algorithme existe déjà ou il va falloir que je me le farcise ?

    Ah et au passage, si il existe des implémentations en C, C# et Java, ça m'intéresse

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Bonjour,
    1) Que signifie "robuste à la collision" pour toi?
    2) C'est du hachage, tu peux le tronquer comme tu veux pour que ça rentre dans le moule. Tu fais un MD5, tu l'écris en base (ce que tu veux), puis tu tronques...
    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 éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Roboste à la colision, c'est pour moi "Pour une chaine exitante, il est difficile de retrouver une chaine produisant le même résultat".

    J'avais pensé à prendre un md5 ou un sha1 et faire des modulos pour avoir des octets compris entre certaines valeurs, mais j'ai peur de trop augmenter les risque ms de collision...

    Dans compter que pour la même chaine en entrée, si je prends la sortie sur 8 ou sur 9 caractères, je me retrouve avec les 8 premiers caractères identiques, alors que je voudrais générer un hash différen avec es 2 paramètres.

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par mioux Voir le message
    - Prends en entrée une chaîne de caractères de taille variable ASCII compris entre le 0x20 et le 0x126
    - Donne en sortie une chaîne de caractère de taille fixe MAIS paramétrée (par exemple, je veux qu'elle donne 5 caractères exactement)
    - Robuste à la collision

    Et il faut en plus qu'en sortie, je puisse choisir un ensemble de conditions à savoir
    - Uniquement des lettres minuscules
    - Des lettres minuscules ou majuscules
    - Des caractères alphanumériques
    - Des caractères imprimables (donc entre 0x20 et 0x126)

    Est ce qu'un tel algorithme existe déjà ou il va falloir que je me le farcise ?
    Ce n'est pas la bonne question. La bonne question, c'est "Est-ce que, mathematiquement parlant, un tel algorithme peut exister" ?

    Par exemple, tu parles de chaine de sortie de longueur 5, et de robustesse a la collision. Lorsqu'en plus tu ajoutes des contraintes sur la chaine de sortie, tu reduis drastiquement le nombre de possibilites !

    Exemple avec une chaine de sortie de longueur 5, alphanumeriques :
    A-Z : 26 caracteres
    a-z : 26 caracteres
    0-9 : 10 caracteres
    Nombre de possibilites pour la chaine de sortie : 62^5, soit meme pas 10^9 possibilites (916 132 832 exactement).
    SHA-1, qui est un algorithme de hash casse depuis 2005, c'est a dire qu'il est possible de trouver des collisions, offre 40^15 combinaisons, soit plus de 10^24.

    Modifies tes contraintes, et alors seulement tu pourrais peut-etre envisager quelque chose de mathematiquement possible.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Oui je sais que si je prends une sortie avec un nombre faible de caractères, alors j'augmente considérablement le risque de collision.

    Le but est de créer un mot de passe à partir d'un mot de passe maître, et toujours le même selon l'architechture (d'où le fait qu'en sortie, je ne puisse avoir que des nombres, car par exemple les banques ont, pour celles que je connais, des mots de passes qui ne peuvent être constitués que de chiffres (.... au passage, c'est un peu ridicule, mais passons ....))

    Je cherche à faire un gestionnaire de mot de passe où les mots de passe ne seraient pas stockés, mais générés par site à partir d'une chaîne.

    Par exemple, je met en mot de passe principal "toto", je demande à générer un mot de passe pour le site "developpez.net", accessoirement, je peux le paramétrer avec une date (pour générer des mots de passe qui ont une date d'expiration) disons juin 2012, je prends la chaîne "totodeveloppez.net062012" je la passe dans ma fonction en demandant en sortie un mot de passe qui accepte chiffres, lettres et caractères spéciaux à 12 caractères, et j'obtiens un mot de passe que j'affecte au site développez.net.

    Et ainsi de suite pour tous les sites/comptes que j'ai.

    Je suis concient que la robustesse à la collision dépendra du mot de passe qui génère le mot de passe le plus court avec le moins de caractères différents, mais au moins, ça permet d'avoir un mot de passe différent pour tous mes comptes.

    Et si je souhaite passer par un algorithme reproductible sans utiliser de fonction pseudo aléatoire, car j'avais pensé à utiliser ces fonctions, mais si je porte mon appli sur différentes architechtures, (x86 et ARM entre autres, puisque je voudrais la faire sur PC,Android et iOS), les générateurs pseudo aléatoires ne reproduiront pas les mêmes résultats à chaque fois.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Ok, je comprends mieux ce que tu veux faire.

    Mais je ne vois pas quel est ton interet dans la robustesse a la collision ? Tu generes des mdp, qui seront injectes dans des fonctions de hash (esperons qu'elles seront plus resistantes que celles utilisees par linkedin). Donc pourquoi gerer les collisions ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Si à partir d'un mot de passe généré connu (volé sur linkedin ou sur le playstation store ), je suis capable de créer des collisions, il peut être possible de retrouver le mot de passe maître (même si la probabilité qu'une fois le mot de passe trouvé, un pirate s'acharne sur un compte en particulier est faible, ça reste une posibilité à envisager)

Discussions similaires

  1. [VBA] Mettre un tableau de variable en paramètre
    Par loacast dans le forum Général VBA
    Réponses: 10
    Dernier message: 15/11/2005, 11h28
  2. [VB6] Déclaration d'un tableau avec variable en paramètre.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/10/2005, 12h21
  3. Réponses: 9
    Dernier message: 24/05/2005, 16h34
  4. Nombre variable de paramètres
    Par rolkA dans le forum C++
    Réponses: 12
    Dernier message: 10/10/2004, 15h44
  5. Réponses: 7
    Dernier message: 30/09/2004, 12h55

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