Consider a system with producers (P), consumers (C) and a server (S) with two TCP ports open where a consumer connects on one port and a producer on the other. The server is just a TCP relay which enable NAT traversal.
- Connection (1)
P --> S
,C --> S
- Session matching (2)
P <--> S <--> C
- Server acting as relay (3)
P --> S --> C
(one-way)
I am looking for an authentication protocol where producers authenticate consumers and the server is able to match a consumer with a producer without prior knowledge. Ideally, a consumer should receive a zero-knowledge proof (if possible; a shared-secret otherwise) from the producer, and then both producer and consumer connect to the server with the server matching the producer and the consumer implicitly from the authentication mechanism.
The main idea here is that the server has no idea of the data being exchanged and the prior-setup is minimal.
Does such an authentication/key-exchange protocol exist? I have been reviewing the SRP protocol which may be suitable if using a random username as matching session.