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

Sécurité Java Discussion :

Vérifier l'intégrité d'un certificat


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut Vérifier l'intégrité d'un certificat
    Salut,

    J'ai un pb dans la vérification de l'intégrité d'un certificat.
    En fait un certificat est formé de deux parties: data et signature.

    La premiere étape dans cette procedure (c'est à dire la vérification de l'integrité) est d'appliquer la fonction de hachage sha1 sur la partie data. Donc:

    1. Comment je peux extraire la partie data?
    2. D'ou j'obtient la fonction de hashage sha1?
    3. Comment je peux appliquer la fonction de hashage sur la partie data?

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    j'ai pas beacoup touché à ça mais j'avais trouvé ça je ne sais plus où donc désolé pour les sources :p

    pour le hashage tu doit il me semble passer par un MessageDigest

    par exemple pour le sha1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    final MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
    pour l'appliquer sur tes donnée je pense que ca doti donnée quelque chose comme ça :


    en prenant en comtpe par exemple que tes data sont récuperer sous forme de byte[]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    					byteArrayOutputStream.write(messageDigest.digest(data);
    voial uen piste, je te garantie pas que c'est ce que tu cherche ... mais du moins c'est ce que j'ai compris :p

  3. #3
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Ça ne sert à rien de faire ça manuellement, il suffit d'utiliser les méthodes mise à disposition par l'API ici.

    Testé et approuvé, ça marche très bien !

    Il faut utiliser la clef publique du signataire du certificat (donc généralement l'autorité de certification) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonCertificat.verify(ClefPubliqueDuSignataire, MonProvider);
    Si la clef publique n'est pas la bonne, tu auras une SignatureException avec ce message d'erreur : "Signature does not match." lors de l'exécution.

    Si la clef publique est la bonne, tu n'auras pas d'exception levée lors de l'exécution.

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut
    Merci pou vous,

    J'ai vu l'API, Mais il ne me permet pas d'achever les étapes que j'avais dit dans mon pb c'est à dire:
    L' extraction de la partie data,
    puis appliqué la fonction de hachage sha1 sur ce que j'ai extré.

    Question: Est ce qu'il y a des commandes openssl ou autres qui permet d'extraire directement la partie data??????????


    Merci encore.

  5. #5
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tout ceci est effectué en interne de la méthode verify().

    Une signature numérique d'un document = Condensat (ou Hash en anglais) de ce document puis chiffrement asymétrique avec la clef privée de l'auteur du document du résultat du hash.

    Pour vérifier la signature, on déchiffre avec la clef publique puis on hash la partie data comme tu dis et on compare le résultat du déchiffrement avec celui du hash. Si ça correspond alors le document est considéré comme authentique et en provenance de la personne attendue.

    Pour la méthode verify(), il suffit donc de lui passer en paramètre la clef publique de l'auteur et la mécanique interne gère le reste.

    Si la signature ne correspond pas, une SignatureException sera levée.

    Cela ne sert à rien de faire ça manuellement.

    Ceci dit, il est vrai qu'il n'y a pas de distinction explicite entre le fait de déchiffrer correctement le hash contenu dans le certificat (test d'identité de l'auteur), et le test de comparaison des hashs ni dans la javadoc, ni dans les tutoriaux/livres que j'ai pu lire sur le sujet ce qui peut prêter à confusion.

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut
    Merci pour vous,

    En fait, à partir de ce que vous avez viens de dire, vous avez expliqué mon probleme en globale c'est à dire:
    1. Appliquer la fonction de hachage sha1 sur la partie data.
    2. Déchiffrer (avec RSA) la signature avec la clé publique de mon emtteur de certificat.
    3. Comparer les deux résultats pour la verification de l'intégrité.

    Mais mon probleme c'est pas la vérifiction exactement (c'est à dire la fonction verify())plus tot que:
    - Comment je peux obtenir la partie Data de mon certificat et la signature (j'ai cherché des commandes openssl pour l'extraction de ces deux parties, mais j'ai rien obtenir)?
    - Est ce qu'il y a des fonction de chiffrements et dechiffrement en java?
    - Et comment je peux appliquer la fonction de hachage sur la partie data?

    J'esper que j'etais claire,
    En faite, j'ai fais pas mal de recherche mais j'ai trouvé des resultats en vague ?
    Merci encore .

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/09/2007, 13h35
  2. Vérifier l'intégrité d'une adresse mail
    Par chemouz dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 24/07/2007, 07h19
  3. Vérifier la validité d'un certificat
    Par miloux32 dans le forum Sécurité
    Réponses: 2
    Dernier message: 23/07/2007, 11h09
  4. Vérifier l'intégrité du disque
    Par Giovanny Temgoua dans le forum Windows XP
    Réponses: 7
    Dernier message: 28/09/2006, 10h46
  5. Vérifier l'intégrité d'un mail
    Par mister3957 dans le forum Windows
    Réponses: 2
    Dernier message: 07/06/2006, 11h35

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