Commit Graph

7914 Commits

Author SHA1 Message Date
Gabriela Moldovan 17d965e894
keymgr: Do not expect x25519 keys to be stored as ed25519 ssh keys.
Previously, the Arti key store would store x25519 secret keys as ed25519
OpenSSH keys, which it would convert to x25519 upon loading (using the
conversion function added in !1297 (merged)). This approach isn't good
enough though: most people will probably want to bring their existing
x25519 keys, and in order to store those in OpenSSH format, we'd need
convert them to ed25519, which is impossible (because the secret part of
an x25519 key contains a SHA512'd secret, whereas the corresponding,
"un-expanded", ed25519 secret key contains the secret itself rather than
the SHA).

Now that `ssh-key` has support for ssh keys with [custom algorithm
names], we can store x25519 in OpenSSH format directly. This commit
changes the storage format used by the keymgr for x25519 client auth
keys (from ed25519-ssh to our own custom key type with an algorithm name
of `"x25519@torproject.org"`).

Closes #936

[custom algorithm names]: https://github.com/RustCrypto/SSH/pull/136
2023-08-16 10:43:28 +01:00
Gabriela Moldovan b2bcbaa708
keymgr: Bump ssh-key to 0.6.0.
This brings in the changes from #936.
2023-08-16 10:43:21 +01:00
Nick Mathewson e21a3b3151 Merge branch 'bump-backtrace' into 'main'
tor-error, arti: Bump backtrace to 0.3.68.

See merge request tpo/core/arti!1509
2023-08-15 17:58:28 +00:00
Gabriela Moldovan 31645f4f37
tor-error, arti: Bump backtrace to 0.3.68.
Previously we were using backtrace 0.3.39, which has a [bug] that causes
it to segault in some circumstances. I experienced this bug while trying
to fix the minimal-versions build in !1508.

[bug]: https://github.com/rust-lang/backtrace-rs/issues/267
2023-08-15 16:34:31 +01:00
Nick Mathewson 5d02136ece Merge branch 'cargo_audit_2022_0093' into 'main'
cargo_audit: Add an exception for RUSTSEC-2022-0093.

See merge request tpo/core/arti!1506
2023-08-14 19:20:43 +00:00
Nick Mathewson 118ed81d82 Merge branch 'establish_intro_v2' into 'main'
Implement circuit binding and start on intro-point establisher logic

Closes #953 and #993

See merge request tpo/core/arti!1472
2023-08-14 18:19:33 +00:00
Nick Mathewson 875de204e9 cargo_audit: Add an exception for RUSTSEC-2022-0093.
This is the API deficiency in ed25519-dalek v1 that allows you to
mismatch public and private keys, leading to a (fatal)
double-signing attack.  We have worked around this in our current
design, so it's appropriate to suppress this warning for now.
2023-08-14 14:15:15 -04:00
Nick Mathewson 603175b977 Start working on the backend for an IptEstablisher.
This should be enough now to establish real introduction points,
though there is still a lot of work to do.  Part of #976.

This has been rebased and edited to incorporate discussions from
!1465.
2023-08-14 13:57:49 -04:00
Nick Mathewson d46e638ff0 proto: Fix a type-complexity warning. 2023-08-14 13:15:40 -04:00
Nick Mathewson 65a0ac5512 proto: API to expose the `CircuitBinding` type.
Closes #993
2023-08-14 13:15:29 -04:00
Nick Mathewson 61513de6d0 proto: Take CircuitBinding one step forward into Reactor::add_hop. 2023-08-14 13:15:29 -04:00
Nick Mathewson 0ffa6eddf5 proto: Add (not-yet-exposed) code to remember and use KH values
These values are computed as part of the circuit extension
handshake, and are used as MAC keys to bind `ESTABLISH_INTRO`
messages to a particular circuit so that they can't be replayed.

Part of #993.
2023-08-14 13:15:29 -04:00
Nick Mathewson 926cc65a9e cell: make establish_intro accept impl<Into<HsMacKey>>
This allows us to allow passing in opaque HsMacKey objects,
rather than untyped byte slices.

Additionally, we now check both MAC and signature unconditionally,
to avoid the large timing side-channel.  The small timing
side-channel of combining booleans with `&` is considered safe.

