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

Algorithmes et structures de données Discussion :

Signature de fichier simple


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Par défaut Signature de fichier simple
    Bonjour à tous,

    dans le cadre d'un programme tournant sur une petite machine embarqué sous Linux, je cherche un algorithme assez simple de signature de fichier (hash-code), algorithme qui sera ensuite codé en C.

    Cet algorithme devra autant que possible éviter les calcul en float : il n'y a pas de FPU sur mon CPU, ça risquerait de ramer un max...

    Les fichiers à vérifier seront "petits" : entre 10 et 50 Ko.
    Peu importe la taille de la clef : elle ne sera utilisée que comme signature, une clef >256b n'est donc pas un problème si besoin.

    Le besoin étant :
    1) Vérifier l'intégrité du fichier reçu (erreurs de transmission) via la clef qui l'accompagne.
    2) Éviter qu'un tiers ne puisse créer un nouveau fichier et sa clef.
    3) Empêcher que l'on puisse modifier un fichier existant ... ce qui revient de fait au (2)

    Dans l'idéal, il faudrait que le calcul de cette clef prenne quelques secondes (max) sur un CPU à 100MHz environ ...

    Si vous avez une idée, merci d'avance !
    Seb.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    En général, pour faire ce genre de choses, on utilise une somme MD5 ou SHA générée avec le contenu du fichier, plus une clé secrète qui reste à l'intérieur de ton programme.

    C'est pratique quand on utilise des cookies, également.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    En général, pour faire ce genre de choses, on utilise une somme MD5 ou SHA générée avec le contenu du fichier, plus une clé secrète qui reste à l'intérieur de ton programme.
    C'est pratique quand on utilise des cookies, également.
    OK, merci de ta réponse, mais c'est pas trop complexe à calculer un MD5 ou un SHA ? (petit CPU inside)

    Bon, je vais regarder ça ...

    [Edit]Pour ceux que ça pourrait intéresser, un lien vers le SHA-1 : http://fr.wikipedia.org/wiki/Sp%C3%A9cifications_SHA-1

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Par défaut
    Bon, j'ai regardé du coté du SHA-1 (160b), ça semble parfait !

    Voici où trouver une implémentation "freeware" (en C et C++) :
    http://www.packetizer.com/security/sha1/

    En général, pour faire ce genre de choses, on utilise une somme MD5 ou SHA générée avec le contenu du fichier, plus une clé secrète qui reste à l'intérieur de ton programme.
    Mais il me reste quand même une question : où est-ce que je place ma clef ???

    Car pour le moment, l'algo me donne un hashcode solide, OK, mais n'importe qui avec le même algo peut générer un hashcode valide pour n'importe quel fichier ... il faut donc que le hashcode soit généré en fonction d'une clef privée (qui restera secrète) ...

    Merci d'avance d'éclairer ma lanterne ...

    Seb.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Seb.26 Voir le message
    Mais il me reste quand même une question : où est-ce que je place ma clef ???
    Tu ajoutes ta clé secrete au début ou a la fin du contenu a coder.

    Contenu original: XXXXXXXXXXXX
    Clé secrète: 99999
    Calcul du hashcode = MD5("XXXXXXXXXXXX99999")

    Tu rends public uniquement le "contenu original" et la valeur du "hashcode".

    Pour tester un couple {contenu,hash}, tu recalcules le hashcode du contenu (en ajoutant la clé secrète) et tu compares.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Tu ajoutes ta clé secrete au début ou a la fin du contenu a coder.

    Contenu original: XXXXXXXXXXXX
    Clé secrète: 99999
    Calcul du hashcode = MD5("XXXXXXXXXXXX99999")

    Tu rends public uniquement le "contenu original" et la valeur du "hashcode".

    Pour tester un couple {contenu,hash}, tu recalcules le hashcode du contenu (en ajoutant la clé secrète) et tu compares.
    Oh purée : l'idée de génie !!! (bon OK : c'est moi qui suit une truffe ... )

    C'est limpide, mega-merci !

    @+
    Seb.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [System.Security.Cryptography.Xml] Signature de fichiers XML
    Par melleb dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/04/2008, 10h04
  2. Signature de fichiers xml
    Par melleb dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 15/04/2008, 09h58
  3. [RCP] Explorateur de fichier "simple", navigator ?
    Par Hankh dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 15/01/2007, 11h43
  4. [DOM] Lire un fichier simple XML en Java
    Par thomas.legoff dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2006, 16h51
  5. Partage de fichier simple
    Par Asdorve dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 10/06/2006, 15h10

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