Commit Graph

81 Commits

Author SHA1 Message Date
Nick Mathewson
70ca4e9dcb rend-spec: clarify how dir info may be used to confirm linkspecs
Specifically, you can look at the directory to see if somebody is
lying about a relay (mismatched IDs, etc), but you can't modify
the list of linkspecs.
2023-03-22 14:31:55 -04:00
Nick Mathewson
0b19f2114b rend-spec: Clarify that IPv4, RSA-ID and Ed25519-ID are mandatory for now.
We can make these non-mandatory in the future if we want, using a
consensus flag.
2023-03-22 14:31:55 -04:00
Nick Mathewson
1aa3a8316a rend-spec: Clarify that linkspec lists should be used verbatim.
This resolved "problem 2" from torspec#193.
2023-03-22 14:31:55 -04:00
Nick Mathewson
33308845ce {rend,tor}-spec: clarify linkspec ID multiplicity issues
We were previously a bit unclear on how to handle multiple linkspecs
of type ed25519, and our spec didn't actually permit Tor's current
behavior.

Now we say that both Ed25519 ID and Legacy ID linkspecs MUST appear
at most once in a list of linkspecs, and that parties SHOULD
enforce this.

This is "problem 1" on torspec#193.
2023-03-22 14:24:33 -04:00
David Goulet
99a5803fa7 Merge branch 'tor-gitlab/mr/118' 2023-03-07 08:48:05 -05:00
Ian Jackson
85c2b704ac rend-spec-v3 ESTABLISH_INTRO: Actually name which key AUTH_KEY is
Really, AUTH_KEY in the display ought to be KP_IPT_SID, to get rid of
a layer of terminological indirection.
2023-03-01 15:11:57 +00:00
Nick Mathewson
ba581c95bf Clarify that ESTABLISH_INTRO signature doesn't cover SIG_LEN.
The previous wording implied that SIG_LEN was also signed, which
it isn't.
2023-03-01 07:42:22 -05:00
Roger Dingledine
29fbf57f79 a few more grammar / whitespace fixes 2023-02-08 13:20:01 -05:00
Nick Mathewson
e8aea86688 Merge remote-tracking branch 'tor-gitlab/mr/113' 2023-02-08 11:40:11 -05:00
Nick Mathewson
7838586895 Refer to N_hs_desc_enc in description of encrypted-cookie 2023-02-08 11:39:37 -05:00
Nick Mathewson
4234d93259 Merge remote-tracking branches 'tor-gitlab/mr/114' and 'tor-gitlab/mr/115' 2023-02-08 11:37:35 -05:00
gabi-250
b7aeadeec6 Grammar fix 2023-02-08 16:35:02 +00:00
Ian Jackson
71d7e7184d Rename hs_index and hsdir_index to hs_{service,relay}_index
These new names are the ones used in arti's hsdir_ring.rs and make a
lot more sense than calling one of them the "directory" index and
the other just the "index".

In C Tor these are calculated by functions called
  hs_build_hs_index
  hs_build_hsdir_index

That might be a reason *not* to accept this change.  Or it might be a
reason to change the C Tor code.

If we don't change the names in the spec the Arti function names
should change.
2023-02-08 14:49:30 +00:00
Nick Mathewson
0b1289fd26 Remove mention of "password" auth in rend-spec.
It was never implemented, is not specified, and neither dgoulet nor
I can quite remember how it was supposed to work.
2023-02-07 15:10:54 -05:00
Nick Mathewson
2e8606c1bb Fix name of KP_hs_blind_id
By our current logic, it needs to have `hs` in it.
2023-02-07 15:10:15 -05:00
Nick Mathewson
c51fa4c53e Remove K_desc_enc.
It has no independent existence outside of the encryption algorithm
of 2.5.3.
2023-02-07 15:08:27 -05:00
Nick Mathewson
d44927c39e Name and clarify a few more objects. 2023-02-07 15:07:57 -05:00
Nick Mathewson
da8ecedde5 Rename three keys.
These names are slightly shorter and a bit more descriptive IMO, and
now (when they are still fresh) is the best time to rename these
keys.

`hs_intro_tid` becomes `hs_ipt_sid`: It is a _session identifier_
key used with an _introduction point_.  Using `ipt` here emphasizes
that it is not part of the introduction _handshake_.

`hs_intro_ntor` becomes `hss_ntor`. The extra "s" means it is owned
by the service. Renaming "intro" here removes the implication that
it is held by or used by the introduction point.

`onion_ntor` becomes `ntor`: There is no such thing as an ntor key
that is not an onion key.
2023-02-07 14:51:08 -05:00
Nick Mathewson
46356d252f Merge branch 'hs-htype' into 'main'
Fix terminology for handshake type

See merge request tpo/core/torspec!112
2023-02-06 21:01:00 +00:00
Ian Jackson
28cc4dc16b Mention, hopelessly, the undocumented "password" auth type 2023-02-06 15:08:00 +00:00
Ian Jackson
dc822431f3 Properly define "authentication types" in the relevant section
Use the phrase which is used elsehwer, and enumerate them again since
this is where one would expect to find that enumeration.
2023-02-06 15:07:10 +00:00
Ian Jackson
51fd440a19 Talk of "defined" rather than "recognized" auth types
We're not the code, we're the spec.  We can define things, not
recognise them.
2023-02-06 15:06:41 +00:00
Ian Jackson
ecd718e116 Add ed25519, the name of the auth type, to the heading 2023-02-06 15:04:46 +00:00
Ian Jackson
431f6152cf Fix terminology for handshake type
The phrase "format number" is not defined anywhere.  I think it means
an HTYPE value.
2023-02-06 14:51:45 +00:00
Ian Jackson
7b3d7a40a0 Use proper names for KP_hsc_desc_enc 2023-02-06 12:51:41 +00:00
Ian Jackson
5c6b282e57 Call the key in desc-auth-ephemeral-key, KP_hs_desc_ephem
Proposed by @nickm in
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/999/diffs#50f9790ab3f0a65f7ac3e4f413c84f51fae1f855_0_26

