[e2e] Security implications blurring the name/address distinction

David P. Reed dpreed at reed.com
Wed Feb 16 04:55:13 PST 2005

We've strayed far afield from the original question, prompted by my 
digression about the history of "not securing" TCP.   And it is great to 
have this discussion - it would have been even better to have this 
discussion years ago!

Both Vadim and Joe make good points, from particular points of view.  
Since they are both right, I think it's worth teasing out the structure 
of the problem here.  (Lloyd - in this I'm not intending to be 
sanctimonious, just slightly pedantic in hopes of better clarity).

There are two end-to-end security properties under discussion here:

1) end-to-end messages contain names and data that are certain to be 
correct, without depending on the transport. (integrity and )

2) endpoints' workload should be protected as much as possible from 
hostile actors. (protection from denial of service)

There is a third security property that is somewhat controversial - 
end-to-end messages should be readable only by authorized recipients 

Vadim points out that confusing network addresses with endpoint names is 
both unnecessary and opens up risks to the first property.  The cost of 
his proposal is maintaining two sets of names, exposing only the address 
hints to the network.  This also helps manage the third property (though 
traffic analysis can reveal something about the messages if the 
addresses are too richly endowed - encrypted onion routing minimizes the 
third risk).

Joe focuses on the need for measures to minimize the denial of service 
risk.   There are other possible measures that could manage this, once 
one realizes that this risk has little to do with end-do-end naming, and 
everything to do with "universal addressibility".

The risk of each node being able to address every physical node in the 
network, which is mostly a good thing, leads to all kinds of denial of 
service possibliities.

This really has little to do with the "end-to-end" protocol (whether TCP 
or UDP), though.

A much better formulation of the denial of service risk that arises due 
to network addressing  would focus entirely on the IP layer, and not on 
TCP at all.

Solutions to the denial of service issues would then focus on the work 
factor involved in a malicious actor being able to impose work on other 
actors, the cost of detecting and disciplining the malicious actors, and 
the cost of isolating disruption.   One would then focus on IP layer 
solutions that address these problems.  Such IP layer solutions might 
involve filtering gateways that have time-varying tokens for entry, 
time-varying addresses (changing your phone number is a lot easier than 
changing your name when harassed), network layer packet backtrace 
capability, eliminating or guarding "packet amplifiers" like broadcast, etc.

But by confusing the layers, we confused the responsibility for very 
different security properties, and a better layer separation would have 
been a good idea!

I shouldn't need to say it here, but TCP is not the perfect embodiment 
of the "end-to-end" principle, but instead is full of compromises. It's 
far more end-to-end  than was SNA or Tymnet or NCP, some of its 
predecessors.   The sharing of the name field was indeed such a 
compromise.   We did it in the name of "saving header overhead", and 
because the address/name debate was not fully understood by the community.

I feel bad, though, that the "security" community seems to take the 
blurred distinctions as a given, blurring their own notion of what makes 
a secure network.  As Vadim rightly points out, security should not be 
the province solely of the network administration, yet that is where the 
burden is put by most corporations, including most major endpoint 
application vendors (e.g. Microsoft gets sucked into discussions about 
"open ports" as if that puts the end-to-end virus or worm security risk 
into the realm of firewalls to fix).

More information about the end2end-interest mailing list