[noise] Implementing HFS support for Noise

Daan Sprenkels hello at dsprenkels.com
Thu Aug 29 03:06:37 PDT 2019


Hey all,

As David already mentioned yesterday, I have spent some efforts on
implementing HFS support for the snow implementation in Rust this week
[1], based on the spec from [2]. Currently, there is a fully functional
proof-of-concept.

I also have a a couple points of discussion on which I hope to get some
general feedback.


## HFS patterns

Trevor's HFS spec makes no mention of how to specify the KEM that is to
be used. There seem to be a couple of straightforward options:

1. Add the name into the pattern after the DH-scheme seperated with a
   `+`, for example: `Noise_XXhfs_25519+Kyber1024_AESGCM_SHA256`. This
   was already proposed by [3].
2. Make this library-dependent (i.e. view this in the same way as
   loading static keys).

I feel there is a general preference to the first one. What do you
think? Should we standardize the first format?


## Selecting post-quantum KEMs

For snow, I have used Kyber1024, by request of David, (and also because
of personal affiliation). However, to provide the users with some
choice, we should maybe also decide on a second one to "unofficially"
standardize. In any case, I agree to update to the winners from the NIST
competition once that's finished. Until then, should we implement a
second one (and which)?

---

I hope that I'm not overestimating the interest for post-quantum noise.
I know that the Katzenpost project is interested, but do you guys know
if there are any other users that want this?


Regards,
Daan Sprenkels


[1]: https://github.com/mcginty/snow/pull/61
[2]:
https://github.com/noiseprotocol/noise_hfs_spec/blob/master/output/noise_hfs.pdf
[3]:
https://github.com/noiseprotocol/noise_spec/blob/41d478d3dd97d77a6695f4d6cf6283e2830e9ca6/extensions/ext_hybrid_forward_secrecy.md


More information about the Noise mailing list