Bonsoir !
Permettez-moi de vous exposer mon petit problème. Je souhaite réaliser en Java une application permettant le chiffrement et le déchiffrement de fichier par l’intermédiaire de 7ZIP qui utilise un chiffrement AES 256 bits. Grosso modo mon programme ressemble à cela :
De ce fait, j’utilise une clé spécifiée en dur dans mon programme afin d’assurer le chiffrement et le déchiffrement de fichiers.
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 public class Main { private static String CLE = "p80ZaXN4Uy8hEARLjLx01D4KK6EEVYSWdd8RY7XkHoE="; /** * @param args[0] : 1-> Chiffrer 2-> Déchiffrer * @param args[1] : Nom du fichier à chiffrer - déchiffrer */ public static void main(String[] args) { if (args[0].equals("1")) { chiffrer(args[1]); } else if (args[0].equals("2")) { dechiffrer(args[1]); } } /** * Chiffrer un fichier avec la clé AES 256 bits * @param nomFichier : Nom du fichier à chiffrer */ private static void chiffrer(String nomFichier) { // Appel à 7ZIP avec la clé pour chiffrer un fichier } /** * Dechiffrer un fichier avec la clé AES 256 bits * @param nomFichier : Nom du fichier à déchiffrer */ private static void dechiffrer(String nomFichier) { // Appel à 7ZIP avec la clé pour déchiffrer un fichier } }
Le problème, c’est qu’une fois compilé en format « .jar », il est très facile de retrouver la variable « CLE » juste en décompressant le « .jar » et en observant le fichier Main.class avec un simple éditeur de texte. J’ai voulu utiliser un offuscateur de code mais sans succès, la clé apparaît toujours en dur dans le « .class ».
Mes questions sont donc :
Comment est-il possible de « dissimuler » efficacement la variable « CLE » de mon programme afin de rendre sa récupération plus difficile lors de reverse engineering sur le fichier « .class » ?
De même existe-t-il une meilleure pratique que de spécifier directement la valeur de la clé dans le fichier .jar ?
Java intègre t'il nativement des fonctions de chiffrement AES ? (Pour éviter de passer par 7ZIP ?)
Merci !!
Partager