Least Privilege Mail Client, was Re: [E-Lang] defense in depth
Bill Frantz
frantz@communities.com
Fri, 26 Jan 2001 17:24:00 -0800
At 02:50 PM 1/25/01 -0700, Marc Stiegler wrote:
>I talked about refactoring Web servers so that smaller components have fewer
>powers, and Web servers as an example seem pretty clean. But I don't
>currently see how to refactor the components in a mail manager while still
>presenting a smooth user interface.
Well, there is a bunch of stuff you still have to trust, but I think we can
break things up to gain some safety. Here is one approach:
Mail reader: Uses POP/etc. to read mail and create a "Letter" object for
each piece. (Can not read plaintext of encrypted mail.)
Letter object: Encapsulates text of mail. Provides methods to access
headers. Requires an unsealer to read text.
Filter: Reads headers to sort mail into mailboxes. Passes Letter object a
"no hole" factory for filtering on mail text. (Response from factory
object is true, goes into the associated mail box, or false, continue
filtering.)
Mailbox: A collection of Letter objects. Lets you do usual UI things like
sorting, changing mailbox, and opening.
Mail Viewer: Has Letter unsealer, and is used to view the text of mail.
Used the Decrypter to decypher encrypted mail.
Decrypter: Gets passphrase from user and decrypts encrypted mail for the
Mail Viewer.
Encrypter: Gets public key of recipients and encrypts mail for the Composer.
Composer: Used to edit new mail. Has Letter unsealer for quoting. Uses
Encrypter and Signer when requested by user.
Signer: Reads passphrase from user. (User knows when mail is being
signed.) Only available to composer.
AddressBook: Can send to, cc, bcc etc. headers to Composer.
Is this approach a reasonable start?