xxx-crypto-requirements.txt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. Title: Requirements for Tor's circuit cryptography
  2. Author: Robert Ransom
  3. Created: 12 December 2010
  4. Overview
  5. This draft is intended to specify the meaning of 'secure' for a Tor
  6. circuit protocol, hopefully in enough detail that
  7. mathematically-inclined cryptographers can use this definition to
  8. prove that a Tor circuit protocol (or component thereof) is secure
  9. under reasonably well-accepted assumptions.
  10. Tor's current circuit protocol consists of the CREATE, CREATED, RELAY,
  11. DESTROY, CREATE_FAST, CREATED_FAST, and RELAY_EARLY cells (including
  12. all subtypes of RELAY and RELAY_EARLY cells). Tor currently has two
  13. circuit-extension handshake protocols: one consists of the CREATE and
  14. CREATED cells; the other, used only over the TLS connection to the
  15. first node in a circuit, consists of the CREATE_FAST and CREATED_FAST
  16. cells.
  17. Requirements
  18. 1. Every circuit-extension handshake protocol must provide forward
  19. secrecy -- the protocol must allow both the client and the relay to
  20. destroy, immediately after a circuit is closed, enough key material
  21. that no attacker who can eavesdrop on all handshake and circuit cells
  22. and who can seize and inspect the client and relay after the circuit
  23. is closed will be able to decrypt any non-handshake data sent along
  24. the circuit.
  25. In particular, the protocol must not require that a key which can be
  26. used to decrypt non-handshake data be stored for a predetermined
  27. period of time, as such a key must be written to persistent storage.
  28. 2. Every circuit-extension handshake protocol must specify what key
  29. material must be used only once in order to allow unlinkability of
  30. circuit-extension handshakes.
  31. 3. Every circuit-extension handshake protocol must authenticate the relay
  32. to the client -- an attacker who can eavesdrop on all handshake and
  33. circuit cells and who can participate in handshakes with the client
  34. must not be able to determine a symmetric session key that a circuit
  35. will use without either knowing a secret key corresponding to a
  36. handshake-authentication public key published by the relay or breaking
  37. a cryptosystem for which the relay published a
  38. handshake-authentication public key.
  39. 4. Every circuit-extension handshake protocol must ensure that neither
  40. the client nor the relay can cause the handshake to result in a
  41. predetermined symmetric session key.
  42. 5. Every circuit-extension handshake protocol should ensure that an
  43. attacker who can predict the relay's ephemeral secret input to the
  44. handshake and can eavesdrop on all handshake and circuit cells, but
  45. does not know a secret key corresponding to the
  46. handshake-authentication public key used in the handshake, cannot
  47. break the handshake-authentication public key's cryptosystem, and
  48. cannot predict the client's ephemeral secret input to the handshake,
  49. cannot predict the symmetric session keys used for the resulting
  50. circuit.
  51. 6. The circuit protocol must specify an end-to-end flow-control
  52. mechanism, and must allow for the addition of new mechanisms.
  53. 7. The circuit protocol should specify the statistics to be exchanged
  54. between circuit endpoints in order to support end-to-end flow control,
  55. and should specify how such statistics can be verified.
  56. 8. The circuit protocol should allow an endpoint to verify that the other
  57. endpoint is participating in an end-to-end flow-control protocol
  58. honestly.