[noise] Reworking PSK usage
Jason A. Donenfeld
Jason at zx2c4.com
Tue May 2 12:56:58 PDT 2017
On May 2, 2017 21:29, "Trevor Perrin" <trevp at trevp.net> wrote:
MixKeyAndHash(psk):
ck, k, temp = HKDF(ck, psk)
MixHash(temp)
Actually, my suggestion and what I placed in that pull request is:
MixKeyAndHash(psk):
ck, temp, k = HKDF(ck, psk)
MixHash(temp)
The reason is that there are cases in which k is overwritten again without
being used. In that case implementations can optimize by not having to
compute that last hmac. Functional languages like Haskell get this for
free. C++ implementations can get this for free with smart use of
constexpr. C implementations get this for free with careful use of gcc
constant propagation. The difference is trivial from a crypto point of view
but makes a nice difference in implementations.
We haven't broken compatibility since 2015, so this would require
updates for existing libraries. That's unfortunate but this does seem
like a more thoughtful and flexible approach, which would see
real-world use. I'd like to hear what the library developers think.
Luckily, I don't think PSK had gotten much use outside of WireGuard,
which is willing to change.
:)
Trevor
_______________________________________________
Noise mailing list
Noise at moderncrypto.org
https://moderncrypto.org/mailman/listinfo/noise
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://moderncrypto.org/mail-archive/noise/attachments/20170502/98754b12/attachment.html>
More information about the Noise
mailing list