One issue that I have been thinking on is I.P. addresses.
Specifically how obfuscate them. Now I happy use google applications and facebook, I believe it is up the user to define just how much privacy they give up and as a result have no problems with the monitoring and analytics those sites perform.
However the user's I.P. address can trace an user's active regardless or explicit choice and that concerns me. The fact there isn't a simple solution bugs me.
The reason you shouldn't obfuscate your I.P. address is the same reasons you shouldn't tell someone you want to call you a factitious number. None of the servers you are addressing will be able to send responses back to the correct address.
Of course that constraint is a hard one to beat.
The question is how can we ensure when we bind to a socket on a site that the responses in that connection return to our client, yet ensure that the server is unable to trace the source I.P. address of the client.
Now the common answer to that is using proxies, which while simple not true obfuscation. In addition arguably they move the traceability to a central choke point. By that I mean the proxy or VPN server can trace and monitor the user behaviour to a greater degree any other mechanism.
What I am discussing it a can to ensure the functional integrity of the I.P. address for the transport layer, but the obfuscation of the address for all layers above it.
To do this requires changing the tcp/ip stack on the sender/client. However the question of to what is still uncertain.
There are protocols which use encryption of the various header fields including the address field for communication between a client an a trusted server. But what actions are available when the server is not trusted?
Within the datagram transport the 12th to 15th (counting as a C programmer) bytes contain the identification of where the client is, that is the source address. Without this the can not be sent, the client can not be traced.