Description
Problem Description
As it is right now, sage.crypto
does not have too many advanced features especially outside symmetric cryptanalysis. It would be great to improve on that.
Proposed Solution
I propose to include implementation of popular and basic cryptography primitives/schemes in that directory. It can serve as a reference implementation, and also help cryptographers prototype new advanced protocols easier.
For basic primitives, there are two directions. One direction is the "structural" side, for example creating classes for encryption schemes, OT, commitment schemes and others. The other direction is the "implementation" side, for example implementing a basic scheme using those classes.
Take encryption schemes as a concrete example. A class for a public key encryption scheme would have methods like .generate_key
, .encrypt(msg, pk)
, .decrypt(msg, sk)
. An implementation can simply be wrapping around AES.
What do everyone think? Any strong opinion on whether to include this or not?