CIRCL
kyber-k2so
CIRCL | kyber-k2so | |
---|---|---|
6 | 13 | |
1,182 | 83 | |
1.9% | - | |
8.0 | 6.8 | |
7 days ago | 4 months ago | |
Go | Go | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CIRCL
-
Lattice Asymetric Encryption
- https://github.com/cloudflare/circl
- Circl: Cloudflare Interoperable Reusable Cryptographic Library
-
Is the reference implementation of Classic McEliece in the NIST submission the only good source available for developers out there? General post-quantum questions.
I'm not sure if portability, speed, or general security is on require level here, but Cloudflare's CIRCL library is working on adding support for McEliece, you can find the implementation PR at https://github.com/cloudflare/circl/pull/378
- NIST post-quantum picks Kyber and Dilithium in Go
- NIST announces PQC-algoritms to be standardized
-
Hertzbleed Attack
The attack in question was only tested on SIKE, so it seems logical to start targeted disclosure on the community using and developing it, while using the general disclosures to target the broader cryptographic community.
Both Cloudflare and Microsoft are one of the few companies that have put significant investments into developing SIKE for post-quantum cryptography. Microsoft has a SIKE research team, and Cloudflare has been exploring SIKE for post-quantum TLS for years.
Both companies also maintain the key open-source implementations of SIKE [1][2], and Microsoft is spearheading the effort to standardize SIKE through NIST. Most open source cryptographic libraries don't implement SIKE.
[1]: https://github.com/cloudflare/circl
kyber-k2so
-
A quick post on Chen's algorithm
It seems like the post-quantum algorithm that Signal selected [0] involves lattices [1] somehow:
> Kyber is an IND-CCA2-secure key encapsulation mechanism (KEM), whose security is based on the hardness of solving the learning-with-errors (LWE) problem over module lattices.
Curious to see if Chen's work will eventually lead to Signal selecting a different algorithm.
[0]: https://signal.org/blog/pqxdh/
[1]: https://pq-crystals.org/kyber/
- Kyber
-
iMessage with PQ3 Cryptographic Protocol
This is pretty fascinating. For easier reading, the Signal blog post [0] they link to is great.
Both Signal and Apple went with CRYSTALS-Kyber [1] as their post-quantum algorithm. If you're interested in the math, and maybe learned at some point about how classic public key cryptography is built on the idea that it's easy to multiply two primes, but hard to factor them, and how this (or other math problems) can be used as a one-way function to make encryption hard to break, the hard math problem that backs Kyber is the "learning-with-errors" [2] problem.
[0] https://signal.org/blog/pqxdh/
[1] https://pq-crystals.org/kyber/
[2] https://en.wikipedia.org/wiki/Learning_with_errors
-
Post-Quantum Diffie-Hellman?
NIST has chosen to standardize Kyber, which is a Key Encapsulation Mechanism (KEM) rather than a key exchange mechanism like Diffie-Hellman:
-
Signal has begun it's transition towards post-quantum key exchanges
However looks like this wasn't good enough, as the team has merged some code into the Signal protocol's library, that uses the latest NIST standard Crystals-Kyber post-quantum key exchange. I'm not sure if it's a hybrid scheme with X25519, or if it's replacing it, but damn, gotta love how the project not only innovates in terms of secure messaging protocols, but slaps the latest and greatest on top of best practice.
-
Lattice Asymetric Encryption
Kyber is one of the finalists for PQC and has an open source impl: https://pq-crystals.org/kyber/
-
Open-source file encryption software written in Go.
I’d recommend looking into https://github.com/symbolicsoft/kyber-k2so -> for post quantum safety. But I’d highly recommend looking at this: https://github.com/open-quantum-safe/liboqs-go -> this library is significantly more advanced but allows for hybrid key generation so you can have post-quantum security while being at least as secure as more established cryptography schemes like Ed25519. But at very least you should move off of RSA and research current cryptography standards for file encryption.
-
What's your opinion on the future of PKI ?
No, none of that is true. Kyber, one of the approved encryption schemes, actually has a smaller key size than RSA and is pretty fast, around 10,000 encryptions per second on a commercial CPU. Just because it is quantum resistant doesn't necessarily mean it is "more complicated", it is just different. We have had the idea for lattice-based encryption for over 20 years now, it is not new stuff just finally being put to use due to the impending threat of quantum computers.
- NIST announces preliminary winners of post-quantum competition
-
NIST Announces First Four Quantum-Resistant Cryptographic Algorithms
For reference, the Kyber algorithm selected here mentions on their website that, very conservatively, the Kyber-768 parameter set gives 128 bits of security, or roughly on the order of 31 undecillion operations to break.
What are some alternatives?
kyber
tendermint - ⟁ Tendermint Core (BFT Consensus) in Go
liboqs-go - Go bindings for liboqs
yubisigner - YubiSigner provides a convenient way to sign and securely verify file signatures with Yubico YubiKey, utilizing an organization's PKI infrastructure.
falcon.py - A python implementation of the signature scheme Falcon
falcon
curve25519-voi - High-performance Curve25519/ristretto255 for Go.
kyberJCE - Pure Java implementation of the Kyber (version 3) post-quantum IND-CCA2 KEM.
PQCrypto-SIKE - This software is part of "Supersingular Isogeny Key Encapsulation", a submission to the NIST Post-Quantum Standardization project.
argon2pw - Argon2 password hashing package for go with constant time hash comparison