This should be impossible because of the layered encryption, but some documentation suggests that this can somehow be done.

From Section 5.6 [1] of tor's specification

When speaking v2 of the link protocol or later, clients MUST only send EXTEND cells inside RELAY_EARLY cells. Clients SHOULD send the first ~8 RELAY cells that are not targeted at the first hop of any circuit as RELAY_EARLY cells too, in order to partially conceal the circuit length.

RELAY_EARLY cells were introduced to prevent arbitrary-length circuits to be established, as described in proposal 110 [2]. But even that one does not provide a reliable answer.

So why 'partially conceal'? How could a middle-node of a circuit gain information about circuit's length? Is there any more research about this available somewhere?

[1] Section 5.6 [2] Proposal 110

1 Answer 1


The answer is in one of the links you referred to:

Security implications:

The upside is that this limits the bandwidth amplification factor to K: for an individual circuit to become arbitrary-length, the attacker would need an adversary-controlled node every K hops, and at that point the attack is no worse than if the attacker creates N/K separate K-hop circuits.

So since, the circuit has a limit on the maximum number of hops now, the clients should send RELAY cells at the first hop (that may be used as EXTEND cells by RELAY_EARLY cells later in the circuit), as to obscure more the final length of the circuit. So the meaning of "partially conceal" is not making it less secure. It is because the actual concept make it easier for the attacker to guess the circuit length (or at least be right sometimes in one of his guesses) unless the client names more RELAY cells at the beginning (that may be used or dropped in the circuit) to throw the attacker off.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.