Clarify current client behavior WRT TLS certificates. Add a TODO to make sure that...
[torspec/rransom.git] / proposals / 098-todo.txt
blobe891ea890c81efc2eaada6d2751047adf7a8a857
1 Filename: 098-todo.txt
2 Title: Proposals that should be written
3 Version: $Revision$
4 Last-Modified: $Date$
5 Author: Nick Mathewson, Roger Dingledine
6 Created: 26-Jan-2007
7 Status: Meta
9 Overview:
11    This document lists ideas that various people have had for improving the
12    Tor protocol.  These should be implemented and specified if they're
13    trivial, or written up as proposals if they're not.
15    This is an active document, to be edited as proposals are written and as
16    we come up with new ideas for proposals.  We should take stuff out as it
17    seems irrelevant.
20 For some later protocol version.
22   - It would be great to get smarter about identity and linkability.
23     It's not crazy to say, "Never use the same circuit for my SSH
24     connections and my web browsing."  How far can/should we take this?
25     See ideas/xxx-separate-streams-by-port.txt for a start.
27   - Fix onionskin handshake scheme to be more mainstream, less nutty.
28     Can we just do
29         E(HMAC(g^x), g^x) rather than just E(g^x) ?
30     No, that has the same flaws as before. We should send
31         E(g^x, C) with random C and expect g^y, HMAC_C(K=g^xy).
32     Better ask Ian; probably Stephen too.
34   - Length on CREATE and friends
36   - Versioning on circuits and create cells, so we have a clear path
37     to improve the circuit protocol.
39   - SHA1 is showing its age.  We should get a design for upgrading our
40     hash once the AHS competition is done, or even sooner.
42   - Not being able to upgrade ciphersuites or increase key lengths is
43     lame.
44   - Paul has some ideas about circuit creation; read his PET paper once it's
45     out.
47 Any time:
49   - Some ideas for revising the directory protocol:
50     - Extend the "r" line in network-status to give a set of buckets (say,
51       comma-separated) for that router.
52       - Buckets are deterministic based on IP address.
53       - Then clients can choose a bucket (or set of buckets) to
54         download and use.
55     - We need a way for the authorities to declare that nodes are in a
56       family.  Also, it kinda sucks that family declarations use O(N^2) space
57       in the descriptors.
58   - REASON_CONNECTFAILED should include an IP.
59   - Spec should incorporate some prose from tor-design to be more readable.
60   - Spec when we should rotate which keys
61   - Spec how to publish descriptors less often
62   - Describe pros and cons of non-deterministic path lengths
64   - We should use a variable-length path length by default -- 3 +/- some
65     distribution. Need to think harder about allowing values less than 3,
66     and there's a tradeoff between having a wide variance and performance.
68   - Clients currently use certs during TLS.  Is this wise?  It does make it
69     easier for servers to tell which NATted client is which. We could use a
70     seprate set of certs for each guard, I suppose, but generating so many
71     certs could get expensive.  Omitting them entirely would make OP->OR
72     easier to tell from OR->OR.
74 Things that should change...
76 B.1. ... but which will require backward-incompatible change
78   - Circuit IDs should be longer.
79   . IPv6 everywhere.
80   - Maybe, keys should be longer.
81     - Maybe, key-length should be adjustable.  How to do this without
82       making anonymity suck?
83   - Drop backward compatibility.
84   - We should use a 128-bit subgroup of our DH prime.
85   - Handshake should use HMAC.
86   - Multiple cell lengths.
87   - Ability to split circuits across paths (If this is useful.)
88   - SENDME windows should be dynamic.
90   - Directory
91      - Stop ever mentioning socks ports
93 B.1. ... and that will require no changes
95    - Advertised outbound IP?
96    - Migrate streams across circuits.
97    - Fix bug 469 by limiting the number of simultaneous connections per IP.
99 B.2. ... and that we have no idea how to do.
101    - UDP (as transport)
102    - UDP (as content)
103    - Use a better AES mode that has built-in integrity checking,
104      doesn't grow with the number of hops, is not patented, and
105      is implemented and maintained by smart people.
107 Let onion keys be not just RSA but maybe DH too, for Paul's reply onion
108 design.