Proposal: PICS Defeater w/ Encryption
While this service is getting off the ground, these same keys need to be incorporated into a few other projects. These include S/WAN, Apache, Mozilla, ssh, and several MTAs/MUAs (sendmail, etc). This would allow for these various programs to automatically get public keys for individuals from the keyservers, encrypt the data to them, and send it down the wire to them with a nice innocuous rating. Quite probably, the easiest way to accomplish this is to develop a library which can check against GPG public keys.
Oh, and I'm sure many of you are asking why to get this done to the MTAs as well. A quick configuration option after this is incorporated would be to only allow connections from trusted hosts (ie: Their public key must have been signed by a trusted service). Combine this with a service which verifies the user's identity, and anonymous spam could become a thing of the past. Registered spam is still a problem, but that can at least be filtered out and reported very easily.
I've chosen the tools I mentioned because of the fact that, to the best of my knowledge, they are all true Open Source tools which can be used by us. Furthermore, if they're done right, the tools which interact with the user directly (ie: Mozilla, MUAs, etc), then these same tools can be ported to multiple platforms with a great deal of ease, allowing even Windows users, Mac users, and other OSes users to gain the same benefits.
I'm not sure if this is a feasible idea, though. Can such a project be undertaken in a short enough amount of time to short circuit any of the results of this conference in Munich? Is there enough interest in doing so?
I would suggest the following be done in this order, if so:
- Get the code out of gpg and into a library which can be easily attached into any program, allowing members of other open source projects to begin planning for their code to use public keys and encrypted connections.
- Get the code out of ssh to provide encrypted communications over a given socket, and put it into a library in the same fashion as the gpg library. As a side note, it may be desirable to put these two pieces of code into the same library.
- Get code for key servers going which can accept gpg public keys (and their accompanying signatures), and also has the option of being restricted to accepting keys which have been signed by specific signing services.
- While the above code is being ironed out, begin the process to set up the trusted services. This will include generation of keys, setting up ultra-secure computers to hold them (ie: Physically disconnected from the internet, etc), and decide what proof of ID will be required from users.
I think Pedersen's idea is interesting, and I'd like to see what others think of it. There were several good suggestions for PICS-defeating systems in the comments on the two PICS articles - perhaps the authors can resurrect them here, and the community can decide what approaches have the best chance of success and are the most feasible to implement. -- michael
The infrastructure of public-key exchanges and
keyserving is still in its infancy. No-one has
succeed in scaling it to anywhere NEAR the size
of the Internet. That's just ONE problem. How
familiar is a nongeek with creating a key and
registering it? How many servers would be needed?
Just think about it. There's no magic crypto-fix.
- The Boston Lunatic
You could possibly design web servers, anonymous ftp daemons, and other one-to-many services where anonymity is important to do something like this. My terminology may be a bit off, so bear with me. Note that gpg uses two keys for a message: the public-key cypher (e.g. DSA, ELGamal, RSA) is used to encrypt the one-time symmetric cypher key (e.g. Blowfish, CAST5, IDEA) used for the actual data.
- User sends a request encrypted with the server's public key, containing the symmetric key expected for the reply (which may not be the same symmetric key used for this transmission) and the data request (http GET, ftp login, etc)
- Server sends back the data, encrypted with the requested symmetric key and signed with the server's private key. Only the requesting client should know the symmetric key to be able to decrypt this. The signature can be used to verify that someone didn't just send back garbage while pretending to be the server, and that the transmission wasn't tampered with.
This way, the user gives no identifying information besides that already given with non-keyed http/ftp/etc.-----
--
perl -e'$_=shift;die eval' '"$^X $0\047\$_=shift;die eval\047 \047$_\047"' at -e line 1.
The MITM would have to either have the target server's private key (in which case you're screwed anyway), or be in the middle of your connection to the key database as well (like DNS spoofing, this would be key spoofing). Otherwise, he couldn't see the contents of your request (e.g. "GET /index.pl HTTP/1.0") and so couldn't send you back the proper data.
However, as an option, if all servers ALSO had signed keys which could be checked...
Wouldn't they already have signed keys, specifically the ones you used to encrypt the inital transmission?
-----
--
perl -e'$_=shift;die eval' '"$^X $0\047\$_=shift;die eval\047 \047$_\047"' at -e line 1.
As earlier posters have indicated, the solution is both too complex and destroys anonymity. Here's another idea, it's very simple, and it improves anonymity.
Take Squid. Modify it to strip PICS information from any pages read through it. Run it on a decent box with a decent connection in a privacy friendly area. Better yet, have many people each run one or a few. Run some of them on alternate ports.
Anyone, using most existing software, can point their browser to one of these servers as a proxy. Free software can be modified to only bug the server when it gets a page blocked due to PICS restrictions. Some of these proxy servers might be set to only support the friendly browsers.
Your ISP won't see any PICS headers indicating naughty sites, so it won't filter anything from you. It's simple to implement, doesn't require authentication, works with most existing software, and actually improves anonymity, since the target site will see the HTTP requests come from the squid server, not from your machine.
----
----
Open mind, insert foot.
I'm not a whizz at crypto.. (I barly got my own private public keys figured out) It seams like we have a good understanding of how to distribute DNS over the internet.. I wonder if that model could be applied to keyservers ?
Just a thought.
Sorry man I don't controll the aliens.
PICS is a rating system for web pages, apparently categorized by authors for the use of easily offended people who are afraid of the unmediated internet. Authenticated email has nothing to do with this whatsoever. You can get an page securely and anonymously right now.
Let me know how this sounds. We establish a proxy mesh, so that all unencrypted requests for controversial material hit the originating server from non-sensitive territory. We encrypt the connection from our browser to the proxy for untraceability.
SSL improves upon PGP/GPG for this purpose. If you are used to PGP terminology, read 'certificate' as 'public key', and 'certification authority' as 'someone the browser trusts.'
- GPG/PGP is not a stream cipher. The proxy couldn't pass any part of the file on until it had received the whole thing. In contrast, a streaming cipher like SSL can work on data - and pass it along - as it flows in.
- It is already in browsers. In Netscape 2+ and MSIE 3+, you even can add new Certificate Authorities; having Verisign sign your certificate is not strictly necessary, but still useful.
- An implementation (with source) is available both inside and outside the United States. SSLeay is a freely available implementation of SSL.
- It can handle other protocols. SSLeay has been used in a secure telnet application. See section 16.2 of the FAQ pointed at above for info; the link may fail due to spaces in the anchor name.
A couple of places are implementing secure proxies to normal sites (that is, encrypted connection from the browser to the proxy) - the forthcoming-source proxy with SSL added on by C. Scott Ananian (based on IANS by Brian Ristuccia) and the as-yet-unimplemented commercial Anonymizer.com service. I don't know about the identification verification systems in the tools I note below, but the Certification Authorities should block man-in-the-middle attacks nicely. Of course, no revokation procedures are in place in SSL, but I'm already up way past my bedtime here.The Internet Junkbuster Proxy, Muffin and RabbIT are all filtering proxies, well-adapted to block PICS quickly. These could also anonymize well, to avoid signalling the browser locale to the webserver. Squid is adapted for speed and caching, but not-at-all for filtering; I doubt it has any hooks in the code for that.
Well, as promised, here's the first version of my Encryption How To. It's available at
http://216.17.163.212/Encryption-HowTo.p df.
Sorry for the delays, and the format. The format is there because it's only 0.1.
Please be gentle with it, since I'm only on a 256Kbps RADSL link.
GPL made simple: What was my stuff is now our stuff. If you improve our stuff, please keep it our stuff.