Question

J'ai un C ++ application client / serveur sur lequel le client et le serveur sont mon exécutable. Chaque fois qu'une connexion est établie entre le client et le serveur, je générer une nouvelle clé de cryptage pour cette session et je souhaite transmettre cette clé de session et chiffrer cette clé de session à l'aide d'une clé statique qui est intégré à la fois le client et le serveur.

Cependant, les chaînes en cours d'exécution sur mon exécutable révèle la clé statique.

Comment puis-je cacher la clé statique intégrée dans mon application client et le serveur afin qu'ils ne sont pas faciles à extraire et permettant ainsi à quelqu'un de décoder la clé de la session.

Était-ce utile?

La solution

Sa méthode d'échange de clés « assure » le client est valide et non un imposteur. Il suffit d'échanger en toute sécurité en utilisant les touches D-H ne le fera pas. Afin d'obtenir les mêmes fonctionnalités, il faudra mettre en place un système d'infrastructure à clé publique. SSL / TLS a été construit à cet effet, qui en dessous fera ce qu'il a besoin.

Vous devez créer un CA pour vos certificats de serveur et le client signe pour veiller à ce qu'ils sont qui ils disent qu'ils sont.

Autres conseils

Il existe des solutions à ce problème qui ne concerne pas essayer de clés masquer (qui, en général, est impossible). Par exemple, échange de clés Diffie-Hellman permet au client et au serveur de négocier une nouvelle session secrète clé sans jamais l'envoyer sur le fil.

Alors, vous avez l'intention de cacher votre secret (la clé dans le fichier exécutable) avec une méthode particulièrement difficile à undo qui ne peut être annulée si vous connaissez le secret de la méthode, que vous avez besoin de se cacher avec une nouvelle méthode super secret qui ne peut être annulée si vous connaissez le secret de cette méthode, que nous devons cacher une autre méthode secrète exigeant un autre secret que nous devons cacher ...

Ceci est un « débordement de problème ». J'espère que vous pouvez voir vous ne résoudrez pas cette façon. Générer les clés par ordinateur (ssh / sshd fait cela) et de protéger ceux-ci. Le même problème ci-dessus fait applique, parce que si je reçois cette clé, il est encore jeu, mais cette façon vous ne pas coder en dur dans votre solution qui signifie la fixation d'une clé compromise est beaucoup plus facile.

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