Proposal: PICS Defeater w/ Encryption 17
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
Extremely complex! (Score:1)
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
What about anonymity? (Score:1)
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.
-----
Re:Extremely complex! (Score:1)
Scaling, while an issue, is not as big of an issue as it is made out to be, I don't think. People are already used to searching on the web for a webpage. Extend this functionality to include searching the keyweb for the key you seek. Nobody said the process had to be 100% automatic (not yet, anyway) While it would take time to build a sufficient network of keyserves, I think it could be done. And, in the end, time is on our side with this issue, if we start now. If we simply start sending all of our emails signed (and encrypted, where possible), people can start to get used to the idea, and will ask questions. If we answer intelligently, we can get them willing to do the same thing.
As for how familiar is a nongeek... Currently, it's a pain in the rear to generate a key, get it distributed, etc. However, it doesn't have to be that way. A few simple installation wizard type of programs, and people can be merrily generating their keys and getting it registered. Signed is almost as easy after that.
Please, feel free to reply. While I'll admit to not being an expert on all the necessary ideas to make this work, I believe it CAN work, and would be the easiest way to defeat the whole PICS system, assuming we are too late to stop it from being implemented in the first place.
Re:What about anonymity? (Score:1)
You won't see the difference, or know that it's happening, but your every move is being recorded, with even less anonymity. Translation: Even worse than before.
However, as an option, if all servers ALSO had signed keys which could be checked, the mitm could be eliminated safely. This technique would also allow people to maintain their current levels of anonymity (which, while very low already, don't need to be reduced further.
Explain... (Score: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?
-----
Re:Extremely complex! (Score:1)
If we simply start sending all of our emails signed (and encrypted, where possible), people can start to get used to the idea, and will ask questions. If we answer intelligently, we can get them willing to do the same thing.
This leads back to an issue that was raised recently on the main slashdot -- is there a good newbie explanation of cryptography somewhere on the web which can be used as the answer to the questions you're encouraging? Something that you could give to a completely non-technical person (your mother, or a WebTV user) which goes over the most basic concepts without going into enough detail to scare them off? (I guarantee you, as soon as you mention prime numbers or modular arithmetic, their brains will shut down. There must be no math at all.)
Re:Explain... (Score:1)
And yes, I will freely admit that the idea needs work. But I wouldn't have posted the idea at all if I wasn't willing to work on it.
Re:Extremely complex! (Score:1)
I'll write up something tonight, and submit it to Slashdot in the morning. It may take a few days, but it'll (hopefully) be posted, and people can begin to tell me where this idea really needs work.
Re:Extremely complex! (Score:1)
Easier solution (with anonymity) (Score:2)
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.
----
NDS like distributed KEy Servers??.. (Score:1)
Just a thought.
Better solution? (Score:1)
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.'
The Internet Junkbuster Proxy [junkbusters.com], Muffin [doit.org] and RabbIT [nada.kth.se] 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.
Encryption HowTo, v0.1 (Score:1)
http://216.17.163.212/Encryption-HowTo.p df [216.17.163.212].
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.
Re:Easier solution (with anonymity) (Score:1)
Re:NDS like distributed KEy Servers??.. (Score:1)
Keys don't neatly fall into that category. Though you could use the email addressing on those keys to break it down, I suppose.
Re:Better solution? (Score:1)
In order to use a public key for, well, anything, you must have separate public keys for each application. What I'm suggesting is dropping down to one public key which is easily used in all other applications.
Once we've gotten that far down the road, it's a trivial process to attach a stream cipher to it. Of course, for what it's worth, even a block cipher would work fine, since each block is, more or less, independent of each other block. While not technically true, individual blocks could be passed from server to client easily.
Basically, at teh heart of my idea, is the idea that all traffic which can be encrypted, will be encrypted.
Now, to try and address your points, one by one:
1) Already addressed the streaming cipher issue.
2) Very true. But I'm not talking about just browsers. Every program, every daemon, every connection, employs encryption under this idea. SSL is nice. I still will push towards GPG though, out of personal preference.
3)GPG is free, period. If we could implement a GPG/(SSH|SSL) library, then people could link against that, and get full encryption functionality without dealing with the internals much at all. GPG in this case provides the certificates/key pairs, and SSH|SSL provides the socket.
4) Well, in the purest sense, virtually all protocols which use TCP can be almost interchangeable, as most of them (all of them?) are based on text interchanges between machines. As such, SSL would work. SSH would work. Any protocol should be able to sit on top of TCP, and provide a reliable connection. Whether or not it's encrypted... That's another story
Re:Easier solution (with anonymity) (Score:2)
As for the sites, the more sites that are out there, the harder it would be to block them all. Most ISP's wouldn't care enough to bother, they'll be doing the absolute minimum required to stay within the law.
----