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

Java Discussion :

problème bouncycastle(java) et openssl(c)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ingénieur d'études
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Par défaut problème bouncycastle(java) et openssl(c)
    Salut,

    je développe une application permettant de communiquer de manière sécurisée entre un serveur java et un client mobile (iphone). Pour cela j'utilise le JCE bouncycastle pour java et openssl pour iPhone.

    Cependant, j'ai un problème : je chiffre mon message avec RSA sous java mais quand je le déchiffre sous openssl, le message est différent de celui d'origine.

    Mon serveur fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //coté serveur langage JAVA
     
     
    //récuperation de la clé publique client
    RSAPublicKeySpec keySpec = new RSAPublicKeySpec(modulus,exposant);
    KeyFactory fact = KeyFactory.getInstance("RSA");
    Key publicKey = fact.generatePublic(keySpec);
     
    //chiffrement du message
    Cipher cipher = Cipher.getInstance("RSA/None/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE,publicKey);
    String message = "hello world";
    byte[] messageCrypte = cipher.doFinal(message.getBytes());

    Le client quant à lui déchiffre comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    //Coté client langage C
     
    RSA * rsa;
    const char *encrypt,*decrypt;
     
    //generation de la paire de clés RSA
    rsa = RSA_generate_key(1024,65537,NULL,NULL);
     
    /*
    récuperation du message du serveur
    grace à un web-service
    */
     
    //dechiffrement du message
    encrypt = (char*)malloc(RSA_size(rsa));
    decrypt = (char*)malloc(RSA_size(rsa));
    int error = RSA_private_decrypt(RSA_size(rsa),(unsigned char *)encrypt,(unsigned char *)decrypt,rsa,RSA_NO_PADDING);
    Je n'ai pas d'erreurs, cependant, le message déchiffré ne correspond pas au message d'origine.

    Ai-je oublié quelque chose ?

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Comme ça, heu vérifie bien que ton serveur chiffre bien avec la clé publique.
    Et que tu n'as pas inversé et que tu chiffres pas avec la clé privé.

    Ensuite après il faudra mettre un mode opératoire, CBC ou autre, et du padding. Ca sera plus sûr.

    Sinon juste une question, pourquoi tu utilises un algo asymétrique ?

  3. #3
    Membre averti
    Homme Profil pro
    ingénieur d'études
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Par défaut
    merci pour ta réponse rapide.

    J'ai vérifié et le serveur chiffre bien avec la clé publique et non la clé privée.

    Pour le padding, j'en ai essayé plusieurs : PKCS1, OAEP, SSL23, etc mais ca me fait toujours le même problème. Donc là je le faisais sans le padding pour identifier la cause du problème.

    Sinon, pour l'algo asymétrique, je prévoyais d'utiliser une clé partagée avec l'algo AES, mais pour être sécurisé, j'ai besoin de transférer la clé AES de manière chiffrée avec RSA justement.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Dans ce cas , c'est un soucis de transmission de ta clé publique, trace ce que tu envoies et ce que tu reçois.

  5. #5
    Membre averti
    Homme Profil pro
    ingénieur d'études
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Par défaut
    alors j'ai regardé avec Wireshark ce que je recevais coté serveur, et les données (modulus et exposant) sont bien celles que le client à envoyé.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Ok,

    Tu peux donner un exemple de valeurs chiffrées que tu envoies et le résultat que tu attends , je vais essayer de le faire de mon coté pour voir.

    En principe pour une clé de 1024 bits, si ton exposant publique est 65537, ça fait encore un modulo assez volumineux. Il y a peut-être un soucis de ce coté là.

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

Discussions similaires

  1. Problème HASHTABLES java
    Par ldcarpathes dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 17/08/2006, 17h25
  2. Problème de java.lang.NoClassDefFoundError
    Par nramariavelo dans le forum Hibernate
    Réponses: 5
    Dernier message: 13/06/2006, 14h54
  3. problème sous java
    Par lazzeroni dans le forum Oracle
    Réponses: 4
    Dernier message: 12/04/2006, 15h16
  4. Problème Applet Java et Win XP SP2
    Par octal dans le forum Applets
    Réponses: 4
    Dernier message: 04/02/2006, 09h57
  5. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54

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