[noise] post-handshake authentication

Trevor Perrin trevp at trevp.net
Thu Jun 21 08:53:04 PDT 2018


On Thu, Jun 21, 2018 at 8:52 AM, David Wong <davidwong.crypto at gmail.com> wrote:
>> I don't quite follow the protocol.  But what you're asking for seems
>> similar to the ASK / Additional Symmetric Keys mechanism that we're
>> discussing in the "Resumption PSKs" thread?
>
> It's like Signal's TOFU + fingerprint authentication except that here
> you just can't go on with the session if you don't verify
> fingerprints.

This isn't all that similar to Signal - Signal's safety number is a
concatenation of fingerprints for long-term public keys, but here
there are no static public keys.


> I didn't want peers to cheat their way and activate the session when
> they haven't retrieved the fingerprint out of band. With the current
> ASK mechanism a peer could generate the fingerprint and pass it back
> to the implementation and it would work. Note that this doesn't have
> to be a problem solved by the protocol, the implementation could add
> an initiator/responder byte to the ASK. I'll give an example since
> it's always more easy to follow:
>
> * initiator does NN() with responder
> * at the end of the handshake the CipherStates are locked
> * initiator generates an "authentication string" or "fingerprint" with
> exportSessionAuthenticationString()
> * it returns a byte string [1 | ...] (where ... represents a 32-byte secret)


You're trying to enforce some authentication check, but it's not clear
whether this is just a calling sequence you want the library to
enforce on it's user, or whether this needs to affect the underlying
crypto.

Since the 2 parties have the same symmetric keys and hash values, I'm
not sure it makes sense to modify the underlying crypto to require one
party to provide a symmetric crypto-based value to the other, since
both parties can compute the same things with their symmetric keys?

If you just want 2 different representations of the handshake hash,
you could hash it with "1" or "0" prepended, something like that.

But it's a little unclear to me whether you want a secret value (like
from ASK) or just a public authentication value like a public-key
fingerprint, which could be derived from the handshake hash without
using ASK at all.


Trevor


More information about the Noise mailing list