Skip to content

recommended/required semantics are maybe wrong with respect to arti clients and HS

With Arti, you can build a client without onion service support, or without onion client support.

But once arti#1849 (closed) is done, all these clients will get warnings because of these members of recommended-client-protocols: HSDir=2 HSIntro=4 HSRend=2.

Open questions to answer:

What are the semantics of this recommendation?

As stated, they seem to mean "If you are going to be a client on the Tor network, you should support hsdir=2, hsintro=4, and hsrend=2". Does this mean that we should warn when built without onion-service support?

Or maybe they mean, "If you are going to connect to onion services on Tor, you should support hsdir=2, hsintro=4, and hsrend=2"?

Or maybe they mean, "If you are going to offer onion services on the network, you should support hsdir=2, hsintro=4, and hsrend=2"?

What protocols does a onion-service-client-only client have?

Suppose we have a client that enabled the feature onion-service-client, but not onion-service-service.

Does this client implement e.g. HSDir=2 or not?

Recommendations

I think I'd like to make the following changes:

  • On an interim basis, have arti not warn about the HS* protocols that it would have if onion services were enabled.
  • Add a new {recommended,required}-hsc-protocols for clients connecting to onion services.
  • Add a new {recommended,required}-hsc-protocols to the consensus, for onion services themselves.
  • Remove "hsdir=2, hsintro=4, hsrend=2" from recommended-client-protocols.

What do you think?

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information