Patched source for Aeneas/Charon formal verification transpilation
Find a file
Tony Arcieri 5b7082bbc8
curve: use subtle::BlackBox optimization barrier (#662)
Replaces the security mitigation added in #659 and #661 for
masking-related timing variability which used an inline `black_box`
using the recently added `subtle::BlackBox` newtype (see
dalek-cryptography/subtle#123)

Internally `BlackBox` uses a volatile read by default (i.e. same
strategy which was used before) or when the `core_hint_black_box`
feature of `subtle` is enabled, it uses `core::hint::black_box`
(whose documentation was recently updated to reflect the nuances of
potential cryptographic use, see rust-lang/rust#126703)

This PR goes ahead and uses `BlackBox` for both `mask` and
`underflow_mask` where previously it was only used on `underflow_mask`.
The general pattern of bitwise masking inside a loop seems worrisome for
the optimizer potentially inserting branches in the future.

Below are godbolt inspections of the generated assembly, which are free
of the `jns` instructions originally spotted in #659/#661:

- 32-bit (read_volatile): https://godbolt.org/z/TKo9fqza4
- 32-bit (hint::black_box): https://godbolt.org/z/caoMxYbET
- 64-bit (read_volatile): https://godbolt.org/z/PM6zKjj1f
- 64-bit (hint::black_box): https://godbolt.org/z/nseaPvdWv
2024-06-24 20:13:54 +02:00
.github/workflows CI: fix minimal-versions resolution (#593) 2023-10-31 12:04:34 -04:00
curve25519-dalek curve: use subtle::BlackBox optimization barrier (#662) 2024-06-24 20:13:54 +02:00
curve25519-dalek-derive Updates license field to valid SPDX format (#647) 2024-06-03 14:30:13 -06:00
docs/assets Move CI & assets into workspace 2023-06-28 08:59:51 +00:00
ed25519-dalek Fix a minor typo in signing.rs (#649) 2024-04-13 19:37:33 -06:00
x25519-dalek Mitigate check-cfg until MSRV 1.77 (#652) 2024-05-09 07:24:16 -06:00
.gitignore Clean up backend features and vendor curve25519_dalek_derive (#531) 2023-06-22 01:46:27 -04:00
Cargo.toml Re-organize Cargo manifests to workspace 2023-06-28 09:38:06 +00:00
CONTRIBUTING.md Add new workspace README and CONTRIBUTING 2023-06-28 09:40:52 +00:00
README.md README.md: remove broken image (#595) 2023-11-01 13:33:43 -04:00

dalek-cryptography logo: a dalek with edwards curves as sparkles coming out of its radar-schnozzley blaster thingies

Dalek elliptic curve cryptography

This repo contains pure-Rust crates for elliptic curve cryptography:

Crate Description Crates.io Docs CI
curve25519dalek A library for arithmetic over the Curve25519 and Ristretto elliptic curves and their associated scalars. CI
ed25519dalek An implementation of the EdDSA digital signature scheme over Curve25519. CI
x25519dalek An implementation of elliptic curve Diffie-Hellman key exchange over Curve25519. CI

There is also the curve25519-dalek-derive crate, which is just a helper crate with some macros that make curve25519-dalek easier to write.

Contributing

Please see CONTRIBUTING.md.

Code of Conduct

We follow the Rust Code of Conduct, with the following additional clauses:

  • We respect the rights to privacy and anonymity for contributors and people in the community. If someone wishes to contribute under a pseudonym different to their primary identity, that wish is to be respected by all contributors.