(I think the spec is not 100% clear that hs_y and hs_Y are *this* key,
rather than some other possible ephemeral keypair the HS might have,
so please would the reviewer check that this is actually true.)
2023-02-06 12:25:55 +00:00
Nick Mathewson
ca400dc9f8 rend-spec: Document how the cross-certificates (don't) work.
(See text for more info!)
2023-01-31 11:18:06 -05:00
Nick Mathewson
5509981ced rend-spec: Clarify that enc-key and auth-key may appear multiple times.
The spec says "exactly once", but that only refers to the ntor
variant.
2023-01-31 10:57:34 -05:00
David Goulet
f88f6436d1 Merge branch 'tor-gitlab/mr/109' 2023-01-31 08:55:07 -05:00
Nick Mathewson
b842f50c4f Document missing NL in the middle layer of an HsDesc.
It looks like C tor doesn't include a final newline in the middle
layer of its onion service descriptors.  That made arti reject them
the first time I tried to parse one!  Here I document this behavior,
and tell other implementations what to do.
2023-01-30 16:46:58 -05:00
Nick Mathewson
5e864771d1 rend-spec-v3: Clarify how the time period offset is computed.
Based on this email thread with dgoulet:

https://lists.torproject.org/pipermail/tor-dev/2023-January/014808.html
2023-01-24 15:17:54 -05:00
Ian Jackson
025d469837 Rename onion keys back to K*_onion_ntor
As per review comments
2023-01-19 10:20:45 -05:00
Ian Jackson
5f3e97cfa1 Provide names for HS client authentication keys 2023-01-19 10:20:45 -05:00
Ian Jackson
c1aa867819 Rename KP_hs_intro_auth to KP_hs_intro_tid 2023-01-19 10:20:45 -05:00
Ian Jackson
3bdb23706a Revert "Say that HS identity keys are not the same as relay identity keys"
This reverts commit 81c1be641557d1cd3fb6d9195de08e9f411be517.
2023-01-19 10:20:45 -05:00
Ian Jackson
fc42e97dd3 Properly say KP_relayid rather than K_relayid 2023-01-19 10:20:45 -05:00
Ian Jackson
a4e3bdbe6e Properly say KS_onion_ed is a keypair 2023-01-19 10:20:45 -05:00
Ian Jackson
7bc2766bad K_hs_intro_ntor: rename from K_hs_intro_enc
Prompted by
  https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/105#note_2869614
2023-01-19 10:20:45 -05:00
Ian Jackson
0dd614681c Make all HS key names contain _hs_
Suggested here
  https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/105#note_2869613
2023-01-19 10:20:45 -05:00
Ian Jackson
90919950d1 Use _ed rather than _ntor for ed25519 keys
Even the ones that are actually ntor.  Perhaps that's wrong and those
should be ntor?  Personally I like it this way.
2023-01-19 10:20:45 -05:00
Ian Jackson
1d5ba4f51a Uwe formal notation for credential and subcredential
In particular, give these formal names which contain "hs" (since they
are part of the hidden service protocol, and not any other kind of
authentication or authorisation scheme), and "N" to indicate that they
are hash-generated nonces, not passwords.

Change the references in the formulae, which it really seems to me
ought to refer to the formal names.
2023-01-19 10:20:45 -05:00
Ian Jackson
3c68fd57e1 Give a formal name to shared_random_value 2023-01-19 10:20:45 -05:00
Ian Jackson
b631068870 rend-spec: Clarify and slightly reword credential explanation
Introduce the credential and subcredential before we use them.
Talk about the public identity key rather than the credential,
when we can.
2023-01-19 10:20:45 -05:00
Ian Jackson
e3dd512264 Say that HS identity keys are not the same as relay identity keys 2023-01-19 10:20:45 -05:00
Ian Jackson
4af1697371 Introduce names for the principal rendezvous keys 2023-01-19 10:20:45 -05:00
Nick Mathewson
7116c9cdab rend-spec-v3: mark some sections as obsolete
All supported versions for relays on the Tor network support v3
onion services. As such, we can mark the sections about "how do I
use an 0.2.9.x relay as my intro/rend point?" as obsolete.
2022-12-20 12:52:15 -05:00
Nick Mathewson
c99151cc07 Clarify that revision counter needs to support 64-bit values. 2022-12-20 12:50:28 -05:00
Nick Mathewson
fa940c0d9e Be explicit about EXT_FIELD_LEN=0 2022-02-17 16:16:15 -05:00
Nick Mathewson
176c9001f9 ntor3, rend3: clarify extension field defaults.
These patch changes describe new default behaviors for extension
field lists, as appear in ntor3 and in many places throughout the
ntor3 protocol.  In general:

* Unrecognized extensions MUST be ignored.

Additionally, all the following rules apply _unless otherwise stated
in the documentation for an extension.

* Extensions are sent in sorted order.
* Extensions should only be sent once in a message
* If you receive multiple copies of an extension, only the first
  one counts.

This comes out of discussions on tor!525.
2022-02-17 10:53:20 -05:00
Dimitris Apostolou
29245fd50d Fix typos and cleanup 2021-10-25 16:35:13 -04:00