Part of #993.
2023-08-14 13:15:00 -04:00
Nick Mathewson 0759fdf681 hscrypto: Expose hs_mac as a SimpleMac. 2023-08-14 13:15:00 -04:00
Nick Mathewson e7f803529f llcrypto: New SimpleMac trait
This will be useful in preference to the regular Mac trait for the
places where we need to pass a Mac key around, but we don't need to
support incremental operation.

Part of arti#993, where we want to expose a MAC object without
exposing sensitive data.
2023-08-14 13:15:00 -04:00
Nick Mathewson 4047236bd9 Wrap a long line in hscrypto/Cargo.toml. 2023-08-14 13:15:00 -04:00
Nick Mathewson fe5a8a0106 Merge branch 'readme_timeline' into 'main'
README: Note more details about upcoming milestones

See merge request tpo/core/arti!1471
2023-08-13 16:01:29 +00:00
gabi-250 3fdadcc750 Merge branch 'nogit' into 'main'
CI: Remove unneeded install of git in maint-checks

See merge request tpo/core/arti!1492
2023-08-09 16:46:54 +00:00
Ian Jackson 879a3e8acf CI: Remove unneeded install of git in maint-checks
This was added in 9357a8fd6b "ci: add shebang to the GitLab CI" as
part of !990 to the `maint-checks` job; but the actual additional
check was added to the `doc-features` job (by mistake, fixed in
!1490); and, that shebang check script doesn't need git anyway.
2023-08-09 17:16:58 +01:00
Ian Jackson 72eff516ac Merge branch 'shebang-ci' into 'main'
ci: move shebang check into proper CI test

See merge request tpo/core/arti!1490
2023-08-09 15:50:00 +00:00
Emil Engler 01e619d872
ci: move shebang check into proper CI test
Currently, the shebang check CI is not executed, as it would need to
fail then.

See !1489
2023-08-09 16:56:36 +02:00
gabi-250 af755b5b49 Merge branch 'relative-shebang-nodep' into 'main'
maint: use relative shebang in `maint/bump_nodep`

See merge request tpo/core/arti!1489
2023-08-09 13:24:26 +00:00
Ian Jackson 0001f520ca Merge branch 'chutney' into 'main'
Disable chutney test again

Closes #810

See merge request tpo/core/arti!1488
2023-08-09 13:20:39 +00:00
Ian Jackson bde9a25f06 Merge branch 'tor-proto-incoming-discard' into 'main'
tor-proto: Implement IncomingStream::discard()

See merge request tpo/core/arti!1484
2023-08-09 12:58:41 +00:00
Emil Engler e8cdc4c3d2
maint: use relative shebang in `maint/bump_nodep` 2023-08-09 14:33:01 +02:00
Ian Jackson 96e56ab73d Disable chutney test again 2023-08-09 13:32:07 +01:00
Gabriela Moldovan 6073a4f767
tor-proto: Make update_state() and discard() return Result<(), Bug>.
These functions only ever return `Bug` errors.
2023-08-09 13:07:35 +01:00
Ian Jackson 1a1abac2c8 Merge branch 'key-uses' into 'main'
key-management.md: Use scenarios

See merge request tpo/core/arti!1445
2023-08-09 10:59:46 +00:00
Ian Jackson 8838c6bfd2 Merge branch 'remove-keystore-fs-perm-variant' into 'main'
tor-error: Remove KeystoreFsPermissions variant.

See merge request tpo/core/arti!1487
2023-08-09 10:57:39 +00:00
Ian Jackson 17b78f6108 Merge branch 'with_coverage-no-list' into 'main'
maint: provide no list of grcov formats

See merge request tpo/core/arti!1482
2023-08-09 10:37:43 +00:00
Ian Jackson 65409b02d7 Merge branch 'bridge-disabled' into 'main'
arti-client config: Fix bridge handling and test it

Closes #1000

