Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement PQ Noise from the paper #59

Open
david415 opened this issue Sep 9, 2024 · 4 comments
Open

implement PQ Noise from the paper #59

david415 opened this issue Sep 9, 2024 · 4 comments

Comments

@david415
Copy link

david415 commented Sep 9, 2024

Someone should get paid to implement PQ Noise in Rust.

The paper is excellent. PQ Noise patterns are algebraic transformations from the original Noise patterns such that
the ECDH is replaced with KEM encap/decap. And it comes with a golang reference implementation:

PQ noise paper:
https://eprint.iacr.org/2022/539

Golang reference:
https://gitlab.com/yawning/nyquist/-/tree/experimental/pqnoise

@jmlepisto
Copy link

Hi @david415!

I combined the best parts from this crate and Snow and just released the first version of Clatter, a crate which includes support for PQ extensions presented in the paper.

It took quite a lot of breaking changes to get there so I decided to develop a new crate instead of trying to add support in this one or snow. With some serious effort I believe the changes could be backported here but not sure if it is worth it.

@david415
Copy link
Author

Hi @david415!

I combined the best parts from this crate and Snow and just released the first version of Clatter, a crate which includes support for PQ extensions presented in the paper.

It took quite a lot of breaking changes to get there so I decided to develop a new crate instead of trying to add support in this one or snow. With some serious effort I believe the changes could be backported here but not sure if it is worth it.

Clatter for the win!!!

Dear @jmlepisto

I am very excited about your Clatter crate! Did you get paid to do this work?
Open source software is seriously undervalued by the tech industries and what you have done is extremely important
work. If you didn't get paid, surely there will be opportunities to get paid by applying this crate to various open source software projects.

I feel very strongly we should all be using hybrid post quantum cryptographic protocols and that nearly all of the protocols using Noise should really switch to using PQ Noise. However I am not the PQ crypto police and if others don't want to join our party then so be it.

Have you tested that Clatter can interoperate with Yawning's Nyquist's PQ experimental branch?
I maintain a fork of Nyquist, here: https://github.com/katzenpost/nyquist
The advantage of my fork of Nyquist is that it uses the KEM interfaces (similar to rust trait) from my
HPQC (hybrid post quantum cryptography) library ---> https://github.com/katzenpost/hpqc
which let's us compose our own hybrid KEMs.

Beyond that, the Katzenpost decryption mix network uses PQ Noise as the transport protocol between network nodes instead of something like TLS. Some of the other modern mixnet projects are either using TLS or Noise. These mix network project are currently being funded by extremely wealthy venture capitalists because the mix network is part of a larger blockchain project which attracts such investors.

Anyway, Katzenpost is currently the only software project in the entire world that uses PQ Noise as far as I know. Pray tell, @jmlepisto what will you use PQ Noise for? Do you have any interest in mixnets and freeing humanity from the tyranny of traffic analysis?

Years ago I wrote a rust crate that used snow crate to talk to a Katzenpost mixnet... but that was a long time ago and we've now been using PQ Noise for a couple of years now.... so I'll need to update this to use clatter if I want to use rust to talk to a katzenpost mixnet:
https://github.com/sphinx-cryptography/mix_link

@jmlepisto
Copy link

@david415 thanks for your interest, cool to hear from a fellow PQ enthusiast!

I do Rust and cryptography professionally but Clatter is a personal project and I did not receive any funding for it. While doing a technology study for a client a while back I couldn't find any PQ protocol frameworks that would be flexible enough and work even on most obscure targets (no_std), so I decided to give back to the community and develop Clatter. Perhaps the same client will adopt Clatter as part of their embedded device swarm communications, but that remains to be seen :)

I'd really love to see the world stepping towards a quantum-secure future and if Clatter plays a part in that I'm willing to improve and maintain it for years to come. I'm familiar with mixnets only on a theoretical basis but am interested to dive a bit deeper.

Next thing on my plate is the Clatter-Nyquist interoperability testing (..and related fixes if needed). I'm thinking about opening a thread for development updates etc. in the Clatter discussion section so that it'll be easy to follow what's going on.

@david415
Copy link
Author

david415 commented Jan 1, 2025

@jmlepisto cool. keep up the good work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants