r19275@catbus: nickm | 2008-04-09 16:24:35 -0400

Sort deferred-from-0.2.0 items.


svn:r14335
This commit is contained in:
Nick Mathewson 2008-04-09 20:31:54 +00:00
parent 4901ee0a8c
commit e26c1dcba7

183
doc/TODO
View File

@ -234,8 +234,22 @@ For 0.2.1.x:
- 134: handle authority fragmentation. - 134: handle authority fragmentation.
- Proposals to write: - Proposals to write:
- Multilayered guards to keep bridges hidden. - Do we want to maintain our own set of entryguards that we use as
next hop after the bridge?
- Add an 'exit-address' line in the descriptor for servers that exit
from something that isn't their published address.
- Proposal to supersede 117 by adding IPv6 support for exits and entries. - Proposal to supersede 117 by adding IPv6 support for exits and entries.
- Internal code support for ipv6:
o Clone ipv6 functions (inet_ntop, inet_pton) where they don't exist.
- Most address variables need to become tor_addr_t
- Teach resolving code how to handle ipv6.
- Teach exit policies about ipv6 (consider ipv4/ipv6 interaction!)
- 118: Listen on and advertise multiple ports:
- Tor should be able to have a pool of outgoing IP addresses that it is
able to rotate through. (maybe. Possible overlap with proposal 118.)
- config option to publish what ports you listen on, beyond
ORPort/DirPort. It should support ranges and bit prefixes (?) too.
(This is very similar to proposal 118.)
- Fix voting to handle bug 608 case when multiple servers get - Fix voting to handle bug 608 case when multiple servers get
Named. Named.
- Possibly: revise link protocol to allow big circuit IDs, - Possibly: revise link protocol to allow big circuit IDs,
@ -253,6 +267,7 @@ For 0.2.1.x:
still be valuable as a blocking-resistance step. still be valuable as a blocking-resistance step.
- Patch our tor.spec rpm package so it knows where to put the fallback - Patch our tor.spec rpm package so it knows where to put the fallback
consensus file. consensus file.
- Something for bug 469, to limit connections per IP.
- Tiny designs to write: - Tiny designs to write:
- Better estimate of clock skew; has anonymity implications. Clients - Better estimate of clock skew; has anonymity implications. Clients
@ -270,6 +285,8 @@ W - figure out license *
- Optimize cell pool allocation. - Optimize cell pool allocation.
- Support (or just always use) jemalloc - Support (or just always use) jemalloc
- mmap more files. - mmap more files.
- Use less bandwidth
- Use if-modified-since to download consensuses
- Handle multi-core cpus better - Handle multi-core cpus better
- Use information from NETINFO cells - Use information from NETINFO cells
- Don't extend a circuit over a noncanonical connection with - Don't extend a circuit over a noncanonical connection with
@ -291,6 +308,12 @@ W - figure out license *
- Get a "use less buffer ram" patch into openssl. * - Get a "use less buffer ram" patch into openssl. *
- Get IOCP patch into libevent * - Get IOCP patch into libevent *
- Security improvements
- make is-consensus-fresh-enough check way tighter.
- If we haven't tried downloading a consensus for ages since we're tired,
try getting a new one before we use old descriptors for a circuit.
Related to bug 401.
- Feature removals and deprecations: - Feature removals and deprecations:
- Get rid of the v1 directory stuff (making, serving, and caching) - Get rid of the v1 directory stuff (making, serving, and caching)
- First verify that the caches won't flip out? - First verify that the caches won't flip out?
@ -308,10 +331,19 @@ Nice to have for 0.2.1.x:
- Better support for private networks: figure out what is hard, and - Better support for private networks: figure out what is hard, and
make it easier. make it easier.
- Proposals to write
- steven's plan for replacing check.torproject.org with a built-in
answer by tor itself.
- Documentation - Documentation
P - Make documentation realize that location of system configuration file P - Make documentation realize that location of system configuration file
will depend on location of system defaults, and isn't always /etc/torrc. will depend on location of system defaults, and isn't always /etc/torrc.
- Small controller features
- A status event for when tor decides to stop fetching directory info
if the client hasn't clicked recently: then make the onion change too.
- Add a status event when new consensus arrives
- Windows build - Windows build
P - Figure out why dll's compiled in mingw don't work right in WinXP. P - Figure out why dll's compiled in mingw don't work right in WinXP.
P - create a "make win32-bundle" for vidalia-privoxy-tor-torbutton bundle P - create a "make win32-bundle" for vidalia-privoxy-tor-torbutton bundle
@ -325,6 +357,12 @@ P - create a "make win32-bundle" for vidalia-privoxy-tor-torbutton bundle
less magic and less control logic. less magic and less control logic.
- Don't call time(NULL) so much; instead have a static time_t field - Don't call time(NULL) so much; instead have a static time_t field
that gets updated only a handful of times per second. that gets updated only a handful of times per second.
- Move all status info out of routerinfo into local_routerstatus. Make
"who can change what" in local_routerstatus explicit. Make
local_routerstatus (or equivalent) subsume all places to go for "what
router is this?"
- deprecate router_digest_is_trusted_dir() in favor of
router_get_trusteddirserver_by_digest()
- Make Tor able to chroot itself - Make Tor able to chroot itself
o allow it to load an entire config file from control interface o allow it to load an entire config file from control interface
@ -344,6 +382,7 @@ P - create a "make win32-bundle" for vidalia-privoxy-tor-torbutton bundle
- Make 'safelogging' extend to info-level logs too. - Make 'safelogging' extend to info-level logs too.
- Interface for letting SOAT modify flags that authorities assign. - Interface for letting SOAT modify flags that authorities assign.
(How to keep the authority from clobbering them afterwords?
Later, unless people want to implement them now: Later, unless people want to implement them now:
- Actually use SSL_shutdown to close our TLS connections. - Actually use SSL_shutdown to close our TLS connections.
@ -351,10 +390,25 @@ Later, unless people want to implement them now:
[Nick: bridge authorities output a networkstatus that is missing [Nick: bridge authorities output a networkstatus that is missing
version numbers. This is inconvenient if we want to make sure version numbers. This is inconvenient if we want to make sure
bridgedb gives out bridges with certain characteristics. -RD] bridgedb gives out bridges with certain characteristics. -RD]
[Okay. Is this a separate item, or is it the same issue as the lack of
a "v" line in response to the controller GETINFO command? -NM]
- Let tor dir mirrors proxy connections to the tor download site, so - Let tor dir mirrors proxy connections to the tor download site, so
if you know a bridge you can fetch the tor software. if you know a bridge you can fetch the tor software.
- when somebody uses the controlport as an http proxy, give them - when somebody uses the controlport as an http proxy, give them
a "tor isn't an http proxy" error too like we do for the socks port. a "tor isn't an http proxy" error too like we do for the socks port.
- MAYBE kill stalled circuits rather than stalled connections. This is
possible thanks to cell queues, but we need to consider the anonymity
implications.
- Make resolves no longer use edge_connection_t unless they are actually
_on_ a socks connection: have edge_connection_t and (say)
dns_request_t both extend an edge_stream_t, and have p_streams and
n_streams both be linked lists of edge_stream_t.
- Generate torrc.{complete|sample}.in, tor.1.in, the HTML manual, and the
online config documentation from a single source.
- It would be potentially helpful to respond to https requests on
the OR port by acting like an HTTPS server.
- Make the timestamp granularity on logs configurable, with default
of "1 second". This might make some kinds of after-the-fact attack harder.
Can anybody remember why we wanted to do this and/or what it means? Can anybody remember why we wanted to do this and/or what it means?
- config option __ControllerLimit that hangs up if there are a limit - config option __ControllerLimit that hangs up if there are a limit
@ -362,18 +416,23 @@ Can anybody remember why we wanted to do this and/or what it means?
[This was mwenge's idea. The idea is that a Tor controller can [This was mwenge's idea. The idea is that a Tor controller can
"fill" Tor's controller slot quota, so jerks can't do cross-protocol "fill" Tor's controller slot quota, so jerks can't do cross-protocol
attacks like the http form attack. -RD] attacks like the http form attack. -RD]
- configurable timestamp granularity. defaults to 'seconds'. - Bridge issues
[This was Nick's idea. The idea to make the log timestamps much more . Ask all directory questions to bridge via BEGIN_DIR.
vague, so by default they don't help timing attacks much even if - use the bridges for dir fetches even when our dirport is open.
they're leaked. -RD] - drop 'authority' queries if they're to our own identity key; accept
them otherwise.
- give extend_info_t a router_purpose again
* * * *
- steven's plan for replacing check.torproject.org with a built-in If somebody wants to do this in some version, they should:
answer by tor itself. - Create packages for Nokia 800, requested by Chris Soghoian
- a status event for when tor decides to stop fetching directory info - More work on AvoidDiskWrites
if the client hasn't clicked recently: then make the onion change too. - Make DNSPort support TCP DNS.
* * * * Roger, please sort these: * * * *
- bridge communities with local bridge authorities: - bridge communities with local bridge authorities:
- clients who have a password configured decide to ask their bridge - clients who have a password configured decide to ask their bridge
authority for a networkstatus authority for a networkstatus
@ -382,102 +441,32 @@ Can anybody remember why we wanted to do this and/or what it means?
- Consider if we can solve: the Tor client doesn't know what flags - Consider if we can solve: the Tor client doesn't know what flags
its bridge has (since it only gets the descriptor), so it can't its bridge has (since it only gets the descriptor), so it can't
make decisions based on Fast or Stable. make decisions based on Fast or Stable.
- anonymity concern: since our is-consensus-fresh-enough check is - Bridge authorities should do reachability testing but only on the
sloppy so clients will actually work when a consensus wasn't formed, purpose==bridge descriptors they have.
does that mean that if users are idle for 5 hours and then click on - Some mechanism for specifying that we want to stop using a cached
something, we will immediately use the old descriptors we've got, bridge.
while we try fetching the newer descriptors?
related to bug 401. * * * *
- Create packages for Nokia 800, requested by Chris Soghoian
- Bridges: Removing these because they're tracked elsewhere:
. Bridges users (rudimentary version)
. Ask all directory questions to bridge via BEGIN_DIR.
- use the bridges for dir fetches even when our dirport is open.
- drop 'authority' queries if they're to our own identity key; accept
them otherwise.
- give extend_info_t a router_purpose again
d Limit to 2 dir, 2 OR, N SOCKS connections per IP.
- Or maybe close connections from same IP when we get a lot from one.
- Or maybe block IPs that connect too many times at once.
- we try to build 4 test circuits to break them over different - we try to build 4 test circuits to break them over different
servers. but sometimes our entry node is the same for multiple servers. but sometimes our entry node is the same for multiple
test circuits. this defeats the point. test circuits. this defeats the point.
[ TRACKED IN BUG 654 ]
d Limit to 2 dir, 2 OR, N SOCKS connections per IP.
- Or maybe close connections from same IP when we get a lot from one.
- Or maybe block IPs that connect too many times at once.
[ Same as bug 469 ]
- more strategies for distributing bridge addresses in a way that - more strategies for distributing bridge addresses in a way that
doesn't rely on knowing somebody who runs a bridge for you. doesn't rely on knowing somebody who runs a bridge for you.
- A way to adjust router status flags from the controller. (How do we [ In birdgedb TODO ]
prevent the authority from clobbering them soon afterward?)
- Bridge authorities should do reachability testing but only on the
purpose==bridge descriptors they have.
Deferred from 0.2.0.x:
- Proposals
o 101: Voting on the Tor Directory System (plus 103)
N - Use if-modified-since on consensus download
- Controller support
D GETINFO to get consensus
N - Event when new consensus arrives
- 113: Simplifying directory authority administration
- 110: prevent infinite-length circuits (phase one)
- 118: Listen on and advertise multiple ports:
- Tor should be able to have a pool of outgoing IP addresses that it is
able to rotate through. (maybe. Possible overlap with proposal 118.)
- config option to publish what ports you listen on, beyond
ORPort/DirPort. It should support ranges and bit prefixes (?) too.
(This is very similar to proposal 118.)
- 117: IPv6 Exits
- Internal code support for ipv6:
o Clone ipv6 functions (inet_ntop, inet_pton) where they don't exist.
- Most address variables need to become tor_addr_t
- Teach resolving code how to handle ipv6.
- Teach exit policies about ipv6 (consider ipv4/ipv6 interaction!)
- Features
- Let controller set router flags for authority to transmit, and for
client to use.
- add an 'exit-address' line in the descriptor for servers that exit
from something that isn't their published address.
- More work on AvoidDiskWrites?
- Features
- Make a TCP DNSPort
- Protocol work
- MAYBE kill stalled circuits rather than stalled connections. This is
possible thanks to cell queues, but we need to consider the anonymity
implications.
- Implement TLS shutdown properly when possible.
- Bugs
- If the client's clock is too far in the past, it will drop (or just not
try to get) descriptors, so it'll never build circuits.
- Refactoring
- Make resolves no longer use edge_connection_t unless they are actually
_on_ a socks connection: have edge_connection_t and (say)
dns_request_t both extend an edge_stream_t, and have p_streams and
n_streams both be linked lists of edge_stream_t.
- Generate torrc.{complete|sample}.in, tor.1.in, the HTML manual, and the
online config documentation from a single source.
- Move all status info out of routerinfo into local_routerstatus. Make
"who can change what" in local_routerstatus explicit. Make
local_routerstatus (or equivalent) subsume all places to go for "what
router is this?"
- Blocking/scanning-resistance
- It would be potentially helpful to respond to https requests on
the OR port by acting like an HTTPS server.
- Do we want to maintain our own set of entryguards that we use as
next hop after the bridge? Open research question; let's say no
for 0.2.0 unless we learn otherwise.
- Some mechanism for specifying that we want to stop using a cached
bridge.
- Build:
- Detect correct version of libraries from autoconf script.
======================================================================= =======================================================================
Future versions: Future versions:
- deprecate router_digest_is_trusted_dir() in favor of
router_get_trusteddirserver_by_digest()
- See also Flyspray tasks.
- See also all OPEN/ACCEPTED proposals.
- See also all items marked XXXX and FFFF in the code.
- Protocol: - Protocol:
- Our current approach to block attempts to use Tor as a single-hop proxy - Our current approach to block attempts to use Tor as a single-hop proxy