2

Dans mon projet (application de bureau Windows), j'utilise une clé symétrique pour crypter/décrypter certaines configurations à protéger. La clé est codée en dur dans mon code (C++).Sécurisation de la clé symétrique

  1. Quels sont les risques que ma clé sera exposée par rétro-ingénierie? (les clients recevront uniquement la DLL compilée)
  2. Existe-t-il un moyen d'améliorer la sécurité de la gestion de la clé?
  3. Existe-t-il open source ou des produits commerciaux que je peux utiliser
+2

On dirait que vous n'avez actuellement aucune sécurité, pas vraiment. Si la clé est là à la vue (à quelqu'un avec un lecteur hexadécimal) alors elle est là à la vue (bien qu'elle nécessite un travail de détective avec un désassembleur, ou un essai et une erreur, pour trouver quel groupe d'octets est la clé). –

+0

@JohnColeman Oui, il y a la sécurité, la sécurité contre un utilisateur ordinaire. La sécurité est dirigée contre un attaquant défini, pas 100% des attaquants possibles, ce qui est inaccessible. – zaph

+0

@Denisdillo Définir l'attaquant, quel niveau de compétences et de capacités-un adolescent curieux à un gouvernement bien financé. Définissez la valeur en unités monétaires. Définissez le coût d'une attaque réussie. Définissez le périphérique, un ordinateur Windows 95, un périphérique iOS, un périphérique Android, etc. car il existe une sécurité intégrée à un niveau pour chacun. Protéger du propriétaire de l'appareil est presque impossible et la solution est généralement DRM qui nécessite généralement un serveur. – zaph

Répondre

3

de Windows fournit une key storage mechanism dans le cadre de l'API Crypto. Cela ne vous serait utile que si votre code générait une clé aléatoire unique pour chaque utilisateur. Si vous utilisez une seule clé pour les installations pour tous les utilisateurs, il devra évidemment être dans votre code (ou être dérivé des constantes qui sont dans votre code), et ne pourrait donc pas vraiment être sécurisé.

+1

Une bonne pratique mais note: Il n'est toujours pas sécurisé contre le propriétaire de l'appareil. – zaph

+2

Oui, je sais. Un professionnel de la sécurité respecté m'a dit une fois: «Nous ne pouvons pas protéger contre des menaces inconnues ou contre la menace connue d'un utilisateur final indigne de confiance mais autorisé». –

2

Quels sont les risques que ma clé sera exposée par ingénierie inverse? (les clients recevront uniquement la DLL compilée)

100%. En supposant bien sûr que la clé protège quelque chose d'utile et d'intéressant. Si ce n'est pas le cas, alors abaissez.

Existe-t-il un moyen d'améliorer la sécurité de la gestion de la clé?

Il n'existe aucun outil de sécurité que vous pouvez utiliser, mais il existe des outils d'obfuscation et de DRM (qui sont un problème différent de la sécurité). Toute approche que vous utiliserez devra être mise à jour régulièrement pour faire face à de nouvelles attaques qui vaincre votre ancienne approche. Mais fondamentalement, c'est la même chose que DRM pour la musique ou la vidéo ou les jeux ou autres. Je voudrais faire le tour. Tout ce qui en vaut la peine sera régulièrement mis à jour, et probablement assez coûteux.

Existe-t-il open source ou des produits commerciaux que je peux utiliser

solutions open source pour ce problème sont ... probablement inutile. Le but de DRM est l'obfuscation (rendre les choses confuses et cachées plutôt que sécurisées). Si vous partagez "la sauce secrète", vous perdez la protection. C'est ainsi que DRM diffère de la sécurité. En sécurité, je peux tout vous dire, sauf le secret, et c'est toujours sécurisé. Mais DRM, je dois tout cacher. Cela dit, je suis sûr qu'il y a des outils open source qui essayent. Il existe des outils d'obfuscation open source qui essayent de rendre difficile le débogage du binaire en brouillant les identifiants et autres, mais s'il n'y a qu'un petit élément d'information nécessaire (la configuration), il est difficile de le masquer suffisamment.

Si vous en avez besoin, vous aurez probablement besoin d'une solution commerciale, qui sera imparfaite et nécessitera probablement des correctifs car elle est cassée (encore une fois, en supposant qu'elle protège quelque chose que tout le monde se soucie vraiment). La recommandation de solutions spécifiques est hors sujet pour Stack Overflow, mais google peut vous aider. Certaines choses spécifiques à Windows peuvent vous aider, mais cela dépend de vos besoins exacts. Gardez à l'esprit que l '"attaquant" (il est difficile de considérer un utilisateur autorisé comme un "attaquant") n'a pas besoin de récupérer ses clés. Ils doivent juste attendre que votre programme déchiffre les configurations, puis lire les configurations en mémoire. Donc, vous aurez besoin d'obfuscation autour de cela aussi bien. C'est une bataille sans fin que vous devrez décider à quel point vous voulez vous battre.