Je pense que vous devriez quand même envisager l'utilisation de DPAPI ; pas pour le cryptage des fichiers de données, mais pour le cryptage de la chaîne secrète.
Serait-il possible de demander à votre utilisateur de saisir une seule fois la chaîne secrète ?
- Utiliser DPAPI pour le chiffrer
- Ensuite, stockez la valeur chiffrée quelque part (fichier de configuration, fichier de paramètres, registre, où vous voulez. De préférence quelque chose de sécurisé pour l'utilisateur, pas pour le grand public).
- Puis, lorsque vous en avez besoin, utilisez l'interface DPAPI pour récupérer la chaîne secrète.
- Utilisez le reste de votre code comme vous l'avez déjà fait.
Comme vos fichiers de données seront toujours chiffrés par AES avec la même chaîne secrète, ils seront toujours interchangeables. (Entre les personnes ayant la même chaîne secrète...donc maintenant vous venez de faire en sorte que votre application puisse avoir plusieurs groupes sécurisés, avec chaque groupe définissant son propre secret...mais c'est une tangente).
L'avantage est que même si quelqu'un s'empare de votre code, aucune ingénierie inverse ne permettra de retrouver la chaîne secrète car elle n'existe pas.
Notez que cela est mieux que l'obscurcissement seul. Avec l'obfuscation, si l'attaquant obtient votre code et peut l'exécuter dans son propre environnement, il peut attacher un débogueur et s'arrêter au moment où vous passez la chaîne au code AES. Ils n'ont pas à se soucier du nombre d'astuces que vous utilisez pour le brouiller. Il suffit de la regarder une fois que vous l'avez désembrouillée. Avec DPAPI, cela ne fonctionnera pas à moins qu'ils exécutent votre code dans le contexte de l'utilisateur... dans ce cas, la partie est terminée de toute façon.
Je ne dis pas que DPAPI est parfait, mais dans ce cas, je l'envisagerais vraiment avant de recourir uniquement à l'obscurcissement. (Vous pouvez toujours faire passer votre code par un outil d'obfuscation : c'est aussi une bonne chose, mais ce n'est pas suffisant).
*Si ce n'est pas le cas, pouvez-vous le fournir au moment de l'installation/de la configuration initiale ? J'en ai vu qui s'installent avec la clé secrète en clair dans un fichier, puis le programme la crypte à la première utilisation.