Question

    

Cette question a déjà une réponse ici:

         

Y at-il un bon moyen d'expédier les clés AES avec l'application, mais assurez-vous toujours les suffisamment en sécurité?

Je ne aime tout ce qui concerne l'idée de coder en dur les touches (comme l'application peut être décompilées), mais d'autre alternative, les enregistrer sur le serveur distant, me semble tout à fait dangereux pour au cas où le serveur tombe en panne ou le réseau coupe.

Je sais que Java fournit mécanisme appelé magasin clé, mais autant que je sache, si le code est décompilées, ce magasin clé peut être ouvert aussi bien?

Toute idée?

Merci d'avance!

Était-ce utile?

La solution

Vous ne pouvez pas faire confiance à votre demande de garder votre clé de sécurité. Vous ne pouvez pas faire confiance que l'application est vraiment le vôtre.

Vous pouvez transporter la clé en toute sécurité tout ce que vous voulez, c'est le fait qu'il n'y a pas de matériel protéger votre clé à la fin de l'application que vous signifie lâche, tout le monde avec un éditeur hexadécimal ou débogueur peut obtenir la clé de votre application.

Si une application « besoin » d'une clé que je serais tenté d'avoir chaque utilisateur (ou licence) est simplement une clé privée et le certificat.

Vous pouvez ensuite utiliser la signature de vérification et l'échange de clés Diffie-Hellman pour « donner » chaque instance de votre application sous licence une clé à partir d'un serveur en réseau lors de l'exécution. Cela permettrait également de vous permettre de vous assurer qu'une seule instance d'une licence est en cours d'exécution à la fois.

Autres conseils

Il faudrait mieux décrire l'application.

Si vous essayez de garder la clé tout à fait sûr du propriétaire de l'ordinateur sur lequel le logiciel est installé ... vous ne pouvez pas. Et vous ne devriez pas essayer. Il est leur machine et ils ont le droit de tout savoir sur elle.

Avoir la même clé symétrique intégrée dans chaque copie de certains logiciels semble être une mauvaise conception. Les clés symétriques doivent être générées frais, puis échangé à l'aide d'un algorithme asymétrique. De cette façon, seule l'intégrité de la clé publique doit être protégée; il n'a pas d'importance si quelqu'un découvre la clé.

Si l'application utilise la clé, la clé sera en mémoire à un moment donné. Un assez sophistiqué utilisateur / attaquant peut voir alors. Un débogueur et un point d'arrêt au bon moment est tout ce dont ils ont besoin.

Non, la transmission des clés de chiffrement privées est une mauvaise idée.

Une approche classique consiste à stocker les clés de chiffrement dans un fichier de configuration, qui est édité à l'installation / heure de mise à jour par une personne sysadmin ou le déploiement. La clé elle-même peut être communiquée par sécurisée (cryptée) e-mail, ou tout simplement lu sur le téléphone, ou tout simplement généré de manière aléatoire (pour chaque utilisateur) lors de l'installation.

Cela dépend de ce que vous avez l'intention d'utiliser les touches pour, et ce qui compte comme « assez sûr », mais en général, je ne pense pas que vous pouvez exécuter du code sur la machine du client qui utilise une clé et d'empêcher encore le client d'obtenir la clé.

Non, ces clés doivent être générées par l'application elle-même et stockées par l'utilisateur. Si vous transmettre la clé privée que vous avez perdu beaucoup, presque autant que vous avez perdu en ayant une copie de la clé privée avant d'expédier le produit.

Sécurité de l'utilisateur ne doit pas être l'objectif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top