tor/doc/TODO

186 lines
8.6 KiB
Plaintext
Raw Normal View History

Legend:
SPEC!! - Not specified
SPEC - Spec not finalized
NICK - nick claims
ARMA - arma claims
- Not done
* Top priority
. Partially done
o Done
D Deferred
X Abandoned
. streams / circuits
o Implement streams
o Rotate circuits after N minutes?
X Circuits should expire when circuit->expire triggers
NICK . Handle half-open connections
o Figure out what causes connections to close, standardize
when we mark a connection vs when we tear it down
o Look at what ssl does to keep from mutating data streams
2003-08-31 02:11:01 +02:00
ARMA - Reduce streamid footprint from 7 bytes to 2 bytes
- Check for collisions in streamid (now possible with
just 2 bytes), and back up & replace with padding if so
- Use the 3 saved bytes to put pseudorandomness in each relay cell
- Use the 4 reserved bytes in each cell header to keep 1/5
2003-08-31 02:11:01 +02:00
of a sha1 of the relay payload (move into stream header)
- Move length into the stream header too
- Spec the stream_id stuff. Clarify that nobody on the backward
stream should look at stream_id.
ARMA . Exit policies
o Spec how to write the exit policies
- Path selection algorithms
- Let user request certain nodes
- And disallow certain nodes
D Choose path by jurisdiction, etc?
- Make relay end cells have failure status and payload attached
- Streams that fail due to exit policy must reextend to new node
- Add extend_wait state to edge connections, thumb through them
when the AP get an extended cell.
SPEC!! D Non-clique topologies
D Implement our own memory management, at least for common structs
. Appropriate logging
- Come up with convention for what log level means what
- Make code follow convention
. Put CPU workers in separate processes
o Handle multiple cpu workers (one for each cpu, plus one)
o Queue for pending tasks if all workers full
o Support the 'process this onion' task
2003-08-31 02:11:01 +02:00
NICK - Support the 'decrypt this RSA blob' handshake1 task
- Merge dnsworkers and cpuworkers to some extent
- Handle cpuworkers dying
D Support later handshake parts
2003-08-31 02:11:01 +02:00
o Simple directory servers
o Include key in source; sign directories
o Signed directory backend
o Document
o Integrate
2003-08-31 02:11:01 +02:00
o Add versions to code
o Have directories list recommended-versions
o Include (unused) line in directories
o Check for presence of line.
2003-08-31 02:11:01 +02:00
o Quit if running the wrong version
o Command-line option to override quit
o Add more information to directory server entries
o Exit policies
2003-08-31 02:11:01 +02:00
- More directory servers
- Add in long-term nicknames
- Give normal routers signing keys
- Let dirservers keep only {nickname, signingkey} in routers.or
- dirport needs to accept 'post' requests
for routers submitting (signed) new entries
- routers submit new entries periodically
- dirserver checks signature
D client checks signature?
D Advanced directory servers
D Automated reputation management
SPEC!! D Figure out how to do threshold directory servers
2003-08-31 02:11:01 +02:00
D jurisdiction info in dirserver entries? other info?
. Scrubbing proxies
- Find an smtp proxy?
- Check the old smtp proxy code
o Find an ftp proxy? wget --passive
D Wait until there are packet redirectors for Linux
. Get socks4a support into Mozilla
. Get tor to act like a socks server
o socks4, socks4a
D socks5
SPEC!! - Handle socks commands other than connect, eg, bind?
. Develop rendezvous points
2003-08-31 02:11:01 +02:00
o Design
- Spec
- Implement
D Deploy and manage open source development site.
. Documentation
2003-05-07 04:02:52 +02:00
o Discussion of socks, tsocks, etc
o On-the-network protocol
o Onions
o Cells
. Better comments for functions!
- Tests
o Testing harness/infrastructure
NICK . Unit tests
D System tests (how?)
- Performance tests, so we know when we've improved
. webload infrastructure (Bruce)
. httperf infrastructure (easy to set up)
. oprofile (installed in RH >8.0)
D Deploy a widespread network
2003-08-31 02:11:01 +02:00
D Load balancing between router twins
D Keep track of load over links/nodes, to
know who's hosed
NICK . Daemonize and package
o Teach it to fork and background
- Red Hat spec file
- Debian spec file equivalent
. Autoconf
. Which .h files are we actually using?
. Port to:
o Linux
o BSD
. Solaris
o Cygwin
2003-08-31 02:11:01 +02:00
o Win32
o OS X
o openssl randomness
o inet_ntoa
. stdint.h
- Make a script to set up a local network on your machine
D Move away from openssl
o Abstract out crypto calls
D Look at nss, others? Just include code?
2003-08-31 02:11:01 +02:00
o Clearer bandwidth management
o Do we want to remove bandwidth from OR handshakes?
o What about OP handshakes?
- More flexibility in node addressing
D Support IPv6 rather than just 4
- Handle multihomed servers (config variable to set IP)
2003-05-07 04:02:52 +02:00
. Move from onions to ephemeral DH
o incremental path building
2003-05-28 08:36:49 +02:00
o transition circuit-level sendmes to hop-level sendmes
o implement truncate, truncated
o move from 192byte DH to 128byte DH, so it isn't so damn slow
2003-05-07 04:02:52 +02:00
- exiting from not-last hop
- OP logic to decide to extend/truncate a path
- make sure exiting from the not-last hop works
- logic to find last *open* hop, not last hop, in cpath
- choose exit nodes by exit policies
Older (done) todo stuff:
o Use a stronger cipher
o aes now, by including the code ourselves
X On the fly compression of each stream
o Clean up the event loop (optimize and sanitize)
o Remove that awful concept of 'roles'
o Terminology
o Circuits, topics, cells stay named that
o 'Connection' gets divided, or renamed, or something?
o DNS farm
o Distribute queries onto the farm, get answers
o Preemptively grow a new worker before he's needed
o Prune workers when too many are idle
o DNS cache
o Clear DNS cache over time
D Honor DNS TTL info (how??)
o Have strategy when all workers are busy
o Keep track of which connections are in dns_wait
o Need to cache positives/negatives on the tor side
o Keep track of which queries have been asked
o Better error handling when
o An address doesn't resolve
o We have max workers running
o Consider taking the master out of the loop?
D Implement reply onions
o Total rate limiting
o Look at OR handshake in more detail
o Spec it
o Merge OR and OP handshakes
o rearrange connection_or so it doesn't suck so much to read
D Periodic link key rotation. Spec?
2003-05-28 08:36:49 +02:00
o wrap malloc with something that explodes when it fails
o Clean up the number of places that get to look at prkey