See merge request tpo/core/arti!1481
2023-08-08 17:24:14 +00:00
Ian Jackson 4b64f988aa bridge config: Fix an error message slightly 2023-08-08 18:01:31 +01:00
Ian Jackson 635edd4129 arti-client config test: partially un-degrade formatting 2023-08-08 18:01:31 +01:00
Ian Jackson 2fc249ce66 arti-client config test: degrade formatting
As demanded by rustfmt
2023-08-08 18:01:31 +01:00
Ian Jackson e142f9a560 arti-client config: Add an extra test case for bridges
This complements the new `check_bridge_pt` test.
2023-08-08 18:01:31 +01:00
Ian Jackson 9ba4b496fd bridge config: reject bridges=true when there are no bridges
This is a bugfix.  Perhaps it is a security fix?
2023-08-08 18:01:31 +01:00
Gabriela Moldovan 5d0fb5177f
tor-error: Remove KeystoreFsPermissions variant.
According to the `ErrorKind` lumping guidelines, `KeystoreFsPermissions`
should be lumped with `FsPermissions`: they represent the same type
of error, and their "location" is the same ("Host").

Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1315#note_2916455
2023-08-08 16:46:20 +01:00
gabi-250 13c0b023e5 Merge branch 'coverage-fixes' into 'main'
maint: list the HTML dependencies in coverage

See merge request tpo/core/arti!1485
2023-08-08 15:11:50 +00:00
Emil Engler ab4d0182ab
maint: remove useless optarg
The `maint/coverage` script has a useless option `c`.
This commit removes it.
2023-08-08 16:32:31 +02:00
Emil Engler 3c1e5e32c2
maint: list the HTML dependencies in coverage
Currently, the `maint/coverage` script does not inform about the
dependencies required for generating the HTML output, those are, the
Python packages `bs4` and `lxml`.

This commit fixes that, by updating the help section accordingly.
2023-08-08 16:29:53 +02:00
Gabriela Moldovan a0daa9adb6
tor-proto: Implement IncomingStream::discard(). 2023-08-08 15:25:45 +01:00
Gabriela Moldovan 4507c33479
tor-proto: Replace boolean flags with an IncomingStreamState enum.
This commit introduces an `IncomingStreamState` enum, which indicates
whether the stream was accepted, discarded, or rejected, or if it is
still pending. The `is_rejected`/`is_accepted` boolean flags are no
longer needed.

Without this change, we'd need to introduce yet another boolean flag
when we implement `discard()` (for the "discarded" state).
2023-08-08 15:25:42 +01:00
Emil Engler e584cc8c08
maint: provide no list of grcov formats
This commit removes a list we provide for the supported grcov formats.
In my opinion, this is a practice of bad software engineering, as we would then
have to maintain this list by ourselves.

Therefore, this commit removes this list from the `maint/with_coverage` script
and replaces it with a references to the accompanying grcov command.
2023-08-08 16:16:21 +02:00
gabi-250 f9f8bcf5b9 key-management.md: Fix typos 2023-08-08 13:20:11 +00:00
gabi-250 fa595875ec Merge branch 'tor-proto-incoming-todo' into 'main'
tor-proto: Replace IncomingStreamMsg with IncomingStreamRequest.

See merge request tpo/core/arti!1477
2023-08-08 13:13:31 +00:00
Ian Jackson bff3475cc1 Merge branch 'tor-proto-incoming-drop' into 'main'
tor-proto: Implement `Drop` for `IncomingStream`.

See merge request tpo/core/arti!1476
2023-08-08 13:08:37 +00:00
Gabriela Moldovan 7446ed08b6
tor-proto: Fix broken docs. 2023-08-08 13:14:39 +01:00
Gabriela Moldovan a74e4cf661
tor-proto: Make it obvious that we're discarding a Result. 2023-08-08 13:07:45 +01:00
Gabriela Moldovan 4fb5121a77
tor-proto: Make StreamTarget::close return the oneshot::Receiver instead of blocking.
Instead of having 2 version of `StreamTarget::close` (a blocking one and
a nonblocking one), we can just return the `oneshot::Receiver` for
receiving the reactor's response and let the caller of
`StreamTarget::close` decide whether to block.

This allows us to reduce some code duplication in the `IncomingStream`
implementation.
2023-08-08 13:04:01 +01:00
Gabriela Moldovan 2b2f0f6065
tor-proto: Make take_inner() use mut_inner() to check the inner value. 2023-08-08 12:47:13 +01:00