./net/arti, Implementation of tor in Rust

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.4.1, Package name: arti-1.4.1, Maintainer: pkgsrc-users

Arti is a project to produce an embeddable, production-quality implementation
of the Tor anonymity protocols in the Rust programming language.

Arti is more flexible than the C tor implementation. Unlike the C tor, which
was designed as SOCKS proxy originally, and whose integration features were
later "bolted on", Arti is designed from the ground up to work as a modular,
embeddable library that other applications can use.

Current Status
Arti can connect to the Tor network, bootstrap a view of the Tor directory,
and make anonymized connections over the network. Now that Arti has reached
version 1.0.0, we believe it is suitable for actual use to anonymise
connections.

There are a number of areas (especially at the lower layers) where APIs
(especially internal APIs) are not stable, and are likely to change them.
Right now that includes the command line interface to the arti program.

And of course it's still very new so there are likely to be bugs.


Master sites:

Filesize: 5181.955 KB

Version history: (Expand)


CVS history: (Expand)


   2025-03-04 11:25:13 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
arti: update to 1.4.1.

# Arti 1.4.1 — 3 March 2025

Arti 1.4.1 contains
significant behind-the-scenes groundwork for [Conflux],
a feature that improves performance and reliability
by allowing data streams to tunnel over multiple circuits.

It also adds client-side support for an
[improved representation of family membership][prop321].

### Major features

