lambdaclass / concrete

Concrete is a simple programming language specifically crafted for creating highly scalable systems that are reliable, efficient, and easy to maintain.
Apache License 2.0
123 stars 11 forks source link

Required tools for secure for secure cryptography #44

Open MauroToscano opened 8 months ago

MauroToscano commented 8 months ago

Some functions should be constant time for cryptography to hold.

This is the minimal amount of work we would need to have some some secure cryptrography:

This would be nice to have in a later version:

Oppen commented 8 months ago

I think it would require a new backend so LLVM doesn't break stuff behind our back. Or at least an extra late stage checking the asm?

MauroToscano commented 8 months ago

Checking the ASM of a function is really needed. It's the only way to verify everything is alright, even if everything is supposed to be working as intended.

Oppen commented 8 months ago

I meant an automated one. Even if you need to manually check the output (and all compilers should be able to dump the asm anyway), early failures save you time.

unbalancedparentheses commented 8 months ago

Let's port https://github.com/dalek-cryptography/subtle/blob/main/src/lib.rs and put it in the stdlib