[tor-dev] Shortcuts to data-heavy parts of the bootstrapping process

I was just at an event with a slow (but reliable) network and Tor was not able to connect; the “Loading relay descriptors” step just took too long.

At some point I got an error message that indicated that it was giving up but that I had enough information to connect to onion addresses. I can’t reproduce the problem now on a normal network, and I just went through the Tor code looking for the error message I saw, but I couldn’t find it.

But I figured I’d ask here to see if anyone was familiar with shortcuts Tor can take in its connection process that safely save time and bandwidth on slow connections if the only thing I intend to use Tor for is connecting to onion addresses.

Are there any steps in bootstrapping that can be skipped if I only care about making and receiving onion address connections?

Holmes

1 Like

At some point I got an error message that indicated that it was giving up but that I had enough information to connect to onion addresses. I can't reproduce the problem now on a normal network, and I just went through the Tor code looking for the error message I saw, but I couldn't find it.

It was probably this one:

But I figured I'd ask here to see if anyone was familiar with shortcuts Tor can take in its connection process that safely save time and bandwidth on slow connections if the only thing I intend to use Tor for is connecting to onion addresses.

For very throttled network connections, there is another long-standing
issue that people run into during bootstrapping:

Are there any steps in bootstrapping that can be skipped if I only care about making and receiving onion address connections?

Hm! I think the answer is "nothing easy that you can do currently."

You still need to learn about most of the relays in the network, in order
to make proper three-hop circuits on your side that are hard to predict
even for somebody who watches what subset of the directory information you
learn (this is a category of attacks known as 'epistemic attacks', in this
case on routing; see Free Haven's Selected Papers in Anonymity
for more).

In the glorious future, we might have more theoretically scalable
directory designs, such as the Walking Onions approach:
https://www.usenix.org/conference/usenixsecurity20/presentation/komlo
but those won't be out anytime soon and also maybe it will turn out that
they are most useful for their theoretical scaling properties rather
than their practical ones.

--Roger

···

On Fri, Sep 02, 2022 at 12:10:35AM +0000, Holmes Wilson wrote:

_______________________________________________
tor-dev mailing list
tor-dev@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev

1 Like

Thanks, this is super helpful.

And yes, it was that error message. The “such as paths to onion services” was a tease, because I was like “oh yes, that’s exactly what I need! I should ask someone about this!” :slight_smile:

Here’s to a glorious future full of scalable directory designs that are both practical and theoretical!

H

···

On Fri Sep 2, 2022, 01:41 AM GMT, Roger Dingledine wrote:

On Fri, Sep 02, 2022 at 12:10:35AM +0000, Holmes Wilson wrote:

At some point I got an error message that indicated that it was giving up but that I had enough information to connect to onion addresses. I can’t reproduce the problem now on a normal network, and I just went through the Tor code looking for the error message I saw, but I couldn’t find it.

It was probably this one:
On first boot, Tor mistakenly tells me "The current consensus has no exit nodes" (#32165) · Issues · The Tor Project / Core / Tor · GitLab

But I figured I’d ask here to see if anyone was familiar with shortcuts Tor can take in its connection process that safely save time and bandwidth on slow connections if the only thing I intend to use Tor for is connecting to onion addresses.

For very throttled network connections, there is another long-standing
issue that people run into during bootstrapping:
Slow clients can't bootstrap because they expire their consensus fetch but then receive all the bytes from it anyway, making them expire their next fetch, putting them in a terrible loop (#16844) · Issues · The Tor Project / Core / Tor · GitLab

Are there any steps in bootstrapping that can be skipped if I only care about making and receiving onion address connections?

Hm! I think the answer is “nothing easy that you can do currently.”

You still need to learn about most of the relays in the network, in order
to make proper three-hop circuits on your side that are hard to predict
even for somebody who watches what subset of the directory information you
learn (this is a category of attacks known as ‘epistemic attacks’, in this
case on routing; see Free Haven's Selected Papers in Anonymity
for more).

In the glorious future, we might have more theoretically scalable
directory designs, such as the Walking Onions approach:
https://www.usenix.org/conference/usenixsecurity20/presentation/komlo
but those won’t be out anytime soon and also maybe it will turn out that
they are most useful for their theoretical scaling properties rather
than their practical ones.

–Roger


tor-dev mailing list
tor-dev@lists.torproject.org
tor-dev Info Page

1 Like