Newer
Older
# 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](/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
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[001-process.txt](/proposals/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](tor-spec.txt)
contains the specification for the core Tor protocol
itself; this is a good place to start reading.
* [cert-spec.txt](cert-spec.txt) describes a certificate format used
in the other parts of the protocol.
* [dir-spec.txt](dir-spec.txt) specifies the operations and formats used to
maintain a view of the network directory.
* [padding-spec.txt](padding-spec.txt) describes a set of padding mechanisms
used to impede traffic analysis.
* [version-spec.txt](version-spec.txt) explains how to parse Tor
version numbers.
* [glossary.txt](glossary.txt) is a glossary of terms used
in the other specifications.
* Client operations
* [address-spec.txt](address-spec.txt) lists a set of special
addresses that Tor handles differently from the regular DNS system.
* [guard-spec.txt](guard-spec.txt) explains the "guard node" algorithm
that Tor clients use to avoid sampling attacks.
* [path-spec.txt](path-spec.txt) explains how clients choose their paths
through the Tor network.
* [socks-extensions](socks-extensions.txt) specifies Tor-specific
extensions to the SOCKS protocol.
* Onion services
* [rend-spec-v2.txt](rend-spec-v2.txt) is the old, deprecated version
of the onion service protocol.
* [rend-spec-v3.txt](rend-spec-v3.txt) is the current version of the
onion service protocol.
* Censorship resistance
* [bridgedb-spec.txt](bridgedb-spec.txt) explains how the `bridgedb`
server gives out bridges to censored clients.
* [gettor-spec.txt](gettor-spec.txt) describes the `gettor` tool,
which is used to download Tor in censored areas.
* [pt-spec.txt](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](bandwidth-file-spec.txt) specifies the
file format used by bandwidth-measuring tools to report their
observations to directory authorities.
* [srv-spec.txt](src-spec.txt) specifies the protocol that
directory authorities use to securely compute shared random values
for the network.
* Controller protocol
* [control-spec.txt](control-spec.txt) explains the protocol used by
controllers to communicate with a running Tor process.
* Miscellaneous
* [dir-list-spec.txt](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](attic) directory has obsolete or historical documents.