Supposons donc que vous avez deux clients, C1 et C2, chaque client a un GUID associé. Comment, quand vous recevez un message sur C2, comment est-ce que soi-disant vient de C1 (en vérifiant le GUID et en voyant qu'il correspond au GUID de C1), mais puisque le message n'est pas garanti d'avoir provenu de C1 (C3 pourrait simplement avoir envoyé le message, en envoyant le GUID de C1 dans l'en-tête du message) il doit y avoir une certaine vérification que le message provient réellement de C1.Envoi de messages entre deux clients, comment vérifier l'identité de l'expéditeur?
que je cherchais en utilisant le cryptage asymétrique (RSA) pour avoir C1 envoyer un message qui se compose de [C1.GUID; RSAEncrypt(C2.PUBLIC_KEY, C1.GUID); MESSAGE]
, puis laisser C2 essentiellement faire un chèque comme celui-ci (code pseudo python):
message.GUID == RSADecrypt(C2.PRIVATE_KEY, message.ENCRYPTED_GUID)
Est-ce une approche viable? Ou y a-t-il une autre façon intelligente/plus évidente de vérifier l'expéditeur d'un message?
Avez-vous considéré SSL? –
@battal - SSL crypte uniquement les informations entre le client 1 et le client 2. Cela ne permet pas de vérifier que client1 est client1 au lieu d'être client3. Cela empêcherait le client 3 d'écouter une transaction. –
Vous n'avez pas dit * comment * vous envoyez les messages. Vous pouvez utiliser WCF, ce qui vous permet d'utiliser les certificats X.509 à cette fin.Vous n'avez rien à programmer pour utiliser le certificat, ajoutez simplement le certificat à votre fichier de configuration. Un exemple est montré ici: http://www.codeproject.com/KB/WCF/wcfcertificates.aspx –