aboutsummaryrefslogtreecommitdiff
path: root/tor-spec.txt
AgeCommit message (Collapse)Author
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-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
2021-05-27Document behavior on multiple TLS-over-TCP linkspecsNick Mathewson
2021-05-13Document current circid selection behaviorNick Mathewson
2021-03-03Describe handling of END cells and half-open streams.Nick Mathewson
Originally designed in tor#25573 as part of a defense for the DropMark attack by Rochet and Pereira. Closes torspec#33.
2020-09-17Describe the actual RELAY cell padding algorithm that we use.Nick Mathewson
For indistinguishability, other implementations should pad the same way that we do.
2020-09-17tor-spec: describe the order in which we put link specifiers.Nick Mathewson
Right now, tor encodes them in a certain order; specifying that order can help other implementations be indistinguishable.
2020-09-17tor-spec: describe END cell format better.Nick Mathewson
2020-07-06Document relay commands for circpad cells.Mike Perry
2020-06-26Add a sentence about how the digest is calculated; closes tor#32830Nick Mathewson
2020-06-24Remove a very obsolete note about compatibility notesNick Mathewson
2020-06-17Rename a circuit end reason.Nick Mathewson
OR_CONN_CLOSED has been CHANNEL_CLOSED since 0.2.4.4-alpha.
2020-05-18tor-spec: Add Relay=3 protocol versionteor
With minor edits from the draft in proposal 311. Closes ticket 33227.