- Arti now implements the client side of ID-based families
  (a.k.a. ["Happy Families"][prop321]).
  When deployed everywhere on the network,
  this feature will allow us
  to remove around 80-90% of the data from microdescriptors,
  and save some administrative complexity.
  ([#1848], [!2792])

### Breaking changes in lower-level crates

- Removed the deprecated experimental `DataStream::circuit` API. ([!2794])
- Removed the `ClientCirc::channel` API. ([!2783])
- Functions in `tor-netdir` and `tor-relay-selection` related to families
  now take a new `FamilyRules` argument,
  to represent relevant network parameters. ([!2792])

### Conflux development

- Major simplification and refactoring in the `tor-proto` crate,
  to lay the groundwork for [Conflux] in Arti.
  ([#1839], [!2772], [!2774], [!2783], [!2786], [!2796], [!2800], [!2804])
- Implemented message types that will be used for Conflux.
  ([#1852], [!2789])
- Added types for identifying hops within a Conflux tunnel.
  ([!2799], [!2803])

### Onion service development

- Refactored `ReplayLog` code so it can be used to detect replays
  in both INTRODUCE messages and proof-of-work solutions. ([!2688])

### Testing

- Added thread-management support to our testing mock runtime.
  ([#1835], [!2793])

### Documentation

- Fixes and cleanups to examples on website. ([!2775])
- Fixed a typo. ([!2795])
- Documentation for experimental features in the `tor-keymgr` README.
  ([!2806])

### Network updates

- Updated to the latest list of Tor fallback directories. ([!2787])

### Cleanups, minor features, and bugfixes

- Upgraded to the latest versions of [`hickory-proto`],
  [`derive-deftly`], and several other crates.
  ([#1847], [!2784], [!2788], [!2809])
- Fixed new clippy warnings that appeared in Rust 1.85.
  ([!2801])
- Do not emit ANSI color to our stdout log
  when that log is not being sent to a terminal. ([#1763], [!2802])
- The `DataStream` type now implements `Sync`. ([#1859], [!2808])
   2025-02-07 20:51:11 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
arti: update to 1.4.0.

This release offers a new RPC interface, which is Arti's replacement
for C Tor's control port with many improvements.

There has also been a lot of preparatory work for relay support,
bugfixes, and work towards service-side onion service denial-of-service
resistance.
   2025-01-09 11:07:49 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
arti: update to 1.3.2.

# Arti 1.3.2 — 7 January 2025

Arti 1.3.2 continues development on RPC,
and includes preparatory work for relay support and
service-side onion service denial-of-service resistance.

# Arti 1.3.1 - 2 December 2024

Arti 1.3.1 continues development on onion services,
the RPC subsystem, and relay infrastructure.

Additionally, this release fixes a major bug in Arti's channel management code,
where in some circumstances, canceled pending channel entries
were not being cleaned up properly, preventing Arti from building new channels
to their target relays.
   2024-06-08 01:52:41 by nikita | Files touched by this commit (1)
Log message:
arti: minor cosmetic changes and comments
   2023-10-25 00:11:51 by Thomas Klausner | Files touched by this commit (2298)
Log message:
*: bump for openssl 3
   2023-04-28 18:58:42 by Nikita | Files touched by this commit (3) | Package updated
Log message:
arti: update to version 1.1.3

Changelog:

# Arti 1.1.3 — 31 March 2023

Arti 1.1.3 continues our work on onion services.  We can now parse all
of the relevant message types, build circuits as needed to target
relays, build and sign onion service descriptors, and deliver onion service
requests to our `hsclient` code.

We've also solved a few annoying bugs, made our CI more bulletproof against
certain programming mistakes, and exposed a few APIs that had been missing
before elsewhere in our code.

### Major bugfixes

- Prevent a fatal error when finding a usable consensus in a read-only
  directory store. ([#779], [!1055])

### Breaking changes in lower level crates

- Moved futures-related utilities from `tor-basic-utils` to a new
  `tor-async-utils` crate. ([!1091])
- When the `expand-paths` Cargo feature is not enabled, we now reject
  paths in our configuration containing unescaped `$` and `~` strings.
  Previously we would treat them as literals, which would break
  when `expand-paths` was provided. ([#790], [!1069])

### Onion service development

- We now have working implementations for all of the message types that Tor
  uses to implement onion services. These are included in our fuzzing, and
  are cross-validated against the C Tor implementation. ([!1038], [!1043],
  [!1045], [!1052])
- Our onion service descriptor parsing code now validates the inner
  certificates embedded in the descriptors, for parity with C Tor's behavior.
  ([#744], [!1044])
- Refactor responsibility for HS circuit management out of `CircMgr`
  ([!1047])
- Revise APIs and outline implementations for the initial parts of a state
  manager and client implementation.  ([!1034], [!1086])
- Handle requests for `.onion` addresses by routing them to our onion service
  code.  (This code does not yet do anything useful.) ([!1060], [!1071],
  [!1098])
- Our circuit implementation now has APIs needed to send special-purpose
  messages and receive replies for them.  We'll use this to implement
  onion service handshakes outside of the `tor-proto` module. ([!1051])
- Implement functionality to pre-construct and launch circuits as needed for
  onion service directory, introduction, and rendezvous
  communications. ([#691], [!1065])
- Implement code to construct, encrypt, and sign onion service
  descriptors. ([#745], [!1070], [!1084])
- More work on usable APIs for HSDir ring. ([!1095])

### Infrastructure

- Add a new `check_env` script to detect whether the environment is set
  up correctly to build Arti. ([!1030])
- We have the beginnings of a `fixup-features` tool, to make sure that our
  "full" and "experimental" Cargo features behave in the way \ 
we expect,
  and eventually to enable us to use [`cargo-semver-checks`] on our
  non-experimental features only.  This tool is not yet ready for
  use; its semantics are subtly wrong. ([#771], [!1059])
- Our CI scripts now rejects merges containing the string
  "XX<!-- look, a squirrel -->XX";
  we use this string to indicate places where the code must be fixed
  before it can be merged. ([#782], [!1067])

### Testing

- More of our tests now specify times using [`humantime`] (rather than as
  a number of seconds since the Unix epoch). ([!1037])
- Our fuzzers now compile again.
  ([53e44b58f5fa0cfa], [!1063])

### Documentation

- New example code for building a `BridgeConfig` and launching a TorClient
  with bridges, without having a config file. ([#791], [!1074])

### Cleanups, minor features, and minor bugfixes

- Our `caret` macro now works correctly for uninhabited
  enumerations. ([841905948f913f73])
- Defend against possible misuse of [`tor_bytes::Reader::extract_n`].
  This wasn't a security hole, but could have become one in the
  future. ([!1053])
- Do not ask exits to resolve IP addresses: we already know the IP address
  for an IP address. ([!1057])
- Fix a bunch of new warnings from Rust 1.68. ([!1062])
- Expose builder for [`TransportConfigList`] as part of the public
  API. ([455a7a710917965f])
- Enforce use of blinded keys in places where they are required. ([!1081])
- Add accessors for the [`Blockage`] type, so other programs can
  ask what has gone wrong with the connection to the network. ([#800],
  [!1088]).

### Acknowledgments

Thanks to everybody who's contributed to this release, including
Alexander Færøy, Dimitris Apostolou, Emil Engler, Saksham Mittal, and
Trinity Pointard. Also, our welcome to Gabi Moldovan as she joins
the team!

Also, our deep thanks to [Zcash Community Grants] for funding the
development of Arti!
   2023-03-09 19:19:40 by Nikita | Files touched by this commit (2)
Log message:
arti: make rc service use daemonize, fix it.
   2023-03-08 23:28:07 by Nikita | Files touched by this commit (1)
Log message:
arti: service file is not entirely working as intended yet