|
@@ -172,7 +172,7 @@ $Id$
|
|
|
documents to find out when their list of routers is out-of-date.
|
|
|
(Directory authorities also use vote statuses.) If it is, they download
|
|
|
any missing router descriptors. Clients download missing descriptors
|
|
|
- from mirrors; mirrors and authorities download from authorities.
|
|
|
+ from caches; caches and authorities download from authorities.
|
|
|
Descriptors are downloaded by the hash of the descriptor, not by the
|
|
|
server's identity key: this prevents servers from attacking clients by
|
|
|
giving them descriptors nobody else uses.
|
|
@@ -690,12 +690,17 @@ $Id$
|
|
|
|
|
|
"published" SP YYYY-MM-DD SP HH:MM:SS NL
|
|
|
|
|
|
+ [Exactly once for votes; Does not occur in consensuses.]
|
|
|
+
|
|
|
+ The publication time for this status document (if a vote).
|
|
|
+
|
|
|
+ "valid-after" SP YYYY-MM-DD SP HH:MM:SS NL
|
|
|
+
|
|
|
[Exactly once.]
|
|
|
|
|
|
- The publication time for this status document (if a vote), or the
|
|
|
- start of the period for this vote (if a consensus).
|
|
|
+ The start of the Interval for this vote (if a consensus.)
|
|
|
|
|
|
- "valid-until"
|
|
|
+ "valid-until" SP YYYY-MM-DD SP HH:MM:SS NL
|
|
|
|
|
|
[Exactly once.]
|
|
|
|
|
@@ -909,7 +914,7 @@ $Id$
|
|
|
Given a set of votes, authorities compute the contents of the consensus
|
|
|
document as follows:
|
|
|
|
|
|
- The "published" is the latest of all published times on the votes.
|
|
|
+ The "valid-after" is the latest of all valid-after times on the votes.
|
|
|
|
|
|
The "valid-until" is the earliest of all valid-until times on the
|
|
|
votes.
|
|
@@ -936,11 +941,35 @@ $Id$
|
|
|
The signatures at the end of the document appear are sorted in
|
|
|
ascending order by identity digest.
|
|
|
|
|
|
-[CUTOFF HERE. STUFF BELOW THIS POINT HAS NOT YET BEEN UPDATED FROM V2.]
|
|
|
+3.4. Detached signatures
|
|
|
+
|
|
|
+ Assuming full connectivity, every authority should compute and sign the
|
|
|
+ same consensus directory in each period. Therefore, it isn't necessary to
|
|
|
+ download the consensus computed by each authority; instead, the
|
|
|
+ authorities only push/fetch each others' signatures. A "detached
|
|
|
+ signature" document contains items as follows:
|
|
|
+
|
|
|
+
|
|
|
+ "consensus-digest" SP Digest NL
|
|
|
+
|
|
|
+ [At start, at most once.]
|
|
|
+
|
|
|
+ The digest of the consensus being signed.
|
|
|
+
|
|
|
+ "valid-after" SP YYYY-MM-DD SP HH:MM:SS NL
|
|
|
+ "valid-until" SP YYYY-MM-DD SP HH:MM:SS NL
|
|
|
+
|
|
|
+ [As in the consensus]
|
|
|
+
|
|
|
+ "directory signature"
|
|
|
+
|
|
|
+ [As in the consensus; the signature object is the same as in the
|
|
|
+ consensus document.]
|
|
|
+
|
|
|
|
|
|
4. Directory server operation
|
|
|
|
|
|
- All directory authorities and directory mirrors ("directory servers")
|
|
|
+ All directory authorities and directory caches ("directory servers")
|
|
|
implement this section, except as noted.
|
|
|
|
|
|
4.1. Accepting uploads (authorities only)
|
|
@@ -971,7 +1000,59 @@ $Id$
|
|
|
descriptors, not to descriptors that the authority downloads from other
|
|
|
authorities.
|
|
|
|
|
|
-4.2. Downloading network-status documents (authorities and caches)
|
|
|
+ When a router posts a signed extra-info document to a directory authority,
|
|
|
+ the authority again checks it for well-formedness and correct signature,
|
|
|
+ and checks that its matches the extra-info-digest in some router
|
|
|
+ descriptor that it believes is currently useful. If so, it accepts it and
|
|
|
+ stores it and serves it as requested. If not, it drops it.
|
|
|
+
|
|
|
+4.2. Voting (authorities only)
|
|
|
+
|
|
|
+ Authorities divide time into Intervals. Authority administrators SHOULD
|
|
|
+ try to all pick the same interval length, and SHOULD pick intervals that
|
|
|
+ are commonly used divisions of time (e.g., 5 minutes, 15 minutes, 30
|
|
|
+ minutes, 60 minutes, 90 minutes). Voting intervals SHOULD be chosen to
|
|
|
+ divide evenly into a 24-hour day.
|
|
|
+
|
|
|
+ Authorities MUST take pains to ensure that their clocks remain accurate,
|
|
|
+ for example by running NTP.
|
|
|
+
|
|
|
+ The first voting period of each day begins at 00:00 (midnight) GMT. If
|
|
|
+ the last period of the day would be truncated by one-half or more, it is
|
|
|
+ merged with the second-to-last period.
|
|
|
+
|
|
|
+ An authority SHOULD publish its vote immediately at the start of each voting
|
|
|
+ period. It does this by making it available at
|
|
|
+ http://<hostname>/tor/status-vote/current/authority.z
|
|
|
+ and sending it in an HTTP POST request to each other authority at the URL
|
|
|
+ http://<hostname>/tor/post/vote
|
|
|
+
|
|
|
+ If, N minutes after the voting period has begun, an authority does not have
|
|
|
+ a current statement from another authority, the first authority retrieves
|
|
|
+ the other's statement.
|
|
|
+
|
|
|
+ Once an authority has a vote from another authority, it makes it available
|
|
|
+ at
|
|
|
+ http://<hostname>/tor/status-vote/current/<fp>.z
|
|
|
+ where <fp> is the fingerprint of the other authority's identity key.
|
|
|
+
|
|
|
+ The consensus status, along with as many signatures as the server
|
|
|
+ currently knows, should be available at
|
|
|
+ http://<hostname>/tor/status-vote/current/consensus.z
|
|
|
+ All of the detached signatures it knows for consensus status should be
|
|
|
+ available at:
|
|
|
+ http://<hostname>/tor/status-vote/current/consensus-signatures.z
|
|
|
+
|
|
|
+ Once an authority has computed and signed a consensus network status, it
|
|
|
+ should send its detached signature to each other authority in an HTTP POST
|
|
|
+ request to the URL:
|
|
|
+ http://<hostname>/tor/post/consensus-signature
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+[XXXX CUTOFF HERE. STUFF BELOW THIS POINT HAS NOT YET BEEN UPDATED FROM V2.]
|
|
|
+
|
|
|
+4.3. Downloading consensus status documents (authorities caches only)
|
|
|
|
|
|
All directory servers (authorities and mirrors) try to keep a fresh
|
|
|
set of network-status documents from every authority. To do so,
|