aboutsummaryrefslogtreecommitdiff
path: root/proposals/ideas
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-12-14 23:22:21 -0500
committerNick Mathewson <nickm@torproject.org>2010-12-14 23:22:21 -0500
commit6c19a242d69e078dce81941a395314d8d9f48429 (patch)
tree75580aeb3c70ac8221514bb582d94742a6c3011a /proposals/ideas
parent34ecac0fbac7f476bfcbf813767721fada62c17e (diff)
downloadtorspec-6c19a242d69e078dce81941a395314d8d9f48429.tar.gz
torspec-6c19a242d69e078dce81941a395314d8d9f48429.zip
Add start of rransom's notes on tor crypto requirements
Diffstat (limited to 'proposals/ideas')
-rw-r--r--proposals/ideas/xxx-crypto-requirements.txt83
1 files changed, 83 insertions, 0 deletions
diff --git a/proposals/ideas/xxx-crypto-requirements.txt b/proposals/ideas/xxx-crypto-requirements.txt
new file mode 100644
index 0000000..6e03523
--- /dev/null
+++ b/proposals/ideas/xxx-crypto-requirements.txt
@@ -0,0 +1,83 @@
+
+This draft is intended to specify the meaning of ‘secure’ for a Tor
+circuit protocol, hopefully in enough detail that
+mathematically-inclined cryptographers can use this definition to
+prove that a Tor circuit protocol (or component thereof) is secure
+under reasonably well-accepted assumptions.
+
+Tor's current circuit protocol consists of the CREATE, CREATED, RELAY,
+DESTROY, CREATE_FAST, CREATED_FAST, and RELAY_EARLY cells (including
+all subtypes of RELAY and RELAY_EARLY cells). Tor currently has two
+circuit-extension handshake protocols: one consists of the CREATE and
+CREATED cells; the other, used only over the TLS connection to the
+first node in a circuit, consists of the CREATE_FAST and CREATED_FAST
+cells.
+
+
+
+1. Every circuit-extension handshake protocol must provide forward
+secrecy -- the protocol must allow both the client and the relay to
+destroy, immediately after a circuit is closed, enough key material
+that no attacker who can eavesdrop on all handshake and circuit cells
+and who can seize and inspect the client and relay after the circuit
+is closed will be able to decrypt any non-handshake data sent along
+the circuit.
+
+In particular, the protocol must not require that a key which can be
+used to decrypt non-handshake data be stored for a predetermined
+period of time, as such a key must be written to persistent storage.
+
+
+
+2. Every circuit-extension handshake protocol must specify what key
+material must be used only once in order to allow unlinkability of
+circuit-extension handshakes.
+
+
+
+3. Every circuit-extension handshake protocol must authenticate the relay
+to the client -- an attacker who can eavesdrop on all handshake and
+circuit cells and who can participate in handshakes with the client
+must not be able to determine a symmetric session key that a circuit
+will use without either knowing a secret key corresponding to a
+handshake-authentication public key published by the relay or breaking
+a cryptosystem for which the relay published a
+handshake-authentication public key.
+
+
+
+4. Every circuit-extension handshake protocol must ensure that neither
+the client nor the relay can cause the handshake to result in a
+predetermined symmetric session key.
+
+
+
+5. Every circuit-extension handshake protocol should ensure that an
+attacker who can predict the relay's ephemeral secret input to the
+handshake and can eavesdrop on all handshake and circuit cells, but
+does not know a secret key corresponding to the
+handshake-authentication public key used in the handshake, cannot
+break the handshake-authentication public key's cryptosystem, and
+cannot predict the client's ephemeral secret input to the handshake,
+cannot predict the symmetric session keys used for the resulting
+circuit.
+
+
+
+6. The circuit protocol must specify an end-to-end flow-control
+mechanism, and must allow for the addition of new mechanisms.
+
+
+
+7. The circuit protocol should specify the statistics to be exchanged
+between circuit endpoints in order to support end-to-end flow control,
+and should specify how such statistics can be verified.
+
+
+
+8. The circuit protocol should allow an endpoint to verify that the other
+endpoint is participating in an end-to-end flow-control protocol
+honestly.
+
+
+