Re: [Cryptography] Functional specification for email client?

2013-09-01 Thread Ray Dillinger

On 08/31/2013 02:53 PM, John Kelsey wrote:

I think it makes sense to separate out the user-level view of what happens.


True.  I shouldn't have muddied up user-side view with notes about
packet forwarding, mixing, cover traffic, and domain lookup, etc.
Some users (I think) will want to know that much in general terms,
in order to have some basis to evaluate/understand the security
promises, but it's not part of the interface. Only the serious crypto
wonks will want to know in more detail.

{note: how strange! my spell checker thinks crypto is a typo, but
has no problem with wonks!}


If something arrives in my inbox with a from address of nob...@nowhere.com,
then I need to know that this means that's who it came from.  If I mail
something to nob...@nowhere.com, then I need to know that only the owner
of that address will be able to read it.


As I consider it, I'm thinking even that promise needs to be amended
to include the possibility of leaking from the recipient.  For example
email forwarding, unencrypted mail archives found by hackers, etc.


My intuition is that binding the security promises to email addresses
instead of identities is the right way to proceed.  I think this is
something most people can understand, and more importantly it's
somethingwe can do with existing technology and no One True Name
Authority In The Sky handing out certs.


Eggs Ackley.  I believe every user in the world is familiar at this point
with the idea of an email alias, and that the concept maps reasonably
well to holder of a key for crypto purposes.  To promise any more
than that about identity requires centralized infrastructure that
cannot really exist in a pure P2P system.


One side issue here is that this system's email address space needs
to somehow coexist with the big wide internet's address space.  It
will really suck if someone else can get my gmail address n the
secure system, but it will also be confusing if my inbox has a
random assortment of secure and insecure emails, and I have to do
some extra step to know which is which.


If you want to gateway secure mail into the same bucket with
insecure mail, I guess you can do that; I would far rather have
separate instances of mail clients that do not mix types. eg,
this is Icedove/P2P, and this is Icedove/SMTP, and they are not
expected to be able to interchange messages without some gateway.

That said, all you need to gateway secure mail into an SMTP system
is easy to construct.  Consider if the peer mail system has an
address structure like name**domain:

You have a machine with DNS/SMTP address like secure.peermail.
com to reserve the name and provide bounce messages that prompt
people to get a peer mail client and send a message in that
client to name**domain for whatever address someone tried to
reply to. Mail imported from the peer mail client with a
name*domain mail format, could show in an SMTP client as
name**dom...@secure.peermail.com.

Alternatively, or additionally, you could have a machine with
an address like insecure.peermail.com that actually does
protocol translation and forwards SMTP mail onto the secure
network and vice versa, and allow peer mail users to choose
which machine handles their SMTP-translated address. But
this has the same problems as Lavabit and Silent Circle,
which recently shut down under duress.

Dual-protocol mail clients could use name**domain on the
peer network directly.  Mail imported from the SMTP network
on a dual-protocol client or on a peer mail client could
appear as n...@address.com**INSECURE-SMTP or similar, and on
the dual-protocol client a direct reply would prompt use of
the insecure protocol after a warning prompt.  On a secure-
protocol client it would simply prompt the user to use an
insecure mail client, same as the bounce message on the
other side.

I see the Big Wide Internet's address space as a simple tool to
implement it, not as a conflicting thing that needs reconciled.

The domain lookup as I envision it would associate mail peer email
addresses with a tuple of IPv6 address and public key.  The public
keys are stable; the IPv6 address may appear and disappear (and may
be different each time) as the user connects and disconnects from the
system.  The presumption is that the mail peer daemon on the local
machine sends a routing update message when starting up, and
possibly another (deleting routing information) in an orderly
shutdown.

As stated earlier, the system makes no effort to actively hide the
machine where an email address is located.  It could be a machine
designated to receive and keep mail for that address until it gets
a private address update that tells it where to send the messages
but which is not propagated; even in that case, the designated
maildrop machine if not controlled by the holder of the address
cannot be considered to hold any real secrets.

Routing update messages propagate across the network of relevant domain
servers, which check the sig on the update against the 

Re: [Cryptography] Functional specification for email client?

2013-08-31 Thread ianG

Some comments, only.

On 30/08/13 11:11 AM, Ray Dillinger wrote:



Okay...

User-side spec:

1.  An email address is a short string freely chosen by the email user.
 It is subject to the constraint that it must not match anyone else's
 email address, but may (and should) be pronounceable in ordinary
language
 and writable with the same character set that the user uses for
writing.
 They require extension with a domain as current email addresses do,
 but not a domain name in the IETF sense; just a chosen disambiguator
 (from a finite set of a million or so) to make name collisions less of
 a problem.

2.  An email user may have more than one email address.  In fact s/he can
 make up more email addresses at any time.  He or she may choose to
associate
 a tagline -- name, handle, slogan or whatever -- with the address.



An email user may have one or more identities... (confusion between 
email addresses, keys, chat handles, etc).




