This commit is contained in:
Suraxius committed 2020-11-29 23:28:09 +01:00
commit 504439b79f
10 files changed
+85

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
+2
View File
@@ -0,0 +1,2 @@
distrins: main.cpp core/ api/ resolver/ cluster/
g++ main.cpp -o distrins
+2
View File
@@ -0,0 +1,2 @@
# DistriNS
A Distributed approach to Authoritative DNS
View File
Whitespace-only changes.
View File
Whitespace-only changes.
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+77
View File
@@ -0,0 +1,77 @@
# Bootstraping DNS via Distributed Ledger
## Table of Contents
<toc max-level="6" />
<br>
## Introduction
Bootstraping the DNS system using a distributed ledger, removing the inherent flaw that is its centralized nature while binding in neatly with current dns infrastructure.
## Requirements
- Bind into current infrastructure without requireing more then an extra root hint on resolvers.
- Existing domains need to be able to migrate (pre-registering .com, .net and all the others might be the way to go here.
- A zone needs to be secured using one or more keys.
- A key needs the be revokable.
- Keys need to have a hirarchy: have a ranking assigned that decides which key can revoke which other keys.
- Keys need to be restrictable to records or entire zones (scoped)
- ~~Only top-level domains are allowed. Otherwise the chain size grows too large. Using ns records to delegate instead.~~
- Set allowed level of subdomains in settings with default of 0 (Only root zones like com, net etc.)
- Peer cluster communication needs to be secure, with each client having a private key.
## Considerations
### Some calculations
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,z,y
0,1,2,3,4,5,6,7,8,9
and -
= 26 + 10 + 1 = 37
Max combined length: 255
37^255 = too large
Limiting to 5 characters (no numbers) brings the posibilities down to 11'881'376 Domains
64 bytes per ecc key
## System Parts
### DNS Resolver
To facilitate queries from current infrastructure for the authoritative zone (set when peer joins the cloud)
### HTTP API
To create/update/delete zones.
### Peer Cloud
#### Peering
- Node discovery
- Tracking node uptime
- Rate node quality based on uptime
- DNS record of peers allowed to join are added via transactions
- Allow manual joining of new peer with a token
- Network transparency: Nodes are identified by their public key, not ip address.
- Keep track of which node authorized the joining of a new peer. Allows removal of entire tree of nodes if problematic joins happen.
#### Consensus
- Limit new zone registrations per time spent part of peer cluster.
- Only allow changes to existing zones once a node has been online for a while.
- Resources may be dropped from local storage once they are superceeded after a certain time period
- Virtual Voting
### Ledger
#### Type
- blockchain
- transaction table
#### Resource Types (Transactions)
- DNS Zone
- DNS Record?
- TLS Certificate
- Resource Access Key
- Authorized Peer (public key of host allowed to join the cluster)
View File
Whitespace-only changes.
View File
Whitespace-only changes.