[noise] Potential redesign?

Trevor Perrin trevp at trevp.net
Thu Mar 19 00:08:41 PDT 2015


On Tue, Mar 17, 2015 at 10:15 PM, Daniel Kahn Gillmor
<dkg at fifthhorseman.net> wrote:
>
> If we can come up with a clear, comprehensible taxonomy of the features
> each particular recipe/combination provides to users, then users can
> consult the checklist/table, and say something like "hm, i'm looking to
> do stream-based key establishment, and i care about 'Forward Secrecy'
> and about 'Server Identity Hiding', but not 'Client Authentication', so
> i should choose HandshakeNX".  (it looks like all the combos Trevor has
> listed have forward secrecy, but i suppose given the primitives
> available, we can come up with some that don't have forward secrecy
> too).

Yeah, I'm imagining libraries that provide the default combos, and
then have a more-dangerous interface for using your own descriptors.
Hopefully the default combos would suffice for most.

I think a feature-matrix possible.  Labelling the example messages:

sFS = sender forward-secrecy
rFS = recipient forward-secrecy
sAuth = sender authentication
rAuth = recipient authentication
sIDhide = sender ID is hidden

BoxSS                     sAuth* rAuth* (* = not KCI-resistant)
BoxNS           sFS              rAuth   -
BoxXS           sFS       sAuth* rAuth   sIDhide
BoxNE           sFS rFS          rAuth   -
BoxXE           sFS rFS   sAuth  rAuth   sIDhide

For handshakes, I only show messages up to the point that features
"stabilize", all subsequent messages in same direction have same
properties:

HandshakeNX->                            -
HandshakeNX<-   sFS rFS   sAuth          sIDhide* (* = anyone can solicit)
HandshakeNX->   sFS rFS          rAuth   -

HandshakeXX->
HandshakeXX<-   sFS rFS   sAuth          sIDhide*
HandshakeXX->   sFS rFS   sAuth  rAuth   sIDhide
HandshakeXX<-   sFS rFS   sAuth  rAuth   sIDhide*

HandshakeNS->   sFS              rAuth   -
HandshakeNS<-   sFS rFS   sAuth          sIDhide
HandshakeNS->   sFS rFS          rAuth   -

HandshakeXS->   sFS              rAuth   -
HandshakeXS<-   sFS rFS   sAuth          sIDhide
HandshakeXS->   sFS rFS   sAuth  rAuth   sIDhide
HandshakeXS<-   sFS rFS   sAuth  rAuth   sIDhide

HandshakeNE->   sFS rFS          rAuth   -
HandshakeNE<-   sFS rFS   sAuth          sIDhide

HandshakeXE->   sFS rFS   sAuth  rAuth   sIDhide
HandshakeXE<-   sFS rFS   sAuth  sAuth   sIDhide


> Maybe this kind of taxonomy is a pipedream?  or maybe the hope that
> protocol designers will think carefully enough to consult it effectively
> is a pipedream?

It sounds reasonable to me that some protocol designers could think
clearly about round-trips, forward-secrecy, identity-hiding,
pre-knowledge of keys, etc, and then map that to one of several solid
protocols.

Trevor


More information about the Noise mailing list