Créer une clé de cryptage et la récupérer dans un autre script

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
badjul
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 02 juin 2020 22:30
Status : Hors ligne

Créer une clé de cryptage et la récupérer dans un autre script

#1

Message par badjul »

Bonjour,

Je me heurte à un problème que je n'arrive pas à résoudre. Je crée une clé de cryptage dans un script tel que celui ci:
#include <Crypt.au3>

$hKey = _Crypt_DeriveKey("test", $CALG_AES_256)
RegWrite("HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion","key","REG_SZ",$hKey)
MsgBox(0,"",$hKey)
Je stocke le handle obtenu avec _Crypt_DeriveKey dans le registre pour qu'il puisse être récupéré plus tard par un autre script tel que celui-ci:
#include <Crypt.au3>

$handleKey = RegRead("HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion","key")
MsgBox(0,"",$handleKey)
;$hKey = _Crypt_DeriveKey("test", $CALG_AES_256)
;MsgBox(0,"",$hKey)
$mdp = InputBox("Mot de passe","Entrez votre mot de passe à encrypter.")
_Crypt_Startup()
$encryptedData = _Crypt_EncryptData($mdp,$handleKey,$CALG_USERKEY)
$aerror = @error
$aextended = @extended
MsgBox(0,"","@error: " & $aerror & " @extended: " & $aextended)
InputBox("Mot de passe","Copiez/collez votre mot de passe encrypté.",$encryptedData)
Seulement le mot que j'entre dans l'InputBox n'est pas crypté et j'obtiens l'erreur 80 qui correspond à "Impossible de récupérer $CALG_USERKEY AlgID".
Si je commente mes deux premières lignes, que je décommente la 3ème et 4éme et que je met $hKey au lieu de $handleKey dans _Crypt_EncryptData tout fonctionne correctement.

Je me demande si je stocke correctement mon handle ou si il a été relaché de la zone mémoire avant que je ne m'en serve ou si il faut que je transforme ma donnée quand je la récupère en tout cas je ne trouve pas mon problème.

Merci d'avance pour votre aide.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#2

Message par Tlem »

Bonsoir.
Un handle est propre au script qui le génère, vous ne pouvez pas l'utiliser dans un autre script.
Pouvez-vous nous expliquer les motivations qui vous pousse à vouloir créer le handle de cryptage dans un autre script que celui qui devra crypter ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
badjul
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 02 juin 2020 22:30
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#3

Message par badjul »

Merci pour votre réponse je crois avoir pensé à tort qu'un handle était un pointeur vers une adresse mémoire et que je pouvais le transmettre.
Mon but est d'automatiser le déchargement d'un antivirus pour mettre à jour sa base sans avoir à divulguer son mot de passe aux utilisateurs. En fait les nouveaux fichiers étant sur une clé USB est détecté puis l'antivirus déchargé, les fichiers copiés et l'antivirus redémarré sans action de l'utilisateur qui ne voit qu'une barre de progression.
Le script est déjà fonctionnel mais je ne peux pas garder le mot de passe en clair dans mon binaire. Je pensais donc à un script générant une clé qui cache son pointeur dans la base de registre et l'autre le récupérant pour décrypter le mot de passe stocké crypté dans son binaire. Comme ça il n'y avait pas de lien entre les deux scripts, on ne pouvait pas savoir qui avait généré la clé et le désassembler facilement.
Je ne m'embête comme ça pas par plaisir mais par obligation ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#4

Message par Tlem »

Certe, mais si quelqu'un peux decompiler et analyser le script principal, pourquoi oublierait il les scripts annexes ?

Pour "protéger" votre clé de cryptage, utilisez un serveur Web qui enverra les informations à votre script (par exemple).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
badjul
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 02 juin 2020 22:30
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#5

Message par badjul »

Si le script principal est décompilé la seule information est qu'il récupère un handle dans la base de registre mais pas quel script l'a généré et déposé à cet endroit. Après je ne dis pas que c'était inviolable mais ça complexifiait le crackage.

Les machines que je gère sont complètement isolées et doivent le rester d'où les mises à jour manuelles. Le but est que les mises a jour soient récupérées sur un poste en réseau et mises sur une clé USB et que la personne n'ai qu'à connecter la clé pour que la mise à jour se fasse automatiquement jusqu'à ce qu'elle soit invitée à retirer la clé.
Seulement il faut un mot de passe pour décharger l'antivirus et je n'ai pas le droit de le divulguer ni de le laisser en clair dans mon script.

En tout cas merci de prendre le temps de me répondre.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#6

Message par jchd »

On peut "transporter" une clé cryptographique de façon sûre entre machines distantes avec CryptExportKey.
https://docs.microsoft.com/fr-fr/window ... texportkey

Par contre je ne vois pas l'utilité, mais bon...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
badjul
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 02 juin 2020 22:30
Status : Hors ligne

Re: Créer une clé de cryptage et la récupérer dans un autre script

#7

Message par badjul »

Je vais creuser dans ce sens je ne savais pas que cette fonction existait.

Merci pour votre réponse jchd.
Répondre