Commit graph

13 commits

Author SHA1 Message Date
Miguel Oliveira bd832f1a23
Document Curve25519 2022-03-30 21:52:52 -03:00
Miguel Oliveira 9a5f8b37ea
Move curve point arithmetic into their own modules 2022-03-30 21:17:33 -03:00
Miguel Oliveira 4491ac4029
Save a multiplication on X25519 ladder step over G 2022-03-24 18:17:07 -03:00
Miguel Oliveira c180d31001
Switch Fp to rounding-based carrying
This improves performance while also simplifying analysis. Ed25519
doubling needs more carrying, but the speedup is worth it.

The simpler Fp model is easier to reason about, but it introduces an
unsound bit that needs to be handwaved away with a comment. Range
checking has not yet been performed.
2022-03-24 16:36:10 -03:00
Miguel Oliveira 474d62d082
Update docs 2022-03-05 12:23:51 -03:00
Miguel Oliveira 54b821c091
Give up on masking for now
X25519c can be attacked by replying several times with invalid data.
This is hard to defend against in the API level without denying service
and using some hard-to-understand semantics.

Masked primitives are gone for now, some countermeasures have been moved
into their respective "regular" impls. I don't think that it's worth it
to care that much about side channels in CC. I haven't seen or managed
to mount any practical attacks myself. The further move away from Cobalt
will probably make them even harder to mount.
2022-03-05 12:03:08 -03:00
Miguel Oliveira f605de3f0d
Rework ladders for X25519 and X25519c 2022-03-02 14:59:50 -03:00
Miguel Oliveira 501e81a36a
Add masked X25519 2022-03-02 13:51:51 -03:00
Miguel Oliveira eae7c91453
Reformat
Fair enough.
2022-03-01 20:51:18 -03:00
Miguel Oliveira dba5fcc1ab
Split X25519 internals 2022-03-01 20:46:44 -03:00
Miguel Oliveira 981cd0dec9
Stop bringing Fp functions into scope
Performance overhead is probably negligible (except for minified size).
Might change this later.
2022-03-01 20:36:55 -03:00
Miguel Oliveira 03c2db100f
Fix module imports 2022-03-01 20:27:22 -03:00
Miguel Oliveira 3ea90b786b
Initial commit 2022-03-01 20:08:55 -03:00