L'acronimo DNS è la sigla di Domain Name System (System of Domain Names). Questo sistema di nomenclatura gerarchica per le reti, oltre ad essere distribuito, funge da traduttore per i nomi a dominio.
Eil sistema DNS È una delle tecnologie fondamentali per il funzionamento di Internet come lo conosciamo ora. Grazie a questo sistema possiamo accedere tramite Internet all'indirizzo IP del server a cui vogliamo accedere. Agisce come se fosse una rubrica o una piattaforma dedicata alla traduzione dei nomi di un sito web in un IP con cui localizzare il web server. Ciò consente agli utenti di accedere rapidamente e facilmente ai servizi ospitati su server connessi a Internet. I DNS sono noti anche come server dei nomi o server dei nomi.
Quando ci connettiamo a Internet, il nostro ISP (Provider di servizi Internet) ci assegna un dominio indirizzo IP. Questo indirizzo può essere una serie di 12 numeri (nel caso di IPv4) o 32 caratteri in formato esadecimale (nel caso di IPv6). In entrambi i casi, un PC può gestire facilmente questi formati di indirizzi. D'altra parte, per una persona questo non sarebbe un compito facile.
È molto difficile memorizzare, ad esempio, un indirizzo come 172.217.3.78, che è l'indirizzo Google IPv4. O l'indirizzo 91.121.161.210, che corrisponde all'indirizzo Bit4Me Academy IPv2. Le cose si complicano ulteriormente quando, come utenti, accediamo a vari siti Web e servizi. E diventa una sfida quando gli indirizzi di quei servizi sono dinamico (Cambiano con il passare dei giorni).
Di fronte a questa situazione, il modo migliore è disporre di un database di nomi di dominio a cui si riferisce con un indirizzo IP. I nomi di dominio sono più facili da ricordare e ci facilitano la navigazione in Internet. Ad esempio, scrivere Wikipedia.com non è la stessa cosa che scrivere 208.80.154.224.
Come funziona il DNS
L'infrastruttura operativa di questo tipo di server è suddivisa in una serie di livelli con funzioni ben definite. Questi livelli sono responsabili della registrazione, della richiesta e della risoluzione dei nomi di dominio.
Questi livelli di funzionamento sono i seguenti:
Livello 1: client o resolver
Questo è il primo livello di operazione DNS. Questo è il più vicino ai computer degli utenti. La funzione principale dei client DNS è fare richieste (query) per risolvere i domini sui server DNS. In altre parole, sono responsabili della richiesta delle informazioni in modo che possiamo navigare in Internet risolvendo i domini.
Qualsiasi sistema operativo con la capacità di connettersi a Internet, ha le funzioni di questi client. Questo è così per facilitare la navigazione sul web. I compiti di questi clienti sono:
- Interrogare il server DNS per i domini a cui l'utente accede.
- Interpreta le risposte del server DNS sui domini richiesti.
- Restituire le informazioni al programma che ha effettuato la richiesta (browser web, Programmi P2P, tra gli altri).
Generalmente questi client applicano alcune tecniche come la cache DNS, per consentire una navigazione molto più veloce. Questo grazie al fatto che le richieste correttamente risposte dal server DNS vengono archiviate localmente. In questo modo, la risoluzione dei nomi richiede molto meno tempo rispetto all'invio di informazioni a un server remoto e all'attesa di una risposta da esso.
Altre funzionalità visualizzate da questi client sono DNS-over-TLS (DNS su TLS) Y DNSSEC (Estensioni di sicurezza DNS). Entrambi sono livelli di sicurezza che dipendono da un'operazione in due parti (server e client devono supportare le opzioni). Questo serve per impedire che il traffico DNS venga analizzato o danneggiato da terze parti dannose. Nel caso di DNS-over-TLS, crittografa la connessione del client con i server remoti. Mentre DNSSEC, protegge crittograficamente le risposte dei server DNS, grazie a un sistema di crittografia asimmetrica.
Un'altra funzione dei client è quella di fungere da memoria cache per il DNS. Con questa funzione, i client cercano di risolvere gli indirizzi dei server più velocemente e forniscono agli utenti un'esperienza di navigazione più fluida.
Livello 2: server
I server DNS sono computer che Rispondono alle richieste e risolvono i nomi di dominio attraverso un sistema strutturato ad albero. Questi server hanno un database con nomi di dominio e il loro indirizzo IP registrato corrispondente. In questo modo, ogni volta che un client DNS effettua una richiesta (query), il server la riceve, cerca il dominio in questione nel proprio database e invia una risposta. Questa risposta è l'indirizzo IP del dominio da cui il client ha richiesto informazioni. Grazie a questa operazione, possiamo navigare in Internet in sicurezza digitando nomi semplici nei nostri browser.
In genere, questi server sono connessi a Internet utilizzando indirizzi IP statici (non cambiano mai). Questi indirizzi IP sono quelli che normalmente vengono configurati automaticamente quando ci colleghiamo a Internet tramite il nostro ISP. Tuttavia, possiamo anche cambiarli con indirizzi di altri server IP di nostro gradimento. Un esempio di ciò sono gli indirizzi IP 8.8.8.8 e 8.8.4.4. Entrambi gli indirizzi corrispondono al DNS del servizio Google DNS. C'è anche la possibilità di utilizzare gli indirizzi 1.1.1.1 e 1.0.0.1 di Cloudflare DNS , quest'ultimo con supporto per DNSSEC e DNS-over-TLS. D'altra parte, è anche importante notare che esistono server DNS pubblici e privati.
In questo caso possiamo vedere che le opzioni di sicurezza devono essere fornite sul lato server per averle. È inutile avere un client DNS con supporto DNSSEC, se il server non lo offre. Questa mancanza di funzionalità è solo uno dei tanti difetti del modello client-server. Un modello centralizzato che si presta ad azioni come spionaggio, phishing o censura.
I server DNS sono generalmente costruiti da un software molto semplice, quindi mancano di un pannello di controllo grafico. Questo per creare un software resistente, con pochissimi consumi e che supporti un gran numero di richieste al secondo.
Livello 3: zone di autorità
A causa della struttura ad albero su cui è stato progettato il sistema DNS, potrebbe essere suddiviso. Ciascuna di queste divisioni è chiamata Zone di autorità. Una zona di autorità è un database completo per un sottoalbero che fa parte dell'albero principale del sistema DNS.
Ogni zona è sotto un'autorità e può delegare la gestione di una parte dell'albero. L'origine dell'albero DNS contiene la zona radice che contiene le deleghe per i TLD (dominio di primo livello). Ogni TLD costituirebbe a sua volta una zona DNS, così come i domini di secondo livello e così via. Ciascuna di queste zone può essere sotto un'autorità diversa. Questi server o gruppi di essi sono quelli che, ad esempio, gestiscono la risoluzione di nomi di sottodomini come .es o .org. In breve, queste zone sono ciò che delimita i tipi di record e domini di un server DNS.
Importanza del DNS nell'infrastruttura Internet
A questo punto possiamo dire che l'utilità e l'importanza del DNS è indiscutibile. Grazie all'infrastruttura DNS possiamo godere di Internet e dei suoi servizi. Facilitare l'accesso degli utenti alle piattaforme è la chiave del loro sovraffollamento e, a questo punto, il DNS ha perfettamente rispettato questa premessa. Il fatto che dobbiamo solo digitare un nome di dominio (es. Bit2me.com) e arrivare al sito è molto rilevante. Soprattutto quando l'opzione iniziale è digitare una stringa di numeri o caratteri esadecimali piuttosto criptici.
Inoltre, l'apertura e la distribuzione del sistema consente a Internet di crescere continuamente. Ad esempio, un'azienda può creare un server DNS che può essere utilizzato per risolvere le proprie risorse interne. Ma allo stesso tempo è in grado di risolvere (o meno) le risorse esterne di quella stessa azienda (proprie o meno). Questa flessibilità è unica ed è uno dei motivi della rapida e continua crescita della rete.
Tuttavia, nonostante la sua importanza, lo schema centralizzato e autorevole ha posto seri problemi. Ad esempio, la manipolazione dei record DNS è la forma di censura più comune al mondo. I governi di tutto il mondo lo applicano per impedire l'accesso a determinati siti Web o servizi da un determinato territorio. Di fronte a questa situazione, possiamo capire perché è anche importante disporre di opzioni decentralizzate che evitino questo tipo di azione. Non solo per garantire la libertà, ma anche per fornire maggiore trasparenza e accesso più universale.
Decentrato o distribuito?
Di solito diciamo che il DNS è "centralizzato'perché ha una componente client-server centralizzata. Ha anche un punto centrale in cui può fallire. Questo punto debole si trova nella gestione della sua struttura radice, svolta da IANA/ICANN.
D'altra parte, anche il DNS è un sistema distribuito poiché coinvolge una moltitudine di computer in tutto il mondo. Questo è il motivo per cui, come la maggior parte delle reti, il DNS è un sistema distribuito.
In che modo la blockchain può aiutarli a migliorarli?
Tecnologia blockchain ha dimostrato grandi capacità di trasformare diversi scenari nel mondo di oggi. E proprio uno di questi scenari è la tecnologia alla base del DNS. La struttura centralizzata, basata sull'autorità e crittograficamente debole del sistema attuale si è dimostrata insufficiente. La facilità di eseguire attacchi di rifiuto di servizi è agghiacciante. Ma non è l'unica cosa che si può fare. Il fatto, ad esempio, che normalmente le richieste dei nostri team siano formulate in chiaro e senza utilizzare il file crittografia, è già motivo di preoccupazione. Chiunque abbia una conoscenza può spiare ciò che facciamo con la nostra attrezzatura (computer o smartphone). Possono infatti reindirizzare la nostra navigazione verso siti con la possibilità di carpire i nostri dati senza accorgersene finché non è troppo tardi. Di fronte a questa situazione, la blockchain si pone come un modo per risolvere definitivamente questi problemi.
Un servizio DNS sulla blockchain sarebbe crittograficamente sicuro, decentralizzato, non autorizzato, resistente agli attacchi, immutabile e non censurato. Questo è di gran lunga migliore di quello che abbiamo ora con l'attuale servizio DNS. Un buon esempio di questo tipo di sistema può essere visto in Namecoin, una blockchain dedicata a diventare un sistema DNS in esecuzione sulla tecnologia blockchain.
Con questo in mente è comprensibile affermare che la tecnologia blockchain può aiutare a migliorare la tecnologia DNS. Miglioramenti per la sicurezza, la privacy e la non censura da parte di potenti gruppi.
Vantaggi e svantaggi
Vantaggi
- Il sistema è facile da implementare e scalare. La capacità di replicare, bilanciare i carichi di rete e tollerare i guasti ha reso il DNS un pilastro fondamentale di Internet.
- Richiede poca potenza di calcolo. Ricevere e rispondere ai client DNS non è un lavoro dispendioso in termini di calcolo. Per questo motivo, i requisiti hardware per stabilire enormi servizi DNS sono bassi.
- L'impatto sulla navigazione è minimo. Normalmente un servizio DNS ben configurato impiega meno di 1 secondo per rispondere. In questo modo, l'impatto sul tempo per stabilire la connessione tra l'utente e la macchina finale è ridotto al minimo.
- Offre un servizio che "stabilizza" l'accesso ai servizi su Internet. Molti server su Internet offrono i propri servizi utilizzando indirizzi IP dinamici. Ciò significa che i loro indirizzi IP cambiano dopo poche ore o giorni. Tuttavia, nonostante ciò, il servizio può aggiornare i record IP di un dominio. Grazie a ciò il nome di dominio punterà al nuovo IP e potremo continuare ad accedervi utilizzando lo stesso.
Svantaggi
- Il suo schema centralizzato lo rende particolarmente vulnerabile. Un malintenzionato, ad esempio, può intercettare le comunicazioni tra il client e il server e modificarle. Con questo riesce a reindirizzare il client (utente) dove vuole, potendo sottrarre dati.
- Per impostazione predefinita, il sistema invia le informazioni in testo normale senza crittografia. Quando è nato il DNS, la preoccupazione per la sicurezza era minima e l'uso della crittografia era riservato. Per questo motivo, DNS è un protocollo che invia e riceve informazioni in testo normale. Chiunque può intercettare la comunicazione e sapere che chiediamo (come client) e che il server ci risponde.
- Non è decentralizzato e la sua sicurezza crittografica è complessa da implementare. Ciò significa, ad esempio, che il sistema non è resistente agli attacchi di tipo Denial of Service. Inoltre, la sua capacità di protezione è complessa e questo impedisce che il suo utilizzo si diffonda. Questo è il motivo principale per cui DNS-over-TLS e DNSSEC non sono ampiamente utilizzati.