J'ai un service Web sur un réseau non sécurisé qui nécessite une autorisation. Je souhaite l'implémenter sur HTTP, au lieu de HTTPS, en évitant en même temps les attaques de type "man-in-the-middle" et "sniffing". Je n'ai besoin que d'une clé pour le client et le serveur.S'il vous plaît recommander un moyen d'autoriser une transaction en texte brut sur HTTP en Java?
Le client appelle une fonction serveur et le serveur peut déterminer si ce client a raison et peut renvoyer une réponse qui doit être signée et non cryptée.
J'ai une idée brute comment cela pourrait être mis en œuvre, et donnera comme exemple:
Pseudocode
Web service and client has already shared PASSCODE1 and PASSCODE2
First Handshake:
Client pings web service
Web service sends random string A with length
Client checks A is nonnull, and sends Hash X=(md5(A XOR PASSCODE1) XOR
concat("RIGHT",random string B) XOR PASSCODE2)
Web service receives Hash X, checks if "RIGHT" is there, saves key B, sends
Hash Y=(md5(B XOR PASSCODE1) XOR concat ("RIGHT", random string C)
XOR PASSCODE2)
Client checks if this value is right, and they are authenticated
At this point, if everything goes right, have keys B and C for this
particular transaction
Sample Transaction:
Client calls function(args, md5(args, C) XOR PASSCODE2)
Server returns (object(), md5(args, B) XOR PASSCODE2)
keys expire after a few minutes, and a new key pair needs to be requested
Je sais que cette méthode est vraiment brut, qu'il ya d'autres façons de le faire? En particulier, je cherche à le faire en Java.
Et quelle est exactement la raison pour laquelle vous reculez après 35 ans de recherche cryptographique? Si vous êtes réellement concerné par MITM, alors vous devez faire quelque chose où vous vous souciez réellement de la sécurité. Choisissez une langue et vous pouvez trouver une implémentation complète de HTTPS. Ou SSH. Ce truc n'est * pas * facile à corriger, et il est très, * très * facile de se tromper. –
@ Peter, je peux seulement distribuer sur un serveur web HTTP, et j'ai un client dédié. Je demande ce qui montre que je n'essaie pas de partir, juste savoir ce que je peux utiliser. – TiansHUo