NicoBellic
-
Modifié le 12 sept. 2019 à 21:15
Whismeril
Messages postés18630Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention29 septembre 2023
-
14 sept. 2019 à 12:03
Bonjour,
Je développe une petite application dans laquelle je stocke des mots de passe en BDD qui sont chiffrés en AES.
J'utilise une classe que j'ai trouvé sur le net (AesCryp) qui contient une variable Key (clé de chiffrement).
Aucun problème pour encrypter/décrypter mes mots de passe mais on me demande de pouvoir modifier cette clé de chiffrement en cas de compromission et c'est là que le bât blesse..
Je voudrais pouvoir récupérer ma clé actuelle pour déchiffrer les mots de passe en base et ensuite modifier cette clé.
Ci-dessous un extrait de ma classe AesCryp dans laquelle je déclare ma clé de chiffrement.
Fichier AesCryp.cs
namespace AesEncDec
{
static class AesCryp
{
public static string IV = "qo1lc3sjd8zpt9cx"; // 16 chars = 128 bytes
public static string Key = "ow7dxys8glfor9tnc2ansdfo1etkfjcv"; // 32 chars = 256 bytes
J'ai créé une nouvelle form (FormModifCle.cs) pour récupérer la clé actuelle, effectuer le décryptage des passwords (jusque là tout va bien), puis ensuite rentrer une nouvelle clé et rechiffrer les passwords, mais je n'arrive pas à modifier ma variable "public static string Key" à partir de ma nouvelle Form.
Whismeril
Messages postés18630Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention29 septembre 2023629 12 sept. 2019 à 17:04
Ok, il ne faut pas la mettre dans ton code. Un exe .Net est facilement décompilable, donc le simple fait de l’avoir en clair est déjà une compromission.
.Net dispose d’un outil de chiffrement qui se sert de ta configuration matérielle et logicielle, tu peux stocker ta clé dans un fichier chiffré de cette manière.
Je ne me rappelle pas du mon de la classe et là j’ai pas trop le temps de chercher.
J'utilise l'obfuscation, donc ce n'est pas gênant qu'elle soit en "dur" dans mon code, ce que je veux savoir c'est juste comment modifier cette variable à partir d'une autre form.
Whismeril
Messages postés18630Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention29 septembre 2023629 12 sept. 2019 à 17:29
Tu ne peux pas modifier de façon définitive une valeur en dur dans le code. Une fois que c’est compilé, c’est compilé.
Au démarrage suivant, elle reprendra la valeur écrite dans le code.
Une solution serait de mettre ta classe dans une dll et de mettre à jour juste cette dll.
Mais bon, obfuscation ou pas c’est pas sécurisé.
Regarde sur l’aide en ligne de Microsoft c’est franchement pas mal ce qu’ils ont fait.
12 sept. 2019 à 16:33