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

Use NIST PQC Round 4 implementation of Classic McEliece #91

Closed
2 tasks
Tracked by #145 ...
stv0g opened this issue Jun 14, 2023 · 6 comments
Closed
2 tasks
Tracked by #145 ...

Use NIST PQC Round 4 implementation of Classic McEliece #91

stv0g opened this issue Jun 14, 2023 · 6 comments
Labels
client-security Security of the Rust Rosenpass implementation enhancement New feature or request protocol Protocol development and implementation

Comments

@stv0g
Copy link
Contributor

stv0g commented Jun 14, 2023

Blockers:

  • OQS Version 9 ((Milestone)[https://github.com/open-quantum-safe/liboqs/milestone/22], (OQS 9 RC 1)[https://github.com/open-quantum-safe/liboqs/releases/tag/0.9.0-rc1])
  • oqs-sys OQS 9 Support Bump PR 1

Cloudflare's CIRCL McEliece implementation implements the KEM based on the NIST PQC round 4 specification.

Round 4 has removed the plaintext confirmation (pc) from the ciphertext and as a result uses 32-byte shorted secret keys which are incompatible with the liboqs implementation which is based on the Round 3 specification (or Round 2 which rosenpass is actually using).

The website of Classic McEliece also mentioned this explicitly in their implementations section:

The older "pc" variants have 32 extra bytes in ciphertexts.

The Rosenpass whitepaper does not specify which version of the KEM must be used.

The Rust implementation of Rosenpass uses the even older Round 2 implementation provided by liboqs.

I propose to switch to the updated Round 4 version.

See also

@stv0g
Copy link
Contributor Author

stv0g commented Jun 16, 2023

@koraa Should we maybe create a v1 milestone in GitHub to track the issues which need to be resolved before v1?

If you agree, I would add this issue to this milestone.

@koraa

This comment was marked as off-topic.

@stv0g stv0g changed the title Check if Classic McEliece implementation conforms to NIST PQC Round 3 or 4 Use NIST PQC Round 4 implementation of Classic McEliece Aug 1, 2023
This was referenced Oct 2, 2023
koraa added a commit that referenced this issue Oct 3, 2023
Issue: #91 (#91)

Add version info to whitepaper

This uses an release candidate of liboqs and a patched version of the
oqs-sys rust crate. We should wait until a proper release is done.
@koraa
Copy link
Member

koraa commented Oct 16, 2023

https://crates.io/crates/pqcrypto

This might be a good alternative.

koraa added a commit that referenced this issue Nov 16, 2023
Issue: #91 (#91)

Add version info to whitepaper

This uses an release candidate of liboqs and a patched version of the
oqs-sys rust crate. We should wait until a proper release is done.
@clausecker
Copy link

Note that liboqs has switched to the round 4 specification with oqs-sys v0.9.0. Perhaps you could bump the dependency?

As a bonus, this would also permit unbundling liboqs as per issue #19.

@prabhpreet
Copy link
Contributor

#266 or #292 will close this in the implementation

@prabhpreet
Copy link
Contributor

Closed by #292

@prabhpreet prabhpreet added enhancement New feature or request protocol Protocol development and implementation client-security Security of the Rust Rosenpass implementation labels May 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client-security Security of the Rust Rosenpass implementation enhancement New feature or request protocol Protocol development and implementation
Projects
None yet
Development

No branches or pull requests

4 participants