3.  When an email user gets an email, s/he is absolutely sure that it comes
 from the person who holds the email address listed in its from line.
 S/he may or may not have any clue who that person is.  S/he is also
 sure that no one else has seen the contents of the email.  The
tagline
 and email address are listed in the from: line.



This requirement is troubling, and it has bedevilled many systems 
because it has artificially locked them into perfect traffic analysis, 
low key agility, poor economics, and messy identity semantics.


It typically is an assumption of the email providers that an email 
address must have a certificate, and this allows the certificate to be 
'checked' against the email address.  But it is not necessary nor 
particularly effective.


A better requirement might be worded:

When a user receives an email, she is sure that it comes from the stated 
identity as found in the address book.  The stated identity may not be 
related to the from line.



4.  A user has an address book. The address book can be viewed as a
whole or
 as seen by just one of the user's email addresses.  IOW, if you
have an
 email address that you use for your secret society and a different
email
 address that you use for your job, you can choose to be one or
the other
 and your address book will reflect only the contacts that you have
seen
 from that address or have been visible to under that address.

5.  A mail client observes all email addresses that go through it.



all identities (email addresses and/or keys)...



When a
 user receives mail from someone who has not directly sent them mail
before,
 the client opens a visible entry in the address book and makes
available
 a record of previous less-direct contacts with that address, for
example
 from posts to mailing lists, from CC: lists on emails, etc.  The
client
 also makes visible a list of possible contact sources; places where
the
 correspondent may have seen the address s/he's writing to.
However, often
 enough, especially with cases where it's a scribbled on a napkin
address,
 the client just won't know.

6.  When a user sends mail, s/he knows that no one other than the holder of
 the address/es s/he's sending it to will see the body of the mail,
and also
 that the recipient will be able to verify absolutely that the mail
did in
 fact come from the holder of the user's address.



This needs to nailed down, otherwise the system falls into the abyss of 
digital signatures.  What this means (at a lower level) is that every 
mail is digitally signed by the sender.  It needs to be stated that the 
signature of the sender's key means that the message came from the 
sender's key, and not anything else.  Especially, it is not a signed 
contract, not a non-repudiable bla bla, and is not even a proof that the 
person sent the message (without significant other support).


That is, the digsig is a low-level protocol tool, not a legal digital 
signature.


Also, to bed in a complete understanding, a separate requirement 6.b 
should be added for a second signing process using separate signing 
keys following the notions expressed in (eg) EU digital signature 
directive (eg) OpenPGP cleartext signing.  However, this should be 
clearly stated as optional, as such digital signatures are fraught, and 
if not optional, the system will fail to be implemented and be accepted.






iang

___
The cryptography mailing list
cryptography@metzdowd.com
http://www.metzdowd.com/mailman/listinfo/cryptography


Re: [Cryptography] Functional specification for email client?

2013-08-31 Thread John Kelsey
I think it makes sense to separate out the user-level view of what happens (the 
first five or six points) from how it's implemented (the last few points, and 
any other implementation discussions).  In order for security to be usable, the 
user needs to know what he is being promised by the security mechanisms--not 
which digital signature scheme is being used or whether decoy messages are sent 
to frustrate traffic analysis.  

If something arrives in my inbox with a from address of nob...@nowhere.com, 
then I need to know that this means that's who it came from.  If I mail 
something to nob...@nowhere.com, then I need to know that only the owner of 
that address will be able to read it.  I need to know that nobody should be 
able to know with whom I'm communicating.  But I don't need to know about keys, 
digital signatures, mix nets, etc.  That's what I want to know as a 
cryptographer, but as a user, I just want to know what the security system is 
promising and how reliable its promises are. 

My intuition is that binding the security promises to email addresses instead 
of identities is the right way to proceed.  I think this is something most 
people can understand, and more importantly it's something we can do with 
existing technology and no One True Name Authority In The Sky handing out 
certs.  

One side issue here is that this system's email address space needs to somehow 
coexist with the big wide internet's address space.  It will really suck if 
someone else can get my gmail address n the secure system, but it will also be 
confusing if my inbox has a random assortment of secure and insecure emails, 
and I have to do some extra step to know which is which.  

--John
___
The cryptography mailing list
cryptography@metzdowd.com
http://www.metzdowd.com/mailman/listinfo/cryptography


[Cryptography] Functional specification for email client?

2013-08-30 Thread Ray Dillinger



Okay...

User-side spec:

1.  An email address is a short string freely chosen by the email user.
It is subject to the constraint that it must not match anyone else's
email address, but may (and should) be pronounceable in ordinary language
and writable with the same character set that the user uses for writing.
They require extension with a domain as current email addresses do,
but not a domain name in the IETF sense; just a chosen disambiguator
(from a finite set of a million or so) to make name collisions less of
a problem.

2.  An email user may have more than one email address.  In fact s/he can
make up more email addresses at any time.  He or she may choose to associate
a tagline -- name, handle, slogan or whatever -- with the address.

3.  When an email user gets an email, s/he is absolutely sure that it comes
from the person who holds the email address listed in its from line.
S/he may or may not have any clue who that person is.  S/he is also
sure that no one else has seen the contents of the email.  The tagline
and email address are listed in the from: line.

4.  A user has an address book. The address book can be viewed as a whole or
as seen by just one of the user's email addresses.  IOW, if you have an
email address that you use for your secret society and a different email
address that you use for your job, you can choose to be one or the other
and your address book will reflect only the contacts that you have seen
from that address or have been visible to under that address.

5.  A mail client observes all email addresses that go through it.  When a
user receives mail from someone who has not directly sent them mail before,
the client opens a visible entry in the address book and makes available
a record of previous less-direct contacts with that address, for example
from posts to mailing lists, from CC: lists on emails, etc.  The client
also makes visible a list of possible contact sources; places where the
correspondent may have seen the address s/he's writing to.  However, often
enough, especially with cases where it's a scribbled on a napkin address,
the client just won't know.

6.  When a user sends mail, s/he knows that no one other than the holder of
the address/es s/he's sending it to will see the body of the mail, and also
that the recipient will be able to verify absolutely that the mail did in
fact come from the holder of the user's address.

7.  Routing information once obtained for a given domain is maintained locally.
This means routing information for each email address is public knowledge,
but also means that no one can tell from your address queries who 
specifically
your correspondents are more precisely than knowing which domains they are 
in.
This also means that other users may obtain routing information for that
domain from you. You can update your routing information (ie, set the system
to route messages for your address to the network location where you 
actually
are) at any time, via a message propagated across all peers serving the 
domain
of that address.  Also, your client keeps your addresses alive by 
periodically
sending out a message that is propagated across all server peers for that 
domain.
This happens at intervals you set (a few months to ten years) when you 
create
the email address.  If that interval goes by without a keep-alive or a 
routing
information update, the servers will drop the address.

8.  Emails are mixed on your machine locally, then sent out onto the network.
The mixing means creating packets of a uniform size, planning a route for
each, encrypting them once for each 'hop' on the route, and sending them.
Routing is constrained to average less than ten 'hops'.  The packet size
should be selected so most text emails are one packet or less.  Larger 
messages
will be sent as a set of packets and reassembled at destination.  Packets 
will
be released at a rate of one every few seconds; very large file attachments
may take days to send and are discouraged.

9.  Your machine, while connected, is collecting your email.  It is also in the
business of packet forwarding:  ie, it gets a packet, decrypts it, reads the
next hop, waits some random number of seconds, and sends it to the next hop.

10. Finally, your mail client will occasionally create one or more packets and
send them via some randomly selected route to another point on the network,
where they will be received and ignored.  It will do this just about as
often as it sends original content-bearing packets, and about five percent
as often as it forwards packets.  This generates 'cover traffic' equal to
about three quarters of the total network volume. Generation and receipt
of cover traffic is completely invisible to the user.




Re: [Cryptography] Functional specification for email client?

2013-08-30 Thread Jonathan Thornburg
On Fri, 30 Aug 2013, Ray Dillinger wrote:
 3.  When an email user gets an email, s/he is absolutely sure that it comes
 from the person who holds the email address listed in its from line.
 S/he may or may not have any clue who that person is.  S/he is also
 sure that no one else has seen the contents of the email.

This probably needs amending to deal with messages addressed to multiple
recipients (either cc:, bcc:, or simply multiple to: addresses).

-- 
-- Jonathan Thornburg [remove -animal to reply] 
jth...@astro.indiana-zebra.edu
   Dept of Astronomy  IUCSS, Indiana University, Bloomington, Indiana, USA
   There was of course no way of knowing whether you were being watched
at any given moment.  How often, or on what system, the Thought Police
plugged in on any individual wire was guesswork.  It was even conceivable
that they watched everybody all the time.  -- George Orwell, 1984
___
The cryptography mailing list
cryptography@metzdowd.com
http://www.metzdowd.com/mailman/listinfo/cryptography


Re: [Cryptography] Functional specification for email client?

2013-08-30 Thread Ray Dillinger

On 08/30/2013 01:52 PM, Jonathan Thornburg wrote:

On Fri, 30 Aug 2013, Ray Dillinger wrote:

3.  When an email user gets an email, s/he is absolutely sure that it comes
 from the person who holds the email address listed in its from line.
 S/he may or may not have any clue who that person is.  S/he is also
 sure that no one else has seen the contents of the email.


This probably needs amending to deal with messages addressed to multiple
recipients (either cc:, bcc:, or simply multiple to: addresses).



Right.

More generally, I was hoping for feedback as to whether this is a design
useful to and usable by ordinary people.

It's fairly straightforwardly implementable as a fully distributed system,
given the notion that routing information includes public key.  The only
slightly tricky issue is maintaining the coherence of the per-domain
routing databases among mutually suspicious clients, and there are existing
techniques for that.

It's also compatible with current standards for email payloads, so existing
infrastructure can easily be adapted; in the protocol stack, it looks like
any other MTA.

It can also fairly easily gateway to SMTP, but is not dependent on it.

Bear


___
The cryptography mailing list
cryptography@metzdowd.com
http://www.metzdowd.com/mailman/listinfo/cryptography