Skip to content

Latest commit

 

History

History
110 lines (89 loc) · 3.88 KB

File metadata and controls

110 lines (89 loc) · 3.88 KB

Protocol support and compatibility in Arti

Up to date as of Feb 2026

Summary:

Arti runs as a client, and supports running onion services and connecting to them. It supports using bridges and pluggable transports.

There is no support in Arti yet for running as a relay, a bridge, or a directory authority. We are currently building those.

Arti aims for compatibility with all currently recommended Tor protocols. We have not implemented, and do not plan to implement, obsolete versions of anything.

Protocol support

Client-side support

Here's a checklist of Tor sub-protocol capabilities versions that we currently have client-side support for:

  • Conflux=1 (CONFLUX_BASE) 1
  • Cons=2 (CONS_ED25519_MDS) 2
  • Desc=2 (DESC_CROSSSIGN)
  • Desc=3 (DESC_NO_TAP)
  • Desc=4 (DESC_FAMILY_IDS)
  • DirCache=2 (DIRCACHE_CONSDIFF)
  • FlowCtrl=0 (FLOWCTRL_AUTH_SENDME)
  • FlowCtrl=1 (FLOWCTRL_CC)
  • HSDir=2 (HSDIR_V3)
  • HSIntro=4 (HSINTRO_V3)
  • HSIntro=5 (HSINTRO_RATELIM)
  • HSRend=2 (HSREND_V3)
  • Link=4 (LINK_V4)
  • Link=5 (LINK_V5)
  • Microdesc=2 (MICRODESC_ED25519_KEY) 2
  • Microdesc=3 (MICRODESC_NO_TAP)
  • Padding=2 (PADDING_MACHINE_CIRC_SETUP) 3
  • Relay=2 (RELAY_NTOR)
  • Relay=3 (RELAY_EXTEND_IPV6)
  • Relay=4 (RELAY_NTORV3)
  • Relay=5 (RELAY_NEGOTIATE_SUBPROTO)
  • Relay=6 (RELAY_CRYPT_CGO)

Going forward, Arti is the preferred Tor client for new feature development. All new client features will have implementations in Arti.

For proxies, we support Tor's socks extensions and HTTP CONNECT extensions.

Relay-side support

Relay-side support is a work in progress. We want to support all of these sub-protocol capabilities. Many of them are partly implemented; we'll check them off as they become accessible on a running relay.

  • Conflux=1 (CONFLUX_BASE)
  • Cons=2 (CONS_ED25519_MDS)
  • Desc=2 (DESC_CROSSSIGN)
  • Desc=3 (DESC_NO_TAP)
  • Desc=4 (DESC_FAMILY_IDS)
  • DirCache=2 (DIRCACHE_CONSDIFF)
  • FlowCtrl=0 (FLOWCTRL_AUTH_SENDME)
  • FlowCtrl=1 (FLOWCTRL_CC)
  • HSDir=2 (HSDIR_V3)
  • HSIntro=4 (HSINTRO_V3)
  • HSIntro=5 (HSINTRO_RATELIM)
  • HSRend=2 (HSREND_V3)
  • Link=4 (LINK_V4)
  • Link=5 (LINK_V5)
  • LinkAuth=3 (LINKAUTH_ED25519_SHA256_EXPORTER)
  • Microdesc=2 (MICRODESC_ED25519_KEY)
  • Microdesc=3 (MICRODESC_NO_TAP)
  • Padding=2 (PADDING_MACHINE_CIRC_SETUP)
  • Relay=2 (RELAY_NTOR)
  • Relay=3 (RELAY_EXTEND_IPV6)
  • Relay=4 (RELAY_NTORV3)
  • Relay=5 (RELAY_NEGOTIATE_SUBPROTO)
  • Relay=6 (RELAY_CRYPT_CGO)

We do not ever plan to support these:

  • Cons=1 (obsolete format)
  • Desc=1 (obsolete format)
  • DirCache=1 (no relays still support this)
  • HSDir=2(obsolete since 2021)
  • HSIntro=3 (obsolete since 2021)
  • HSRend=1 (obsolete since 2021)
  • LinkAuth=1 (only used by RSA-only relays)
  • Microdesc=1 (obsolete format)
  • Padding=1 (deprecated)

Footnotes

  1. The tor-proto crate supports conflux tunnels, but Arti does not currently build or use them.

  2. If a consensus method before 28 is used, we won't find IPv6 addresses correctly. All such consensus methods are currently obsolete, though, and authorities won't negotiate them any more. 2

  3. The tor-proto crate supports padding machines based on maybenot, but they are not currently implemented.