aboutsummaryrefslogtreecommitdiff
path: root/tor-spec.txt
AgeCommit message (Collapse)Author
2023-10-12Move all text-only specifications into the OLD_TXT directory.Nick Mathewson
2023-10-03Document currently supported handshake extensions.Nick Mathewson
2023-10-03Add verbiage about the formats of SM and CM in ntor-v3Nick Mathewson
2023-10-03Copy description of ntorv3 into tor-spec.txtNick Mathewson
2023-06-21tor-spec: provide pseudocode for digest checkEmil Engler
This commit implements a pseudocode example for the digest in both: encryption and decryption cases. The pseudocode itself is a combination of Python code and the Rust slice type. Fixes #205
2023-06-15Document channel padding stop timeout field valuesIan Jackson
I UTSL C-tor and it memsets the thing to zero and then fails to write these timeout fields. We should recommend that other implementations do the same.
2023-06-13Describe the behavior of our HSv3 crypto layers.Nick Mathewson
These layers use SHA3 instead of SHA1 and AES256 instead of AES128. Their SENDME tags are made with SHA3 too, but they are truncated to 20 bytes. Closes #204.
2023-05-31Merge branch 'relay_early' into 'main'Nick Mathewson
tor-spec: inform about RELAY_EARLY in EXTEND(2) See merge request tpo/core/torspec!135
2023-05-24Merge branch 'tor-gitlab/mr/125'David Goulet
2023-05-23tor-spec: inform about RELAY_EARLY in EXTEND(2)Emil Engler
EXTEND/EXTEND2 cells MUST only be send through RELAY_EARLY cells, as demanded by section 5.6. This commit informs about this in the section of the EXTEND/EXTEND2 cells, as the current formulation contradicts the one in 5.6 to some degree.
2023-05-23Merge remote-tracking branch 'gitlab/mr/128'Alexander Færøy
2023-05-05tor-spec: define the EXP(a, b) functionEmil Engler
This commit adds an explanation of the meaning behind the EXP(a, b) function, primarily targeted for readers without a deep understanding of the cryptography. Fixes #195
2023-05-05tor-spec: remove the redundant MULT functionEmil Engler
This commit removes the redundant MULT(a, b) function from the ntor section, as the function is defined but never used.
2023-05-02tor-spec: Revise the CircID selection sectionEmil Engler
This commit updates the "5.1.1. Choosing circuit IDs in create cells" section, in order to clarify its importance, as well as to adjust it to modern link protocol versions. The first goal is achieved, by directly adding a "MUST" in the first paragraph, alongside a reformulation in the paragraph explaining the method in link protocol version 4 or higher. The second goal is achieved by merging the second paragraph with the third paragraph, as the second paragraph only applies to the link protocol versions addressed in the third one.
2023-03-22{rend,tor}-spec: clarify linkspec ID multiplicity issuesNick Mathewson
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-07State that "base32" always means RFC4648, unpadded.Ian Jackson
I found src/lib/encoding/binascii.[ch] in the C Tor codebase. It has #define BASE32_CHARS "abcdefghijklmnopqrstuvwxyz234567" The function "base32_encode" says "Implements base32 encoding as in RFC 4648.". Now, that RFC says that it's supposed to be padded unless explicitly stated otherwise. However, the padding is pointless and neither our "base32_encode" nor our "base32_decode" seem to implemnet it. I hope that we are using the same base32 encoding everywhere, but have not checked.
2023-02-08Merge remote-tracking branches 'tor-gitlab/mr/114' and 'tor-gitlab/mr/115'Nick Mathewson
2023-02-07Rename three keys.Nick Mathewson
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-06Put HTYPE (the name for this thing) in the title for the tableIan Jackson
2023-01-19tor-spec: Change KP to KP throughoutIan Jackson
Emacs's idea of s/\bPK\b/KP/
2023-01-19tor-spec: Clarifiy KP/KS in definition sectionIan Jackson
2023-01-19tor-spec: Change PK/SK to KP/KS in definition sectionIan Jackson
2023-01-19Rename onion keys back to K*_onion_ntorIan Jackson
As per review comments
2023-01-19Document that keypairs should not double up roles, with exampleIan Jackson
2023-01-19Use _ed rather than _ntor for ed25519 keysIan Jackson
Even the ones that are actually ntor. Perhaps that's wrong and those should be ntor? Personally I like it this way.
2023-01-19Uwe formal notation for credential and subcredentialIan Jackson
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-19Introduce names for the principal relay keysIan Jackson
2023-01-11Merge branch 'tor-gitlab/mr/81'David Goulet
2023-01-11Tweak dgoulet's explanation of TRUNCATE and DESTROY.Nick Mathewson
2023-01-10Merge branch 'tor-gitlab/mr/92'David Goulet
2022-12-22tor-spec: fix ambitious formulation in VERSIONSEmil Engler
This commit fixes an ambitious formulation within the definition of the VERSIONS cells. It says, that a VERSIONS cell with an odd number of bytes is invalid. This statement is not true, because the CircID (2 bytes for VERSIONS cells), Command (1 byte) and Length (2 byte) make up 5 bytes, which is an odd number. Adding an odd number to an even number of bytes (the payload in this case) always results in an odd number.
2022-12-15prop329: Remove unused section and use relay command 19..22David Goulet
As per review from nickm in https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/95 Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-09prop329: Changes after research and discussionsDavid Goulet
Series of change after discussin with mikeperry the proposal in depth. Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-24tor-spec: Fix line exceeding 80 charactersEmil Engler
This commit inserts a line break in order to fix the only line exceeding 80 characters in this document.
2022-08-18tor-spec: TRUNCATED cell are not sent anymoreDavid Goulet
In addition, this commit also changes the spec so no destroy reasons (error code) are propagated down or up the circuit in order to mitigate potential side channel risks. See https://gitlab.torproject.org/tpo/core/tor/-/issues/40649 for more details on why. Related to tor/#40623 Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-08-11Specify the actual relay cmd values for XON and XOFF.Nick Mathewson
As far as I can tell, we had not previously said that 43 was "XON" and 44 was "XOFF".
2022-05-31tor-spec: Reserve relay command and protover for prop339David Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-05-05tor-spec: Add relay command values of flow control cellsDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-05-04tor-spec: Add FlowCtrl=2 for congestion controlDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-05-04tor-spec: Add Relay=4, ntorv3 handshake supportDavid Goulet
See proposal 332 for more details. Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-11-08tor-spec: Complement and fix the protover timelineDavid Goulet
Relays started advertising Relay=3 in 0.4.5.1-alpha, see core/tor commit e787e521af9. Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-10-25Fix typos and cleanupDimitris Apostolou
2021-10-15Start writing a specification for DoS defense mechanism.Nick Mathewson
2021-09-22tor-spec: Add 'Table of contents'Oleh Franchuk
2021-08-16spec change cleanupRoger Dingledine
(hopefully i picked the right fix :)
2021-08-16Clarify handling of dubious RELAY_END cell formats.Nick Mathewson
2021-08-16Specify case in BEGIN messages.Nick Mathewson
2021-08-16Clarify: clients do not report their timestamp.Nick Mathewson
2021-08-16Clarify behavior on bad address length in NETINFONick Mathewson
2021-08-16Clarify behavior on out-of-bounds link padding parameters.Nick Mathewson