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 Signature en ayant uniquement le hash et le hash signé


Sujet :

Sécurité Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Vérifier Signature en ayant uniquement le hash et le hash signé
    Bonjour,

    Dans le cadre d'un projet, je me dois de créer un servlet capable de vérifier le la validité d'une signature en ayant que pour seules informations cette signature, le hash du document (et non pas le document entier) et le certificat.

    En d'autres mots, le client calcule le hash du document et la signature de ce document. Le hash du document ainsi que la signature sont envoyés au serveur avec la clé publique.

    Le problème est que pour vérifier la Signature, j'ai besoin du document et non du hash du document. Mais je n'ai que ça ! Or, pour calculer la signature, la méthode Java calcule de toute façon le hash du document et signe ce dernier. Comment outre-passer la méthode Signature.update(byte[] document) pour directement envoyer le hash de ce document de manière à ce que la méthode de la classe Signature n'aie pas à le calculer ?

    Ce n'est pas très clair, je vous l'accorde... J'espère que vous avez compris mon problème !

    Un grand merci,
    dachu

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Il me semble que la signature (d'un document) est en fait un simple chiffrement asymétrique du hash (du document) avec la clé privée ; donc chiffre asymétriquement ton hash avec la clé privée et compare avec la signature à valider.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    J'y ai pensé mais le problème est qu'il faut signé deux fois dans ce cas-là... Une fois pour l'entièreté du document et une autre fois pour le hash du document ! Et donc ce que j'enverrai au serveur (hash + hash signé) ne sera pas ce que le client aura en sa possession (document + document signé)...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Mon problème n'est toujours pas résolu

    J'ai trouvé la classe Cipher dy crypto, mais elle ne prend pas en charge le SHA1withRSA

  5. #5
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Le plus simple serait que le client ne signe pas le document mais le hash du document seulement (avec sa clé privée), ensuite il te transmet le hash et sa signature (et la clé publique adéquate) : il ne te reste plus qu'à vérifier la signature du hash avec cette clé publique (pour vérifier la signature de "quelque chose" il te faut ce quelque chose).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Le problème c'est que j'ai besoin de la signature du document pour la rendre accessible à l'utilisateur. Je pourrais le faire en faisant 2 signatures, mais ce serait relativement contraignant...

    De plus, une clé privée ne signe que le hash et non l'entièreté du document par soucis de performance. Donc, dans tous les cas, la fonction ne traite que le hash... Il doit sûrement y avoir moyen de donner directement le hash à la fonction java de signature et non l'entièreté du document ! J'ai trouvé la classe Cipher qui le fait, mais pas pour le SHA1withRSA...

    Merci quand même, je suis tout à fait d'accord avec vous mais voilà, j'ai des exigences à respecter

  7. #7
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par dachu
    J'ai trouvé la classe Cipher qui le fait, mais pas pour le SHA1withRSA...
    Pas besoin !
    Tu n'as qu'à chiffrer asymétriquement ton hash avec la clé privée, et comparer avec la signature à valider (comme évoqué dans mon 1e post).
    Utilises la classe "Cipher" avec l'algo "RSA" (tout court) sur ton hash "SHA1" de document : c'est équivalent à utiliser la classe "Signature" avec l'algo "SHA1withRSA" sur le document.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Oui c'est sûr, mais le problème reste le même... Ca demande deux signatures : le document et le hash de ce document. Or c'est avec une smartCard, et ça impliquerait que l'utilisateur aurait à entrer deux fois son mot de passe pour signer...

  9. #9
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par dachu
    Ca demande deux signatures : le document et le hash de ce document.
    ?!...

    TON CLIENT :
    en 1e > génère le hash "SHA-1" du document (besoin implicite pour ton serveur)
    en 2e > génère la signature "SHA-1withRSA" du document avec sa clé privée
    en 3e > transmet le hash + la signature + sa clé publique

    TON SERVEUR :
    * Cas A (à tester)
    en 1e > chiffre en "RSA" le hash ("SHA-1") du document avec la clé publique
    en 2e > compare ce chiffrement avec la signature du document
    * Cas B (à tester aussi)
    en 1e > déchiffre en "RSA" la signature du document avec la clé publique
    en 2e > compare ce déchiffrement avec le hash ("SHA-1") du document


  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    D'accord, je n'avais pas vu ça comme ça :-)

    J'ai fait avec le premier cas et ça fonctionne en partie, le problème c'est qu'il y a un padding qui s'est ajouté au résultat... Je cherche pour l'enlever et après ce sera fonctionnel !

    Un grand merci !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/03/2012, 14h29
  2. Vérifier signature XML SOAP dans service WCF
    Par dev.Amok dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 30/03/2011, 11h24
  3. hash à clé unique et sauvegarde d'un hash
    Par Jasmine80 dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2009, 10h21
  4. [crypto] Vérifier signature RSA-SHA1
    Par Donniebrasko dans le forum C++
    Réponses: 0
    Dernier message: 17/12/2008, 20h30
  5. [BouncyCastle] vérifier signature détachée
    Par amr_at_work dans le forum Sécurité
    Réponses: 4
    Dernier message: 04/06/2008, 10h02

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