
Distributed Naming
==================
DebConf11, Banja Luka 2011

#debconf-roundroom:
Write "zigo:" in front of the questions, so that it highlights...

Why?
----

 * avoid two flavors of centralized vulnerability:

  legal action or pressure by "offended" corporations or governments

  - yesmen
  - wikileaks
  - poker sites, etc

 * network-level filtering

  - Country-wide firewalls
  - US ISP "helpful DNS redirection"
  - organization firewall/ISP terms of service (advertising, surveillance, content filtering)


Examples of centralized naming schemes
--------------------------------------

 * DNS
 * passports
 * Facebook or twitter
 * Google

What we want from distributed naming
------------------------------------

 * we want names to be easily associated with real-world entities

 * if a peer claims to be a given name, we want to be able to ensure
   that they legitimately hold that name

 * we want to avoid the above-mentioned centralized pressures

 * (routing: given a name, we might want to be able to find the entity
   on the network -- this is not what we're talking about today)
   
 * What about changing names?
The new IP would be sent to any peer and the most recent date would be enough to change the ip associated in the others nodes.

Zooko's Triangle
================

decentralized, secure, human-meaningful -- pick any two

 * Non-Self-Authenticating Names Cannot Span Trust Boundaries
 * Self-Authenticating Names Cannot Be Meaningful To Humans

"decentralized" == "spans trust boundaries"

"secure" == "globally unforgeable"

rephrasing zooko: global, securely unique, memorable

Namespace Fragmentation
=======================

Can we accept global namespace fragmentation as a tradeoff?  If not, how can we resolve Zooko's triangle?

- spreading the last updated date (associated to a domain name) ASAP?

Is it not possible to create a trustworthy (independent à la Debian) entity?
(I would tend to add "usable" to Zooko's triangle and think it'll fail)
dkg says that such a concentration of power would cause corruption (or simply attract hackers and be impossible to defend)

Some candidates
===============
petnames (assign personal names to secure websites (FF extension))
namecoin (naming equivalent to bitcoin, global currency system that is mathematically ungameable — or so they say/think (does not necessarily die a horrible death as soon as SHA is broken again))
netsukuku ANDNA (hierarchical mesh networking plus hierarchical distributed, decentralized naming)
I2P (users controlling their own names/identities), see http://www.i2p2.de/
tor(?) hidden services (namespace like DNS, .onion is basically a root zone within TOR, very limited domain and not human-meaningful)
mdns (stands for "multicast DNS": site-local broadcast based, cooperative DNS)
DNSSEC(?) (trust paths in DNS, possibility of multiple paths to water down influence/power of the root authority; see DLV - DNSSEC Lookaside Validation)
DNSCurve(?) (keys "somehow" embedded in the names
http://dnscurve.org/ - D.J.B)
anonet2.org resdb



What's in debian?
What's integrated (or integratable) into libc's resolver?
