mupq / pqm4

Post-quantum crypto library for the ARM Cortex-M4
284 stars 72 forks source link

Add UOV #300

Closed mkannwischer closed 11 months ago

mkannwischer commented 11 months ago

https://github.com/mupq/mupq/pull/118 https://github.com/mupq/pqm4/issues/296

This add the UOV implementations from

The M4 implementation is from

Only ov-Ip fits within 640 KB of RAM:

Note that ov-Is does have an M4 implementation, but it is storing keys in flash which is not supported by mupq/pqm4.

Two comments:

rpls commented 11 months ago

Since this also uses the possibly problematic util_prng.c from mupq/mupq#118, I'll way. But otherwise, this seems ok. Maybe worth a general discussion: Should PRs including new schemes also include performance measurements? Right now it's somewhat superfluous, since a lot of schemes will be added and at some point we'll run a large batch of measurements. And for PRs from third parties, we should test ourselves anyway :-)

But otherwise it looks fine, I'll merge this together with the corresponding mupq/mupq#118, once that's through.

mkannwischer commented 11 months ago

You are right. Let's not add benchmarking results for now to keep it easier. Still important to make sure they run sucesssfully (-i 1) to make sure everything is fine.

Do you have any suggestions regarding util_prng.c? I don't really have any ideas that are not just as terrible as what we have now.

rpls commented 11 months ago

Do you have any suggestions regarding util_prng.c? I don't really have any ideas that are not just as terrible as what we have now.

I think more schemes will come at some point, that do sampling/rng with reduced round primitives, or some that make use of calculating multiple (possibly unrelated) blocks. We can't really support them all, so my approach would be the same as you did: Add the PROFILE_HASHING ifdefs where relevant and leave them as is for now. Once we have an overview, we can push for a cleaner solution. Right now I'd say we concentrate on benchmarking.

So for now, just fix the bug I noted in the review in mupq/mupq#118 and I'll merge it.

mkannwischer commented 11 months ago

I rebased everything on top of #304 and included the much cleaner AES128CTR. I think this is ready to be merged now.

I also updated the skiplists with the new stack benchmarks.