diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-05-17 11:03:16 -0400 |
---|---|---|
committer | George Kadianakis <desnacked@riseup.net> | 2019-05-27 14:20:07 +0300 |
commit | 0bc1241494a118d5319207a9f4683b993d389e77 (patch) | |
tree | 64d010086cf5f330dd1fcceaf9ad39b9364b6a09 /src/core/or/circuitlist.h | |
parent | 530d1179ffe54ad0db2678142154fdd20f71cf53 (diff) | |
download | tor-0bc1241494a118d5319207a9f4683b993d389e77.tar.gz tor-0bc1241494a118d5319207a9f4683b993d389e77.zip |
Make sure that we send at least some random data in RELAY_DATA cells
Proposal 289 prevents SENDME-flooding by requiring the other side to
authenticate the data it has received. But this data won't actually
be random if they are downloading a known resource. "No problem",
we said, "let's fell the empty parts of our cells with some
randomness!" and we did that in #26871.
Unfortunately, if the relay data payloads are all completely full,
there won't be any empty parts for us to randomize.
Therefore, we now pick random "randomness windows" between
CIRCWINDOW_INCREMENT/2 and CIRCWINDOW_INCREMENT. We remember whether we have
sent a cell containing at least 16 bytes of randomness in that window. If we
haven't, then when the window is exhausted, we send one. (This window approach
is designed to lower the number of rng checks we have to do. The number 16 is
pulled out of a hat to change the attacker's guessing difficulty to
"impossible".)
Implements 28646.
Diffstat (limited to 'src/core/or/circuitlist.h')
-rw-r--r-- | src/core/or/circuitlist.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/or/circuitlist.h b/src/core/or/circuitlist.h index 6f5fce4875..80c1f7ac4e 100644 --- a/src/core/or/circuitlist.h +++ b/src/core/or/circuitlist.h @@ -218,7 +218,7 @@ void circuit_mark_all_dirty_circs_as_unusable(void); void circuit_synchronize_written_or_bandwidth(const circuit_t *c, circuit_channel_direction_t dir); MOCK_DECL(void, circuit_mark_for_close_, (circuit_t *circ, int reason, - int line, const char *file)); + int line, const char *cfile)); int circuit_get_cpath_len(origin_circuit_t *circ); int circuit_get_cpath_opened_len(const origin_circuit_t *); void circuit_clear_cpath(origin_circuit_t *circ); |