On Wednesday 04 July 2007, Alex Daniloff wrote:
John, Please understand, I'm not talking about public mailing lists. The task is to setup closed, private, secure mailing list for limited number of individuals.
Let simplify the problem
In reading ahead, it becomes clear you didn't simply anything, you only attempted to mask your failure to understand public key encryption by removing references to Public vs Private keys....
1. Mail Server has the encryption key for the each Mailing List it handles.
Not necessary. See below.
2. Outbound mail is encrypted using Mailing List encryption key.
No, that's no good.. That would require each user to have the List's decryption key which then becomes public knowledge. Your server and all the mail it sends would be instantly compromised.
3. Subscribers decrypt emails from the mailing list using Mailing List provided encryption key.
No. That's where you run astray. Points 2 and 3 are just unworkable and your list will be cracked in no time. Decrypt using an Encrypt key? Look, Alex, you can't invent terminology on the fly. These words have meaning. Its important to understand the technology involved. Public key: use to Encrypt a message to be sent to someone, you use that person's Public key. Private Key: Used to decrypt such a message which was encrypted using public key. If you want to send me an encrypted message: You encrypt it using MY PUBLIC key. I'm the only one who has my PRIVATE key, and that private key is the only way to decrypt the message. (other than brute force). You must never provide the server's Private key. You must never REQUIRE a users private key.
4. Subscriber sends an email to the list encrypted with its own encryption key (call it private key or whatever).
No, There is no such option as WHATEVER. You simply MUST do what Cristian said and Read and Understand the manual on GPG. No way around it. First, subscribers do not encrypt mail they send using THEIR key, because that requires the server to know how to decrypt mail from that user and that requires the users PRIVATE key. That is information that the mailing list admin has no business knowing. As stated before, the only way to do this is to encrypt inbound mail with the servers PUBLIC key. No need of a different key for each list. Adds nothing but complexity, and provides no more security. That single PUBLIC key can be published on a web page, freely appended to every message, or distributed by any means. Its PUBLIC. Its ok if every one in the world knows it. Its supposed to be known.
5. Mail Server decrypts inbound mail from the subscriber using subscriber's key stored in its database.
No, that's wrong. The server does not know how to decrypt any message encrypted with someone else's key. No one in their right mind would give you their private key for decryption. The server would receive inbound messages that were encrypted with its own PUBLIC key. The only person in the world who can decrypt that message is the holder of the server's PRIVATE key which is called a "PRIVATE" key because it is kept strictly private.
6. Mail Server encrypts outbound mail using Mailing List encryption key.
Useless, and just plain wrong. That would require distributing the list's private key so that all users could decrypt the messages. That would be secure for about 5 seconds. 1) There is no need to have a key for every list. It adds nothing. 2) Outbound messages are encrypted using the recipient's PUBLIC key. One public key stored in the database for EACH user. EACH outbound message would be custom encrypted using that users key. It would be slower, but do-able. This database only hold PUBLIC keys, so it does not matter if its compromised.
Practically we're dealing here with multiple sets of encryption keys - Mailing List and individual subscribers.
As stated, you don't need a key for each list, you only need a public key for each user, and a public and private key PAIR for the server. You publish the public one, and guard the private one with your life. It is used to decrypt inbound messages.
Call them private or public - it doesn't matter.
Yes, by god it DOES MATTER!
The question - is there any Mailing List Manager which allows to do such secure transactions.
Not that I am aware of, but it could be implemented with a couple of hooks (shell scripts should suffice) using majordomo or listserv, or any competent mailing list software. There are places in each of those packages where you can pre/post/process the message body if you add the "hooks" (exit programs). The actual processing is easily accomplished with a shell script that gets invoked with the message body, and the appropriate key. One script for decryption, one for encryption. The scripts just invoke command line gpg utilities . Type "man gpg " for the format of that command line utility. If you set this up as I've indicated ANY linux mail program that understands gpg (Pgp) can be used to send and receive mails. Only "exit" hooks need be written for the list management software, and all of them have places for these hooks. The hooks might end up being one or two lines of code. Done your way you will not only have to hack the server, you will have to hack each user's mail reader, because mail readers are all set up to handle keys properly, and what you describe inverts that process. -- _____________________________________ John Andersen