User:Elifarley/pds: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:
* Be an [[wikipedia: Application Layer| Application Layer]] protocol able to work under IPv4 and IPv6 [[wikipedia: Network Layer| Network Layer]] protocols.
* Be an [[wikipedia: Application Layer| Application Layer]] protocol able to work under IPv4 and IPv6 [[wikipedia: Network Layer| Network Layer]] protocols.
*prevent name conflicts
*prevent name conflicts
*provide error checking on names
*hard to take down
*hard to take down
*easy to use
*easy to use
*scalable
*scalable
*
*integration with existing internet infrastructure (dns, browsers, bit torrent, twitter, dot p2p)
*integration with existing internet infrastructure (dns, browsers, bit torrent, twitter, dot p2p)


==Standard Syntax==
==Standard Syntax==
'''name:NCS#serial@signer'''
'''name:NCS#revision@signer'''


''NCS'': Named Check Sum (any better name for this?)
* '''name''': name to be resolved
* '''NCS''': Named CheckSum (any better name for this?) - provides error checking and helps prevent name conflicts
* '''revision''': Like an SVN revision number
* '''signer''': Identifies the public key that should be used to check the signature
 
* DHT key 1: (name, NCS)
* DHT key 2: (name, NCS, signer)
* DHT key 3: (name, NCS, signer, revision)
 
Questions:
* <span style="color: red">'''signer'''</span>: How to get the signer's public key?


Examples:
Examples:
* 3 levels (name:NCS#serial@signer)
* 3 levels (name:NCS#revision@signer)
** openfarmtech:4h#5@elifarley
** openfarmtech:4h#5@elifarley
* 2 levels (name#scope):
* 2 levels (name:NCS):
** openfarmtech#20110310
** openfarmtech#4H
* 1 level (name):
* 1 level (name):
** openfarmtech
** openfarmtech


===Questions===
===Questions===
''serial'' should be serial or date?
''revision'' should be serial or date?


==DNS-style syntax==
==DNS-style syntax==
Line 44: Line 56:


==Date format==
==Date format==
See [[wikipedia:Base32]]
See [[wikipedia: Base32]]
Let's use z-base-32: [http://philzimmermann.com/docs/human-oriented-base-32-encoding.txt human-oriented base-32 encoding]


YYYDDDSSS
YYYDDDSSS
Line 50: Line 63:
DDD from 0 to 365
DDD from 0 to 365
SSS from 0 to  
SSS from 0 to  


==Implementation Ideas==
==Implementation Ideas==
Line 72: Line 84:
PDR - Peer domain record - can be pasted on twitter, discussion forums, web pages, emails  and so on
PDR - Peer domain record - can be pasted on twitter, discussion forums, web pages, emails  and so on
<code>
<code>
  #pdr domain scope record-type value expiry-date signer digest
  #pdr name scope record-type value expiry-date signer digest
</code>
</code>
* #pdr magic string
* #pdr magic string
* domain is the name to be resolved
* scope helps prevent name conflicts
* record-type can be a, aaaa, cname
* record-type can be a, aaaa, cname
* value can be an ip, standard dns name, other pds name
* value can be an ip, standard dns name, other pds name
examples:
examples:
<code>
<code>
  #pdr openfarmtech 20110311 c openfarmtech.org 0 elifarley 2afqgwk6
  #pdr openfarmtech h2 c openfarmtech.org 0 elifarley 2afqgwk6
</code>
</code>


Line 92: Line 102:


<code>
<code>
name#scope@signer.pdz
name:NCS@signer.pdz
</code>
</code>


==See Also==
==See Also==
* [[wikipedia: Zooko's triangle]]
* [[wikipedia: Zooko's triangle]]
*
* [http://zooko.com/distnames.html Names: Decentralized, Secure, Human-Meaningful: Choose Two]
* [http://www.waterken.com/dev/YURL/Analogy/ YURL: Naming vs. Pointing]
* [[wikipedia: Mnet (Computer program)]]
* [[wikipedia: ZRTP]]
* [[wikipedia: Kademlia]]

Revision as of 13:29, 18 March 2011

Main > Software > Wireless mesh networking


Peer Domain System is a decentralized name resolution system which provides strong authentication and prevents name conflicts.

Introduction

Basically, PDS keeps domain name data in .pdz or .pdr text files, which contain signed associations of names to IPs (or CNAMEs, that is, aliases to other names, DNS- or PDS-based).

These files are simple enough so that their domain associations can be easily spread by pasting their content on Twitter, discussion forums, web pages, emails, and so on. Users can simply copy a PDR text line found on a page and paste it on a text file inside the PDS application folder. Or they try to access a domain, and if it's not found among the currently available PDR files, the PDS client will automatically try to fetch it using Bit Torrent or a DHT-based map.


One of the design goals is to make it easy to share name resolution data.

Design Goals

Standard Syntax

name:NCS#revision@signer

  • name: name to be resolved
  • NCS: Named CheckSum (any better name for this?) - provides error checking and helps prevent name conflicts
  • revision: Like an SVN revision number
  • signer: Identifies the public key that should be used to check the signature
  • DHT key 1: (name, NCS)
  • DHT key 2: (name, NCS, signer)
  • DHT key 3: (name, NCS, signer, revision)

Questions:

  • signer: How to get the signer's public key?

Examples:

  • 3 levels (name:NCS#revision@signer)
    • openfarmtech:4h#5@elifarley
  • 2 levels (name:NCS):
    • openfarmtech#4H
  • 1 level (name):
    • openfarmtech

Questions

revision should be serial or date?

DNS-style syntax

name.p2p

Examples:

  • openfarmtech.p2p

Date format

See wikipedia: Base32 Let's use z-base-32: human-oriented base-32 encoding

YYYDDDSSS YYY = 3 chars for year offset from 2000 DDD from 0 to 365 SSS from 0 to

Implementation Ideas

  • Create a DNS server in Python.
  • Use a bit torrent library to download PDZ and PDR files
  • PDS client home folder:
    • pdz folder
    • pdr folder
  • PDS client searches for peer domain data on the pdz and pdr folders. If no file matching the name being looked up is found, the pds client initiates multiple searches (on bittorrent, kademlia, twitter, google, etc) and creates a pdz file for each result found.

Use Cases

single record

PDR - Peer domain record - can be pasted on twitter, discussion forums, web pages, emails and so on

#pdr name scope record-type value expiry-date signer digest

  • #pdr magic string
  • record-type can be a, aaaa, cname
  • value can be an ip, standard dns name, other pds name

examples:

#pdr openfarmtech h2 c openfarmtech.org 0 elifarley 2afqgwk6

  • expiry is optional
  • signer is optional

pdz file

a .pdz file has all records of a given domain. A pds client retrieves the file using a dht like kademlia, bittorrent or other p2p apps. Users can also save such files in a specific folder called pdz, which should be shared with everyone.

name:NCS@signer.pdz

See Also