Comment masquer une clé de chiffrement dans une application .NET?

Je suis le développement d'une application intranet (C#) qui utilise des données (local vers le serveur web) que nous aimerions garder privé. Ces données sont cryptées (AES) à l'aide d'un héritage référentiel de données. Nous ne pouvons pas totalement empêcher l'accès physique à la machine.

Clairement, nous n'allons jamais à la perfection de la sécurité ici. Cependant, nous voulons le rendre aussi dur que possible pour quiconque d'obtenir un accès non autorisé aux données.

La question est la meilleure façon de stocker la clé. Le chiffrement basé sur une machine spécifique ID est une option, mais que l'information soit facilement disponible pour toute personne qui exécute un outil de diagnostic sur la machine.

L'encodage de l'application est une option (c'est un hors application). Cependant, .NET assemblées sont assez faciles à décompiler. Donc, serait-il préférable de dissimuler, l'utilisation d'un chiffrement lanceur, le compiler?

Ou est-il une option que je suis absent?

Soyons clairs, je sais que c'est à peu près une cause perdue, si quelqu'un est déterminé, mais nous sommes à la recherche pour le rendre aussi dur que possible dans les limites.

source d'informationauteur user74824