mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 02:09:24 +01:00
add future task list to todo
svn:r1842
This commit is contained in:
parent
6168b3222e
commit
07871a8a2c
123
doc/TODO
123
doc/TODO
@ -13,10 +13,10 @@ ARMA - arma claims
|
||||
|
||||
|
||||
For September:
|
||||
- Windows port
|
||||
- works as client
|
||||
. Windows port
|
||||
o works as client
|
||||
- deal with pollhup / reached_eof on all platforms
|
||||
- robust as a client
|
||||
. robust as a client
|
||||
- works as server
|
||||
- can be configured
|
||||
- robust as a server
|
||||
@ -29,8 +29,8 @@ For September:
|
||||
cons of using it, why should I use it, etc.
|
||||
- a howto tutorial with examples
|
||||
- tutorial: how to set up your own tor network
|
||||
- (need to not hardcore dirservers file in config.c)
|
||||
- correct, update, polish spec
|
||||
- (need to not hardcode dirservers file in config.c)
|
||||
. correct, update, polish spec
|
||||
- document the exposed function api?
|
||||
- document what we mean by socks.
|
||||
|
||||
@ -78,29 +78,106 @@ Other details and small and hard things:
|
||||
. Refactor: add own routerinfo to routerlist. Right now, only
|
||||
router_get_by_nickname knows about 'this router', as a hack to
|
||||
get circuit_launch_new to do the right thing.
|
||||
|
||||
Rendezvous service:
|
||||
- preemptively build and start rendezvous circs
|
||||
- preemptively build n-1 hops of intro circs?
|
||||
- cannibalize general circs?
|
||||
- fix router_get_by_* functions so they can get ourselves too,
|
||||
and audit everything to make sure rend and intro points are
|
||||
just as likely to be us as not.
|
||||
|
||||
In the distant future:
|
||||
. Scrubbing proxies
|
||||
- Find an smtp proxy?
|
||||
. Get socks4a support into Mozilla
|
||||
- migrate to using IPv6 sizes everywhere
|
||||
- handle half-open tcp conns
|
||||
- Extend by nickname/hostname/something, not by IP.
|
||||
- Need a relay teardown cell, separate from one-way ends.
|
||||
- Make it harder to circumvent bandwidth caps: look at number of bytes
|
||||
sent across sockets, not number sent inside TLS stream.
|
||||
- Look at having smallcells and largecells
|
||||
D Advanced directory servers
|
||||
D Automated reputation management
|
||||
D Figure out how to do threshold directory servers
|
||||
D jurisdiction info in dirserver entries? other info?
|
||||
X On the fly compression of each stream
|
||||
- fix router_get_by_* functions so they can get ourselves too,
|
||||
and audit everything to make sure rend and intro points are
|
||||
just as likely to be us as not.
|
||||
|
||||
|
||||
|
||||
***************************Future tasks:****************************
|
||||
|
||||
Rendezvous and hidden services:
|
||||
make it fast:
|
||||
- preemptively build and start rendezvous circs.
|
||||
- preemptively build n-1 hops of intro circs?
|
||||
- cannibalize general circs?
|
||||
make it reliable:
|
||||
- standby/hotswap/redundant services.
|
||||
- store stuff to disk? dirservers forget service descriptors when
|
||||
they restart; nodes offering hidden services forget their chosen
|
||||
intro points when they restart.
|
||||
make it robust:
|
||||
- auth mechanisms to let midpoint and bob selectively choose
|
||||
connection requests.
|
||||
make it scalable:
|
||||
- right now the hidserv store/lookup system is run by the dirservers;
|
||||
this won't scale.
|
||||
|
||||
Tor scalability:
|
||||
Relax clique assumptions.
|
||||
Redesign how directories are handled.
|
||||
- Separate running-routers lookup from descriptor list lookup.
|
||||
- Resolve directory agreement somehow.
|
||||
- Cache directory on all servers.
|
||||
Find and remove bottlenecks
|
||||
- Address linear searches on e.g. circuit and connection lists.
|
||||
Reputation/memory system, so dirservers can measure people,
|
||||
and so other people can verify their measurements.
|
||||
- Need to measure via relay, so it's not distinguishable.
|
||||
Bandwidth-aware path selection. So people with T3's are picked
|
||||
more often than people with DSL.
|
||||
Reliability-aware node selection. So people who are stable are
|
||||
preferred for long-term circuits such as intro and rend circs,
|
||||
and general circs for irc, aim, ssh, etc.
|
||||
Let dissidents get to Tor servers via Tor users. ("Backbone model")
|
||||
|
||||
Anonymity improvements:
|
||||
Is abandonding the circuit the only option when an extend fails, or
|
||||
can we do something without impacting anonymity too much?
|
||||
Is exiting from the middle of the circuit always a bad idea?
|
||||
Helper nodes. Decide how to use them to improve safety.
|
||||
DNS resolution: need to make tor support resolve requests. Need to write
|
||||
a script and an interface (including an extension to the socks
|
||||
protocol) so we can ask it to do resolve requests. Need to patch
|
||||
tsocks to intercept gethostbyname, else we'll continue leaking it.
|
||||
Improve path selection algorithms based on routing-zones paper. Be sure
|
||||
to start and end circuits in different ASs. Ideally, consider AS of
|
||||
source and destination -- maybe even enter and exit via nearby AS.
|
||||
Intermediate model, with some delays and mixing.
|
||||
Add defensive dropping regime?
|
||||
|
||||
Make it more correct:
|
||||
Handle half-open connections: right now we don't support all TCP
|
||||
streams, at least according to the protocol. But we handle all that
|
||||
we've seen in the wild.
|
||||
Support IPv6.
|
||||
|
||||
Efficiency/speed/robustness:
|
||||
Congestion control. Is our current design sufficient once we have heavy
|
||||
use? Need to measure and tweak, or maybe overhaul.
|
||||
Allow small cells and large cells on the same network?
|
||||
Cell buffering and resending. This will allow us to handle broken
|
||||
circuits as long as the endpoints don't break, plus will allow
|
||||
connection (tls session key) rotation.
|
||||
Implement Morphmix, so we can compare its behavior, complexity, etc.
|
||||
Use cpuworker for more heavy lifting.
|
||||
- Signing (and verifying) hidserv descriptors
|
||||
- Signing (and verifying) intro/rend requests
|
||||
- Signing (and verifying) router descriptors
|
||||
- Signing (and verifying) directories
|
||||
- Doing TLS handshake (this is very hard to separate out, though)
|
||||
Buffer size pool: allocate a maximum size for all buffers, not
|
||||
a maximum size for each buffer. So we don't have to give up as
|
||||
quickly (and kill the thickpipe!) when there's congestion.
|
||||
Exit node caching: tie into squid or other caching web proxy.
|
||||
Other transport. HTTP, udp, rdp, airhook, etc. May have to do our own
|
||||
link crypto, unless we can bully openssl into it.
|
||||
|
||||
P2P Tor:
|
||||
Do all the scalability stuff above, first.
|
||||
Incentives to relay. Not so hard.
|
||||
Incentives to allow exit. Possibly quite hard.
|
||||
Sybil defenses without having a human bottleneck.
|
||||
How to gather random sample of nodes.
|
||||
How to handle nodelist recommendations.
|
||||
Consider incremental switches: a p2p tor with only 50 users has
|
||||
different anonymity properties than one with 10k users, and should
|
||||
be treated differently.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user