unofficial git repo -- report bugs/issues/pull requests on https://gitlab.torproject.org/ -- discuss proposals on tor-dev@lists.torproject
Go to file
David Goulet 21d7e9a41f prop340: Tweak how we handle optional stream IDs
Introduce an optional header called the "message routing header" which
contains a `stream_id` and is only present for commands that do require
it.

We also specify that if an unrecognized command is encountered, the
circuit MUST be destroyed immediately.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-06-13 13:21:30 -04:00
attic attic: Move onion service v2 spec to attic 2022-05-05 11:44:26 -04:00
proposals prop340: Tweak how we handle optional stream IDs 2023-06-13 13:21:30 -04:00
.gitignore Ignore OS X's .DS_Store directory metadata files 2015-10-19 06:28:13 +11:00
.gitlab-ci.yml gitlab-ci: default branch is now main 2021-12-22 09:06:03 +01:00
address-spec.txt Add info that onion v3 URLs use SHA3-256 2023-05-23 21:31:51 +00:00
bandwidth-file-spec.txt bandwidth-file: Remove trailing = defining Keys 2022-10-13 13:46:17 +00:00
bridgedb-spec.txt Fix typos and cleanup 2021-10-25 16:35:13 -04:00
cert-spec.txt cert-spec: Add 'Table of contents' 2021-09-22 16:13:32 +03:00
control-spec.txt proposal 327: Editing pass to align the spec with our implementation 2023-05-24 14:38:00 -04:00
dir-list-spec.txt Fix typos and cleanup 2021-10-25 16:35:13 -04:00
dir-spec.txt Fix typo 2023-05-08 13:29:00 +00:00
dos-spec.md Fix typos and cleanup 2021-10-25 16:35:13 -04:00
ext-orport-spec.txt Fix typos and cleanup 2021-10-25 16:35:13 -04:00
gettor-spec.txt gettor-spec: Add 'Table of contents' 2021-09-22 16:13:32 +03:00
glossary.txt glossary: Add 'Table of contents' 2021-09-22 16:13:32 +03:00
guard-spec.txt Fix typos and cleanup 2021-10-25 16:35:13 -04:00
padding-spec.txt Fix typo 2022-07-08 17:08:40 +00:00
param-spec.txt Clarify parameters related to hsv3 protocol. 2023-01-09 12:46:17 -05:00
path-spec.txt Clarify the behavior of some circuit timeout params. 2021-12-08 11:10:05 -05:00
pt-spec.txt Remove comma from STATUS format specification. 2022-02-28 07:38:36 +00:00
README.md Fix grammar in README.md 2021-10-25 16:35:46 -04:00
rend-spec-v3.txt Describe the behavior of our HSv3 crypto layers. 2023-06-13 12:13:25 -04:00
socks-extensions.txt socks-extensions: Add 'Table of contents' 2021-09-22 16:13:32 +03:00
srv-spec.txt Give a formal name to shared_random_value 2023-01-19 10:20:45 -05:00
tor-spec.txt Describe the behavior of our HSv3 crypto layers. 2023-06-13 12:13:25 -04:00
version-spec.txt version-spec: Add 'Table of contents' 2021-09-22 16:13:32 +03:00

Tor specifications

This repository holds the specifications that describe how Tor works. They try to present Tor's protocols in sufficient detail to allow the reader to implement a compatible implementation of Tor without ever having to read the Tor source code.

The proposals directory holds our design proposals. These include historical documents that have now been merged into the main specifications. For more information on the proposal process, including an explanation of how to make new proposals, see 001-process.txt.

What you can find here

Tor's specification is pretty big, and we've broken it into a bunch of files.

  • General interest
    • tor-spec.txt contains the specification for the core Tor protocol itself; this is a good place to start reading.
    • cert-spec.txt describes a certificate format used in the other parts of the protocol.
    • dir-spec.txt specifies the operations and formats used to maintain a view of the network directory.
    • padding-spec.txt describes a set of padding mechanisms used to impede traffic analysis.
    • version-spec.txt explains how to parse Tor version numbers.
    • glossary.txt is a glossary of terms used in the other specifications.
  • Client operations
    • address-spec.txt lists a set of special addresses that Tor handles differently from the regular DNS system.
    • guard-spec.txt explains the "guard node" algorithm that Tor clients use to avoid sampling attacks.
    • path-spec.txt explains how clients choose their paths through the Tor network.
    • socks-extensions specifies Tor-specific extensions to the SOCKS protocol.
  • Onion services
  • Censorship resistance
    • bridgedb-spec.txt explains how the bridgedb server gives out bridges to censored clients.
    • gettor-spec.txt describes the gettor tool, which is used to download Tor in censored areas.
    • pt-spec.txt describes the protocol that Tor clients and relays use to communicate with pluggable transports used for traffic obfuscation.
  • Directory authorities
    • bandwidth-file-spec.txt specifies the file format used by bandwidth-measuring tools to report their observations to directory authorities.
    • srv-spec.txt specifies the protocol that directory authorities use to securely compute shared random values for the network.
  • Controller protocol
    • control-spec.txt explains the protocol used by controllers to communicate with a running Tor process.
  • Miscellaneous
    • dir-list-spec.txt explains the format used by tools like the fallback directory scripts to output a list of Tor directories for inclusion in the Tor source code.
    • The attic directory has obsolete or historical documents.