Automatic encryption of stored messages
mi+thun at aldan.algebra.com
Tue Apr 27 10:40:25 EDT 2010
Is there a way to encrypt all of the Cyrus' user-specific files on the
disk? So that somebody breaking in -- or stealing the server -- has no
access to the messages (and other data) unless a user's password is also
This is how I'd envision it:
* A somewhat secret "salt" and the location of a (memory-backed)
cyrus-only directory, such as /tmp/cyruspw, are set in a config-file.
* A user logs in using a pam-module, which creates a symlink such as
/tmp/cyruspw//user/ -> somehash(/salt/+/password+user/).
* Subsequent access to the user's files uses the above hash as the
key for user's messages, attachments, etc.
* New messages are stored unencrypted (or on a shared encrypted
partition) until the next time this user logs in. When he does,
his user-specific encryption begins in background.
* When the user disconnects, and all unencrypted messages are
encrypted, the user's entry is removed from /tmp/cyruspw until his
* A (rare) password-change will require all unencrypted messages to
be re-encrypted with the new hash -- until the re-encryption is
completed, the server will keep the old hash around (in a
different location, that would survive a system restart, such as
/var/cyrus/oldpw//user /->/ oldhash/) to provide access to the
A fancier system could also provide for a "master password" to allow
message-recovery in case of the user forgetting their password (or a
law-enforcement subpoena). Some people may choose to not use this
feature in their setup...
I think, this ensures reasonable protection for the stored messages
without any cooperation from the MUA -- a stolen server (or a
decommissioned hard-drive) will not reveal user's e-mails. Also, each
user is assured, that their old emails are not accessible to anyone,
/when he isn't accessing them himself/.
This may be possible to do right now -- without changing the Cyrus' code
at all -- by using encrypted filesystems. Unfortunately, it means, each
user's files would have to reside on their own filesystem... The
proposed mechanism would provide a better way without /too much/
trouble. What do you think?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Cyrus-sasl