Commit graph

29 commits

Author SHA1 Message Date
Miguel Oliveira db4c272aea
Add PRAC-based twofold multiplication 2022-04-08 11:56:03 -03:00
Miguel Oliveira a57c5e1ded
Unroll mp.lua operations and add others for PRAC 2022-04-06 13:59:55 -03:00
Miguel Oliveira 5290be7c75
Put Fq arithmetic internals in a separate module 2022-04-05 17:28:50 -03:00
Miguel Oliveira f53bb2ec6a
Bring back Fp negation 2022-04-05 16:32:09 -03:00
Miguel Oliveira 4cf7c2e989
Replace ✕ with × 2022-04-04 23:33:54 -03:00
Miguel Oliveira 2fe2a37ca3
Pack Curve25519 points into tables 2022-03-31 00:54:44 -03:00
Miguel Oliveira bd832f1a23
Document Curve25519 2022-03-30 21:52:52 -03:00
Miguel Oliveira d983042092
Document Edwards25519 2022-03-30 21:40:40 -03:00
Miguel Oliveira 9a5f8b37ea
Move curve point arithmetic into their own modules 2022-03-30 21:17:33 -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 671087dd0e
Move internal module notice into long description 2022-03-05 13:43:19 -03:00
Miguel Oliveira fc5a35c404
Tag internal modules as internal 2022-03-05 13:20:25 -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 ed8f66070f
Add masking docs 2022-03-04 13:30:46 -03:00
Miguel Oliveira 206f8474ff
Separate masked Fq multiply from unwrap 2022-03-04 13:19:51 -03:00
Miguel Oliveira 4c52aa8774
Improve Ed25519c masking 2022-03-04 12:31:51 -03:00
Miguel Oliveira d3f04036c7
Split Fq masking internals 2022-03-04 12:20:10 -03:00
Miguel Oliveira 8335ddc81c
Split Ed25519 internals 2022-03-04 11:46:26 -03:00
Miguel Oliveira 8926bda1bb
Remove Fq inversion 2022-03-03 16:17:29 -03:00
Miguel Oliveira 292663b4a5
Update docs 2022-03-03 16:15:57 -03:00
Miguel Oliveira c996452b07
Update docs 2022-03-02 19:46:20 -03:00
Miguel Oliveira 993ddb63a0
Update docs 2022-03-02 17:36:59 -03:00
Miguel Oliveira e0fd019b97
Switch to older Fp code 2022-03-02 17:29:26 -03:00
Miguel Oliveira 59647d1a96
Move clamped Fq decoding into fq.lua 2022-03-02 15:18:28 -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 ccb0d8cea6
Move internal modules into another directory 2022-03-01 20:43:53 -03:00