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 :

Où stocker une clé de chiffrement symétrique ?


Sujet :

Sécurité Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Où stocker une clé de chiffrement symétrique ?
    Bonjour,

    Ma problématique est la suivante :
    - un client m'a transmis une clé qu'il utilise pour chiffrer une donnée (chiffrement selon algo Triple DES)
    - le client me transmet la donnée chiffrée
    - je déchiffre la donnée à l'aide de la clé du client

    jusque là tout va bien. En contexte de dév, j'ai mis la clé en dur dans le code. Mais en contexte de production, quelle est la bonne pratique pour stocker la clé du client ? Est-ce que une clé de chiffrement symétrique peut être stockée dans un key store ?

    Merci pour vos conseils !

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Importer une secret Key via keytools
    Bonjour,

    alors personne pour m'aider ? Je n'ai pas trouvé de moyen d'importer une clé secrète via keytools, il semble que keytools permette de générer une clé secrète et après on peut exporter le keystore la contenant.
    Dans mon cas, je n'ai pas la main sur la génération de la clé. PorteCle ne gère pas non plus les clés secrètes (en tout cas c'est ce que je comprends), quelqu'un aurait-il une piste ? Merci.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Rien ne t'empêche d'importer une clef 3DES dans un keystore, j'ai eu à le faire pour des clefs AES 256 et 3DES, il n'y a pas de raisons pour que cela ne marche pas. Tu ne peux toutefois pas le faire avec la commande keyTool, il faut que tu le fasses directement en java.
    Dans le petit exemple ci-dessous on génère une nouvelle clef AES et on la stocke dans un nouveau keystore mais le principe reste le même pour du 3DES, reste à importer une clef plutôt que de la générer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String ksName = "mon_fichier_keystore.jks";
    String storePass = "mot_de_passe_du_keystore";
    String keyPass = "mot_de_passe_de_la_clef";
    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    kgen.init(256);
    SecretKey skey = kgen.generateKey();
    KeyStore ks = KeyStore.getInstance("JCEKS", "SunJCE");
    ks.load(null, storePass);
    ks.setKeyEntry("alias_ma_clef_3des", skey, keyPass, null);
    FileOutputStream fos = new FileOutputStream(ksName);
    ks.store(fos, storePass);
    fos.close();
    J'ai utilisé cette technique plusieurs fois dans des projets monétiques et l'expert sécurité de la boîte n'avait rien trouvé à redire sur ce sujet (l'OS était agréé banque de france et l'initialisation des clefs dans la JVM passait par SSL).
    Donc oui ta clef peut être stockée dans un keystore, elle sera protégée par deux mots de passe, celui de la clef et celui du keystore.
    Bien évidemment, le nombre de personnes connaissant les mots de passe doit être réduit au minimum et les mots de passe ne doivent jamais transiter en clair sur le réseau, même en local.

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci bien NoClassDefFound.

    Je ne connaissais pas le keystore de type JCEKS que j'ai trouvé après quelques recherches, mais lors de mes tests, j'avais compris que pour utiliser JCEKS il fallait modifier le fichier java.security, ce qui n'était pas envisageable en contexte de production.
    Je ne bloquais plus que sur le fait de modifier le fichier java.security du JRE (dans jre\lib\security), or ton code m'a montré que ce n'était pas nécessaire :
    KeyStore ks = KeyStore.getInstance("JCEKS", "SunJCE");
    moi j'utilisais :
    keyStore = KeyStore.getInstance("JCEKS");
    après avoir modifié : keystore.type=jks en keystore.type=JCEKS dans java.security
    j'ai vérifié, je vais pouvoir mettre ma clé dans le keystore, merci encore !

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

Discussions similaires

  1. [Image] Classe pour stocker une image JPEG ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/01/2006, 13h34
  2. Comment stocker une référence vers un TTreeNode ds un DFM ?
    Par phplive dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/07/2005, 12h33
  3. [toujours en galère] stocker une variable
    Par stof dans le forum MFC
    Réponses: 31
    Dernier message: 29/03/2005, 15h45
  4. [Création de compo] Stocker une TList de records dans un dfm
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 6
    Dernier message: 29/10/2004, 11h01
  5. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 12h19

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