En supposant que j'ai une topologie serveur/client, je suis actuellement confronté au problème que je veux générer une clé sur le côté du client et en quelque sorte Rendre la télécommande serveur l'obtenir de manière sécurisée.
J'utilise des AES sur les deux parties, donc fondamentalement ce dont j'ai besoin, c'est générer un aléatoire [~ # ~ # ~] iv [~ # ~] et un Touche secrète aléatoire, mais comment le partager avec le serveur afin qu'il puisse ensuite déchiffrer les messages?
Le côté serveur est un serveur Web Apache/PHP. Les demandes seront donc envoyées via POST
, et je vais utiliser un certificat SSL
, mais je ne sais pas si cela suffit à envoyer de manière sécurisée les données de l'autre côté.
J'apprécierais toute approche/idée pour cela.
---- edit ----
Ceci est en fait un Android application OS. Au lieu d'utiliser directement Socket
s contre le serveur, j'utilise HTTP POST
Demandes du côté du client au serveur et Google Cloud Messages
Selon la manière opposée, simulez un comportement de multidiffusion puisque le serveur envoie de nouveaux événements aux utilisateurs souscrits.
Mais ces messages seront envoyés uniquement aux utilisateurs enregistrés. Avant d'envoyer celui-ci, je dois enregistrer l'utilisateur et partager ainsi la clé entre serveur et client, c'est la motivation de la question.
Ce que vous recherchez est une paire de clés publique/privée autrement appelée SSL dans le monde de l'ordinateur.
Un certificat SSL tel que vous avez mentionné est suffisamment de sécurité depuis pour savoir ce qui est envoyé, vous avez besoin de la clé privée du certificat et que vous ne pouvez pas obtenir cela sans vous enfreindre.
Si vous ne voulez pas utiliser SSL Une autre option serait d'utiliser une paire de clés publiques/privée codée dans le client/serveur qui agirait comme SSL mais sans avoir un certificat signé.
Les deux réponses ont identifié SSL/TLS, mais envisagez d'ajouter une authentification client au mélange. Cela garantira que le serveur acceptera uniquement les connexions pour les clients authentifiés/connus. L'inconvénient avec c'est que:
Le serveur doit pouvoir être configuré pour accepter uniquement les connexions authentifiées par le client. Dans certains serveurs Web, ce paramètre peut être appliqué à des ressources individuelles sur le serveur.
Regardez la page Wikipedia pour plus de détails sur le client authentifié TLS Handshake: