Cyphrme / Coze

Coze is a cryptographic JSON messaging specification.
https://cyphr.me/coze
BSD 3-Clause "New" or "Revised" License
106 stars 3 forks source link

implement kyber (liboqs) ciphers for Coze #23

Closed GonzRon closed 3 months ago

GonzRon commented 1 year ago

post quantum crypto ftw?

zamicol commented 1 year ago

Supporting quantum-safe cryptographic signing algorithms is a good idea.

I should probably get document written up on what supporting a new signing algorithm entails. Some aspects on the top of my head:

  1. Implementations of the primitives should be production ready for Coze. CozeX is the place for not-production ready implementations. (For example, liboqs states that it is not production ready)
  2. The primitives should be implemented in CozeX first, and then after testing/adoption be moved into Coze.
  3. The Go version should have a pure Go implementation of algorithm primitives. Similarly, a C implementation of Coze should use the C implementation. (The only new dependencies Go Coze should have is for algorithm primitives.)
  4. Signing algorithms need to specify a partner hashing algorithm. SPHINCS specifies hashing algorithms (The SHA2 and SHAKE of corresponding size). I'm not sure if there's a standard choice for hashing algorithm for Dilithium2, Dilithium3, Dilithium5, although they use SHAKE and SHA3. It appears Falcon is using SHAKE-256.

I'm not sure if Coze is currently a good fit for Kyber as it is a key encapsulation mechanism (KEM) and not a signature scheme.

zamicol commented 3 months ago

I'm going to close this issue for now, but in the future there should be a larger discussion around Post-Quantum.

zamicol commented 3 months ago

Post-quantum discussion is moved to here:
https://github.com/Cyphrme/CozeX/issues/1