Are there examples (in code, or a blog post / writeup) of using Noise and Signal together?

Here is a link to Noise.

For example, using the Double Ratchet per each message to achieve forward secrecy, but leveraging Noise as a foundation for its patterns of initial key exchange. Both Noise and Signal are well-studied and well-known, and so building upon these might be preferred over attempting to craft a brand new protocol.

Whether it's considered as (a) an extension of the Noise protocol, (b) passing Noise messages that are already "wrapped" (as an onion, such as Signal within Noise), or (c) constantly re-running Noise exchanges, I'm wondering if there is a project that has integrated features from both.

For (a), I couldn't find an obvious proposed extension spec within the Noise protocol wiki page that addresses ratcheting / forward secrecy per each (synchronous) message, so perhaps it's normally assumed that forward secrecy is achieved per "session" - by running a fresh key exchange each time. However to attempt to achieve that property per message might come with compromises such as round trip time (in contrast to continuous asymmteric ratcheting).

For (b), perhaps this would be a way to use both (1) Noise and (2) Signal / Double Ratchet without fundamentally modifying the way that these underlying protocols work. Essentially those protocols could be used as is, in layers. As long as the key material in use by each is independent / non-correlated, then one could benefit from the analysis and security properties already studied for Noise and Signal. However, I haven't yet found an example of this kind of use but that doesn't mean it's not out there.

For (c), that's more of a thought experiment, since there would be extra round trip overhead per message for this approach. Although by only using Noise on its own, some other positive aspects of Signal/X3DH/Double ratchet might be missed.

Any examples of using both protocols together, or cooperatively, is welcome. Or a comment on (b) or the overall benefit / approach of adding per-message forward secrecy on top of a Noise-established channel.

  • $\begingroup$ Can you provide some links? Especially for "Noise". $\endgroup$
    – kodlu
    Nov 28, 2022 at 17:37
  • 1
    $\begingroup$ @kodlu Here is the Noise Protocol spec. Noise Explorer is also useful for understanding the patterns. $\endgroup$ Nov 28, 2022 at 19:02
  • $\begingroup$ Noise as the "issue" that symmetric keys are used within the protocol, so you don't get a nice separation of key exchange and secure channels. So, I doubt you get composition for "free". On the other hand, Noise was analyzed in the flexible authenticated and confidential channels model. So, I would be surprised if that composition was unsound. $\endgroup$ Nov 29, 2022 at 8:46


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.