[opensuse] Implementation of Private & Secure Mail Server & Mailing Lists' Manager
Hello SuSE folkz, I'm trying to find a practical solution to setup private and secure Mail Server & Mailing Lists' Manager with the following characteristics: 1. Mail Server shall generate separate and unique public encryption key for the each Mailing List it handles. 2. Mail Server shall distribute Mailing List relevant public encryption key and newly generated unique private encryption key to the each new subscriber. As an option the subscriber shall be able to upload its own generated private encryption key to the Mail Server. 3. Mail Server shall store private encryption key associated with the each subscriber in SQL database along with subscribers' email address and subscription information. 4. When the Mail Server receives a message encrypted with subscriber's private key, it decrypts it using existing subscriber's private key stored in SQL database. Then the Mail Server encrypts this message with the Mailing List public encryption key and distributes it to all other Mailing List subscribers. 5. If the subscriber has a mail account on the Mail Server, the subscriber shall be able to retrieve its mail using ether POP3S or IMAPS protocols. Could you please point me out if there any Mailing List Manager software which could handle these tasks. Thank you in advance, Alex -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 04 July 2007, Alex Daniloff wrote:
3. Mail Server shall store private encryption key associated with the each subscriber in SQL database along with subscribers' email address and subscription information.
That is really insecure. -- _____________________________________ John Andersen -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
You're missing this point: 4. When the Mail Server receives a message encrypted with subscriber's private key, it decrypts it using existing subscriber's private key stored in SQL database. Then the Mail Server encrypts this message with the Mailing List public encryption key and distributes it to all other Mailing List subscribers. Please don't hijack this thread if you can't offer anything useful. On Wednesday 04 July 2007 15:05:05 John Andersen wrote:
On Wednesday 04 July 2007, Alex Daniloff wrote:
3. Mail Server shall store private encryption key associated with the each subscriber in SQL database along with subscribers' email address and subscription information.
That is really insecure.
-- _____________________________________ John Andersen
-- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 04 July 2007, Alex Daniloff wrote:
You're missing this point:
4. When the Mail Server receives a message encrypted with subscriber's private key, it decrypts it using existing subscriber's private key stored in SQL database. Then the Mail Server encrypts this message with the Mailing List public encryption key and distributes it to all other Mailing List subscribers.
I understood exactly what you said. But giving one's private key to anyone else (the mail server) is insecure. If asked to load my private key to any mail server I would be looking for a different list. As for the outbound, if you encrypt with the mailing list PUBLIC key then everybody would need the mailing list PRIVATE key to decrypt it. You are doing this (or at least explaining it) exactly backward of how public key encryption is supposed to work. If you want list outbound traffic encrypted the server needs to store each user's PUBLIC key and encrypt each outbound message with the key specific to the user. If list inbound traffic is to be encrypted, then subscribers should encrypt with the list server's PUBLIC key. Any plan you cook up which requires sharing anyone's PRIVATE key is just wrong from the get go. If you can't understand that, don't come here asking for help and suggestions about how to compromise public key encryption standards. -- _____________________________________ John Andersen -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
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 1. Mail Server has the encryption key for the each Mailing List it handles. 2. Outbound mail is encrypted using Mailing List encryption key. 3. Subscribers decrypt emails from the mailing list using Mailing List provided encryption key. 4. Subscriber sends an email to the list encrypted with its own encryption key (call it private key or whatever). 5. Mail Server decrypts inbound mail from the subscriber using subscriber's key stored in its database. 6. Mail Server encrypts outbound mail using Mailing List encryption key. Practically we're dealing here with multiple sets of encryption keys - Mailing List and individual subscribers. Call them private or public - it doesn't matter. The question - is there any Mailing List Manager which allows to do such secure transactions. Alex On Wednesday 04 July 2007 17:40:56 John Andersen wrote:
On Wednesday 04 July 2007, Alex Daniloff wrote:
You're missing this point:
4. When the Mail Server receives a message encrypted with subscriber's private key, it decrypts it using existing subscriber's private key stored in SQL database. Then the Mail Server encrypts this message with the Mailing List public encryption key and distributes it to all other Mailing List subscribers.
I understood exactly what you said.
But giving one's private key to anyone else (the mail server) is insecure.
If asked to load my private key to any mail server I would be looking for a different list.
As for the outbound, if you encrypt with the mailing list PUBLIC key then everybody would need the mailing list PRIVATE key to decrypt it.
You are doing this (or at least explaining it) exactly backward of how public key encryption is supposed to work.
If you want list outbound traffic encrypted the server needs to store each user's PUBLIC key and encrypt each outbound message with the key specific to the user.
If list inbound traffic is to be encrypted, then subscribers should encrypt with the list server's PUBLIC key.
Any plan you cook up which requires sharing anyone's PRIVATE key is just wrong from the get go. If you can't understand that, don't come here asking for help and suggestions about how to compromise public key encryption standards.
-- _____________________________________ John Andersen
-- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
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
Alex Daniloff escribió:
You're missing this point:
4. When the Mail Server receives a message encrypted with subscriber's private key, it decrypts it using existing subscriber's private key stored in SQL database. Then the Mail Server encrypts this message with the Mailing List public encryption key and distributes it to all other Mailing List subscribers.
If someone else finds a mailing list server that do this, do not use it :-) this would be: 1. highly innecifient and resource hungry 2. insecure as hell, I reccommend you to RTFM :) especially the GPG related documentation, that **clearly** warns on this approach 's insecurity. You are tying to solve a non-technical problem with encryption and your requirements are so ill conceived (storing private keys in a database is the part that smells fishy enough to discard your idea) that I suggest you either talk to your lawyer about privacy and confidentility rules of your business and/or think your requirements better, what you are trying to do is plain wrong.. and having wrong security is worse than no security at all. -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
Better to have the subscribers possess a copy of the lists public key. Then it can decode their messages and recode to the subscribers public keys. ___ _ _ _ ____ _ _ _ | | | | [__ | | | |___ |_|_| ___] | \/ -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wed, 2007-07-04 at 13:56 -0700, Alex Daniloff wrote:
Hello SuSE folkz,
First your wrong only public keys should be exchanged. The list will have a public key which the subscribers will use to when sending messages to the list. In turn the list will use the keys of the user to encrypt messages to them and send them out. Your risk comes from outside agents who would seek to capture the server. Herein lies the risk which requires the use of memory not hard drive to store the lists public and private keys. If they reside in volatile memory then they can not be captured. If your really smart the host will reside headless in a confined space with a proximity alarm which reboots the server if the server is disturbed thus destroying the list keys. Using this protocol you have one final risk; picking who can be trusted to join the list since anyone once joining will still be able to read all messages but no business or government will be able. This is the basis of the Spitzer protocol. I have discussed it only a few times. No one has implemented it as of yet, though it would be ideal for use by both government and political activists. It has one primary risk as do all systems the people using it; who must be trusted to be mindful PKI and physical security of their systems. In this age of post 911 diminished freedom in America and increased, unlawful spying on civilians outside America we should all have copies of the source code and binaries of gnupg. -- ___ _ _ _ ____ _ _ _ | | | | [__ | | | |___ |_|_| ___] | \/ | \ /|\ || |\ / |~~\ /~~\ /~~| //~~\ | \ / | \ || | X |__/| || |( `--. |__ | | \| \_/ / \ | \ \__/ \__| \\__/ -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
participants (4)
-
Alex Daniloff
-
Carl Spitzer
-
Cristian Rodriguez R.
-
John Andersen