diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-11-05 18:15:42 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-11-05 18:15:42 +0000 |
commit | a7993ea2b6be56229875c72add469ab2c971d8c9 (patch) | |
tree | dff36203c7c68df86bf109b551a72b9605ce5bda | |
parent | b4a50343d739e6fea5ba70db07b4f47c5754049c (diff) | |
download | tor-a7993ea2b6be56229875c72add469ab2c971d8c9.tar.gz tor-a7993ea2b6be56229875c72add469ab2c971d8c9.zip |
r16408@catbus: nickm | 2007-11-05 10:02:39 -0500
Edit TODO: remove some completed items, add breakdown for 105+TLS task.
svn:r12379
-rw-r--r-- | doc/TODO | 103 |
1 files changed, 34 insertions, 69 deletions
@@ -21,58 +21,45 @@ Things we'd like to do in 0.2.0.x: licenses for other components of the bundles. - Before the feature freeze: (Nick) - o Support for preconfigured mirror lists - o Use a pre-shipped fallback consensus. - o Code to install a pre-defined fallback consensus - o Download consensuses (et al) via if-modified-since - o Implement backend support for sending if-modified-since - o Use it for consensuses. - D Use it for certificates - o base Guard flag on WFU rather than on MTBF. - o Change guard calculation - o Change dir-spec.txt - o What should we do about hosts that have been up for only 1 hour, - but have been up for 100% of that one hour? -NM - Perhaps the guard flag should only be assigned if the measurement - period for that server is at least some large period, like a - week; but ignore this exception if "most" servers have too-short - measurement periods. -RD D 118 if feasible and obvious D Maintain a skew estimate and use ftime consistently. - 105+TLS, if possible. - - 105 only - - Need to get a finished proposal 105 - o "Pick a version" function - o Have a 'waiting_for_version' state. - o Store version in or_connection_t. - o Generate netinfo cells - o Accept netinfo cells - . Add an is_canonical field to or_connection_t. - o Set it when we get a match in the netinfo. - o Set it when we get a match for a routerinfo we have. - - Don't extend a circuit over a noncanonical connection with - mismatched address. - o Version negotiation: send a version cell and enter - waiting-for-version; when version cell arrives, pick version - and send netinfo and be "open". - o On netinfo, warn if there's skew from a server. + - Add a separate handshake structure that handles version negotiation, + and stores netinfo data until authentication is done. + - Revise versions and netinfo to use separate structure; make + act-on-netinfo logic separate so it can get called _after_ + negotiation. + - CERT cells + - functions to parse x509 certs + - functions to validate a single x509 cert against a TLS connection + - functions to validate a chain of x509 certs, and extract a PK. + - Parse CERT cells + - Generate CERT cells + - Keep copies of X509 certs around, not necessarily associated with + connection. + - LINK_AUTH cells + - Code to generate + - Code to parse and check + - Unit tests + - Revised handshake: TLS + - Server checks for new cipher types, and if it finds them, sends + only one cert and does not ask for client certs. + - Client sends certs only if server asks for them. + - Client sends new cipher list. + - Client sends correct extension list. + - Revised handshake: post-TLS. + - If in 'handshaking' state (since v2+ conn is in use), accept + VERSIONS and NETINFO and CERT and LINK_AUTH. + - After we send NETINFO, send CERT and LINK_AUTH if needed. + - Once we get a good LINK_AUTH, the connection is OPEN. + - Ban most cell types on a non-OPEN connection. + - NETINFO fallout + - Don't extend a circuit over a noncanonical connection with + mismatched address. - Learn our outgoing IP address from netinfo cells? + - Protocol revision. - Earliest stages of 110 (infinite-length) in v2 protocol: add support for RELAY_EARLY. - - TLS only - - Need to get a finished TLS normalization proposal - - Revised authentication. - - Revised handshake. - - Have a 'waiting_for_authentication' state. - - Only do version negotiation if we use the normalized TLS. - o Skew issues: - o if you load (nick says receive/set/anything) a consensus that's - in the future, then log about skew. - o should change the "skew complaint" to specify in largest units - rather than just seconds. - o Learn new authority IPs from consensus/certs. - o karsten's patches - - Before the feature freeze: (Roger) - Make tunnelled dir conns use begin_dir if enabled - make bridge users fall back from bridge authority to direct attempt @@ -114,15 +101,7 @@ Things we'd like to do in 0.2.0.x: - Proposals: o 101: Voting on the Tor Directory System (plus 103) - o Handle badly timed certificates properly. - o Start caching consensus documents once authorities make them; - start downloading consensus documents once caches serve - them - o Code to delay next download while fetching certificates to verify - a consensus we already got. - o Code to retry consensus download if we got one we already have. - D Use if-modified-since on consensus download - o Use if-modified-since on certificate download + D Use if-modified-since on consensus download - Controller support - GETINFO to get consensus - Event when new consensus arrives @@ -142,7 +121,6 @@ Things we'd like to do in 0.2.0.x: - Handle rate-limiting on directory writes to linked directory connections in a more sensible manner. - Find more ways to test this. - o Do TLS rotation less often than "every 10 minutes" in the thrashy case. D Do TLS connection rotation more often than "once a week" in the extra-stable case. D Streamline how we pick entry nodes: Make choose_random_entry() have @@ -193,19 +171,6 @@ R - drop 'authority' queries if they're to our own identity key; accept - Audit how much RAM we're using for buffers and cell pools; try to trim down a lot. - Base relative control socket paths on datadir. - o We should ship with a list of stable dir mirrors -- they're not - trusted like the authorities, but they'll provide more robustness - and diversity for bootstrapping clients. - X Implement this as a list of routerstatus, like fake_routerstatus in - trusted_dir_derver_t? - o Implemented as a fallback networkstatus consensus. - o Better estimates in the directory of whether servers have good uptime - (high expected time to failure) or good guard qualities (high - fractional uptime). - o AKA Track uptime as %-of-time-up, as well as time-since-last-down - o Implement tracking - o Make uptime info persist too. - o Base Guard on weighted fractional uptime. - Make TrackHostExits expire TrackHostExitsExpire seconds after their *last* use, not their *first* use. - Limit to 2 dir, 2 OR, N SOCKS connections per IP. |