arti: Add an arti hsc subcommand.
This adds an experimental arti hsc
subcommand for managing client
state and keys. Currently, it only supports the
prepare-service-discovery-keys
operation described in #1281 (closed) and
doc/dev/notes/client-auth.md
.
A note on terminology: I am referring to services that encrypt the second layer of their descriptor as running in "restricted discovery" mode (because they can only be discovered, i.e. have their IPT points found out, by a set of authorized clients). The corresponding client "auth" keys, being the keys that enable the client to find out the list of intro points, pow-params etc. of the service, are referred to as service "discovery keys".
Alternative names I considered:
- extra descriptor encryption: accurate, but overly technical. IMO, the CLI should be accessible to users who aren't familiar with the nitty-gritty of the protocol
- shielded mode: good, but slightly misleading. Calling it "shielded
mode" makes it sound like a universally desirable "extra protection"
that should almost always be enabled (which is not the case). Seeing
shielded_mode = off
in the config might be worry operators that don't fully understand what "extra descriptor encryption" or "shielded mode" means - restricted mode: slightly inaccurate. It implies this mechanism is a good substitute for conventional service-side authentication, which it isn't (because client authorization isn't instantaneous)
I'd like @nickm and/or @Diziet to sign off on this before merging (I'm adding some experimental TorClient
APIs, and the somewhat controversially-named arti hsc prepare-service-discovery-key
subcommand`).
Closes #1281 (closed)