I wonder whether using a relay server in the middle doesn't actually add a layer of privacy since it would be less obvious where the packets are being sent - all packets would go to the server instead of being sent straight to the other device.
It adds different kinds of privacy. You have (mainly) two kinds of privacy here:
- Privacy from provider
- Privacy from other users.
- Privacy from someone with network level access (ISP, government)
A P2P architecture can be implemented in a way so that the provider is only involved in the set up of the connection, and doesn't need to know for how long you communicate, if you use video etc.
However, a P2P-structure will leak info about users to other users. This may or may not be an issue. In many cases, users communicating will know each other, and will prefer not leaking information to a provider over leaking information to whomever they're talking with.
However, if you're a Chinese dissident using a non-national service, it's probably preferable to leak information to the provider over the other user.
It will affect latency - especially if the two clients are otherwise close (e.g. same cell phone provider and country), but the server is 50ms away.
Signal gives the users a choice:
I believe this is the best solution, especially if the users are educated on security. They may make their own trade-offs based on what value they place on the various aspects. For me, the quality penalty makes me stick to P2P. This is based partially on the fact that I'm in a politically stable region with a very strong freedom of speech.
To protect against someone who can do network level eavesdropping, it should be impossible to correlate streams.
Now, if clients communicate P2P, it's absolutely trivial to work out who communicates with whom; the streams are direct.
If they go via a central proxy, it's harder, but probably not impossible to correlate streams in time, based on size and frequency of packets. There's been research on unmasking tor users based on this.
In short, you have multiple different kinds of privacy worries. Some of them are mutually exclusive. Different users will have different needs of anonymity. A dissident communicating with peers may want P2P, to avoid any central servers that can be targeted. The same dissident, when recruiting other dissidents, may want a centralized server - as that makes locating them harder.
When I'm talking with friends, I don't care if they know who I am; they alread know, so P2P is just fine. If I'm selling drugs, I probably don't want people to get my IP address.
If it is, is there a way/are there any known techniques to obfuscate the source/destination when establishing P2P connections, specifically when using IPv6? By this I mean somehow hiding/changing possibly identifying information such as the IP & port number.
No. IP packets require source and destination. Port number may be choosen freely.
The technique for obfuscating IP is using a proxy (as you are suggesting) or a VPN.