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 :

Chiffrer une clé symétrique par une clé privée


Sujet :

Sécurité Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Chiffrer une clé symétrique par une clé privée
    Bonjour,
    Je suis entrain de développer une application pour un cours. Je dois générer une clé symétrique puis la chiffrer avec une clé privée d'une personne puis avec la clé publique d'une autre personne.

    Pour la génération du clé voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public SecretKey genererCle() {
    		SecretKey cleSymetrique = null;
    		// Get the KeyGenerator
    		KeyGenerator kgen = null;
    		try {
    			kgen = KeyGenerator.getInstance("AES");
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		kgen.init(256);
    		cleSymetrique = kgen.generateKey();
    		return cleSymetrique;
    	}
    Je n'ai pas eu de problèmes avec la taille de la clé 256 vu que j'ai installé le JCE unlimited.

    Le problème se pose quand j'essaye de la chiffrer avec une clé privée d'une personne A.
    Voici le code de la gestion d'une pair de clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public KeyPair gestionPair() {
    		KeyPairGenerator keyGen = null;
    		KeyPair paire;
    		try {
    			keyGen = KeyPairGenerator.getInstance("RSA");
    		} catch (NoSuchAlgorithmException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		keyGen.initialize(2048, new SecureRandom());
    		paire = keyGen.generateKeyPair();
    		return paire;
    	}
    Le problème se pose quand j'essaye de chiffrer cette clé symétrique avec la clé privée générée.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    public void chiffrerCleAsymetrique(SecretKey cle, PublicKey pub,
    			PrivateKey priv) {
     
    		// chiffrer la cle non codee avec sa cle privee pour avoir comme
    		// resultat = cle codee 1
    		Cipher cipherPrive = null;
    		try {
    			cipherPrive = Cipher.getInstance(algo);
    		} catch (NoSuchAlgorithmException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		try {
    			cipherPrive.init(Cipher.ENCRYPT_MODE, priv);
    		} catch (InvalidKeyException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		byte[] texteCrypte = null;
     
    		try {
    			texteCrypte = cipherPrive.doFinal(cle.getEncoded());
    		} catch (IllegalBlockSizeException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    		// chiffrer la cle codee1 avec une cle publique
    		Cipher cipherPublic = null;
    		try {
    			cipherPublic = Cipher.getInstance(algo);
    		} catch (NoSuchAlgorithmException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		try {
    			cipherPublic.init(Cipher.ENCRYPT_MODE, pub);
    		} catch (InvalidKeyException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		byte[] texteCrypte2 = null;
    		try {
    			texteCrypte2 = cipherPrive.doFinal(texteCrypte);
    		} catch (IllegalBlockSizeException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		sauverFichier("cleChiffree.key",texteCrypte2);	
    	}
    Il y a une exception qui est générée:
    java.security.InvalidKeyException: No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl
    at javax.crypto.Cipher.a(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    je suis pas expert dans le domaine de la sécurité.
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Le problème se pose quand j'essaye de chiffrer cette clé symétrique avec la clé privée générée.
    Avec des algorithmes asymétriques on chiffre avec la clef publique et on déchiffre avec la clef privée.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci pour la réponse, mais j'ai pu corriger l'erreur c'était vraiment une erreur stupide de ma part, je créais la paire de clé avec RSA et la clé symétrique avec AES et quand j'essaye de chiffrer avec la clé privée (de Bob) puis avec la clé publique (d'Alice) j'utilise un autre algorithme (blowfish), j'ai donc remplacé blowfish avec RSA et ca a marché sous certaines conditions: la clé symétrique ne doit pas dépasser 245 sinon je dois utiliser "RSA/ECB/NoPadding". Le problème avec ce dernier j'offre plus de facilité aux pirates. La je suis entrain de chercher de la documentation (en français de préférences) sur les différemment mode d'opération http://fr.wikipedia.org/wiki/Mode_d'...(cryptographie).

    Par rapport à ta remarque, oui c'est vrai mais la j'utilise un chiffrement double.
    Vraiment merci beaucoup.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  2. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  3. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07
  4. ou mettre une structure utilisée par une classe
    Par grand's dans le forum C++
    Réponses: 10
    Dernier message: 28/07/2005, 18h53
  5. Réponses: 2
    Dernier message: 02/06/2005, 18h12

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