www.MarkTAW.com/technology/ASimpleSolutionToSpam.html (printable version)
A Simple Solution To Spam (And Phishing)I thought of this a year ago, but never expanded on it, but seeing An Effective Solution for Spam, I decided to write up my ideas.
Precedents
This system is based on existing technologies.
It's also based on existing concepts.
The Original Concept - Individual Mail Servers
If everyone had their own mail server, which other people logged in to in order to send you mail, you could have as much control over this environment as you wanted. You could use a CAPTCHA to verify that someone is human, and you would know every person on your system, you could upgrade them to trusted sender, or you could downgrade them to spam or trash.
This system is an expansion on this idea, and while there are many more players involved - other mail servers, email clients, etc. the concept of a trusted system that verifies people and gives them trust relationships remains the same.
The Solution
This system is based on human verification and trusted senders. It uses 3 levels to notify someone who receives a message who the sender is.
You could substitute Red/Yellow/Green if you like too. Here's a step-by-step breakdown of how the system works.
Most importantly, this system fails nicely. Any mail server or client that doesn't use this system will still work, but emails sent using it will never be upgraded to trusted status. While you can trust an email address, you can't verify that it actually is from sender. Perhaps these people can be given a special status... taupe or eggshell (just kidding).
Public Key Databases & Phishing
If your bank isn't yet in in your tusted system and they send you an email, you need to be able to verify it's from them. Their key should be associated with a public key database. This can be a third party like Verisign, or on the bank's domain. This way you can verify that an email from yourbank.com is really from yourbank.com.
Someone attempting to spoof yourbank.com could not gain trusted status because they couldn't spoof the public key. Even if yourbank.com isn't in your trusted system yet, a quick trip to the associated public key database (automated, of course) could verify that the email is legitimate.
This behaviour should mimic SSL, and as much care should be taken to keep the integrity of this information as is used with SSL keypairs.
Bulk Mail & Non-Human Generated Emails
If you join a mailing list, it's not really possible for the sender to encrypt every email for each recipient (technically, it's possible, but it could tie up the computer for a while). Mailing lists, and other non-human generated emails should have a special status. They will digitally sign their emails, but they won't encrypt them individually for each recipient.
System emails, like automated verifications should also fall under this category.
These are 90% like signed & encrypted messages - you still know who the sender is - but the recipient is in question, and it could be used to spoof the sender, fowarding an email that isn't intended for you. So they'll also enjoy a special status.
Large Organizations
Large organizations with many employees could use a master key / keyring relationship. This way you can simultaneously verify that the email is from your bank, and the banker in question. Again, a public key database should be used to prevent disgruntled employees from using old keys to being able to spoof the bank. The bank should be able to revoke a key, and by clicking on a "verify" button in your email client (or it's web equivelant), your email client should attempt to retrieve the certificate from the public key database.
This is one step beyond whitelisted, now instead of you trusting the sender, you're asking the bank to trust the sender as well.
Failsafes
Even though each message is encrypted, a secondary plaintext email can be sent along with it. This is similar to how HTML encoded emails send a second plain text version for non compliant email clients. Or, since everyone is now using encryption, it could be used for secure communications.
In order to maintain a trust relationship with everyone, you should be able to back up your private keys. Also, it would be a nuisance to have to restablish trust with everyone if you lost your list of public keys. The public keys you trust - being public - could be backed up on the mail server easily. Your private key could be encyrpted and then uploaded on to the mail server, requiring a password to decrypt it once you download it in to a new client, but this method seems somewhat insecure.
What level of privacy you require, and what methods you use to safeguard your privacy are up to you. Again, these keys should be treated with the same care as SSL keys.
Looks like someone's implemented something very similar & it's catching on.
Message Board: http://www.marktaw.com/forum/list.php?f=1
page first created on Tuesday, February 01, 2005
this site and it's contents copyright Mark Wieczorek