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

add alternative Ed25519 switching #241

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

mfourne
Copy link

@mfourne mfourne commented Mar 23, 2020

As discussed with Mikhail last year on cabal-devel, I now would like to present a minimal patch to enable pure(r) Haskell cryptographic signatures. He expressed possible acceptance of a default-off compile-time option, which is herein included with minimal needed changes elsewhere. The new dependency provides almost the same API as the currently default ed25519 package, but uses another library underneath.
I have adressed some prior complaints to my optional dependency:
My library is now much smaller in dependency footprint. It is also undergoing academic review. Better documentation is still missing, though.

@Mikolaj
Copy link
Member

Mikolaj commented Jan 12, 2022

@gbaz: would you perhaps be able to review this?

@Mikolaj
Copy link
Member

Mikolaj commented Jan 12, 2022

@mfourne: how are you? how is the academic review going? I'd love to rescue this PR, but I'm completely alien to the topic. Could you provide any more documentation? Suggest a reviewer? E.g., is Mikhail on github?

@mfourne
Copy link
Author

mfourne commented Jan 13, 2022

Hi, doing lots of work academically around this topic, currently building a verifier for binaries to check if the cryptographic code really fulfills the Constant Time formal security criterion, which I previously did by hand for my own code. One PhD student started working on adding refinement types to prove my code CT, but I don't know how far this progressed.
In general, I think it would be nice to switch away from embedded C code in the implementation of our cryptographic primitives and switch to (formally proven or provable) implementations. My code does not fulfill this at the moment, but I am exploring this and related topics in my research. Maybe via fiat-crypto writing low-level Haskell code, maybe via Jasmin, I can't finally say - this area is very active right now.
At the moment, my published code is not formally proven correct (but fulfills the KATs), not formally proven CT, not as fast and my documentation is still lacking (smallest hurdle, but still relevant).
I would be fine to include the option to switch implementations (the only thing this PR does) or let it rest until my own code is a general replacement and decide upon a way forward then.

@Mikolaj
Copy link
Member

Mikolaj commented Jan 13, 2022

Thank you very much for the details. In that case, perhaps let's keep that PR open, as a sign that exciting things are brewing in this development and research domain. Keep at it! :)

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

Successfully merging this pull request may close these issues.

2 participants