Untraceable communication protocol I am doing a research about secure communication protocols.

I would be interested to know whether a protocol exists such that it grants that the two end-points taking part to the communication cannot be traced (i.e. They can deny the communication ever took part).

Can anyone point out any relevant publication?
There are two requirements here:


Anonymity - the two end points must not be able to discover the other's location or identity, nor must any other party be able to identify either endpoint.
Plausible Deniability - both parties must be able to plausibly deny that they participated in the conversation.


The problem with this type of communication over the Internet is that packets must be routable. You need a way to ensure that messages can be passed between the two end points.

I'm not sure there is a protocol for this per se, but you should definitely look into anonymity networks such as Tor. These work by creating a network of nodes that facilitate anonymous communication.

Tor's anonymity works on the principle that information about a particular conversation is only partially known by any node.

A conversation is created by chaining a number of nodes together, between a source and client. The message is encrypted using EndPoint2's public key. The public keys of Node1, Node2 and Node3 are used to encrypt the identity of Node2, Node3 and EndPoint2 respectively, to produce a chain.

EndPoint1 &lt;---&gt; Node1 &lt;---&gt; Node2 &lt;---&gt; Node3 &lt;---&gt; EndPoint2


From this, we can construct a list of what each participant knows:


Node1 knows EndPoint1's identity and Node2's identity
Node2 knows Node1's identity and Node3's identity
Node3 knows Node2's identity EndPoint2's identity
EndPoint2 knows Node3's identity and the message


Notice that no single node knows about both EndPoint1 and EndPoint2, and only EndPoint2 knows the message. The communications between each node are encrypted, so it is impossible for an attacker to know if a node is the originator of a message or just a node in the chain.

When it comes to the final destination of the message, Tor can use both hidden services (Tor nodes with services running on them) and normal internet services. In the latter case, the message is encrypted with the final node's key, so that it can read the message and talk to the target. If the target is a plaintext service, a compromised node might perform a MitM attack. As such, it's best practice to use SSL or a similar secure protocol when talking to non-Tor services.

For a slightly more in-depth review of how Tor works and how it might be attacked, see my answer to another Tor-related question on Security.SE