Il Comitato IETF (Internet Engineering Task Force), che si occupa dello sviluppo dei protocolli e dell'architettura di Internet, ha avviato il processo di standardizzazione del sistema dei nomi di dominio GNS (GNU Name System), sviluppato dal progetto come un'alternativa completamente decentralizzata e non censurabile al DNS. Attualmente la prima bozza del standard, dopo la stabilizzazione della quale sarà formato un RFC, che avrà lo status di "Standard Proposto".
può essere utilizzato accanto a DNS e utilizzato in applicazioni tradizionali, come i browser web. L'integrità e l'immutabilità delle registrazioni sono garantite dall'uso di meccanismi crittografici. A differenza del DNS, in GNS viene utilizzato un grafo diretto anziché una gerarchia ad albero di server. La conversione dei nomi è simile a quella del DNS, ma le richieste e le risposte vengono eseguite preservando la riservatezza: il nodo che elabora la richiesta non sa a chi viene fornita la risposta, e i nodi di transito e osservatori esterni non possono decifrare le richieste e le risposte.
Una zona DNS in GNS è definita tramite una combinazione di chiavi pubbliche e private basato su curve ellittiche . L'uso di Curve25519 da alcuni come un passo piuttosto strano, poiché per ECDSA si utilizzano tipi diversi di curve ellittiche, mentre nel caso di Curve25519 di solito si usa un algoritmo di firma digitale , , più sicuro e più veloce rispetto a ECDSA. Dal punto di vista della resistenza crittografica, solleva anche dubbi la scelta della dimensione della chiave: 32 byte invece di 64 byte, normalmente utilizzati per Ed25519, così come l'uso della simmetrica, utilizzando gli algoritmi AES e TwoFish in modalità CFB.
Questo approccio è spiegato dalla necessità di implementare chiavi gerarchiche, che consentono di utilizzare la chiave pubblica radice per estrarre la chiave pubblica secondaria, sfruttando la linearità della curva Curve25519. Questa caratteristica consente di ottenere chiavi pubbliche secondarie senza conoscere le chiavi private radice. La tecnica indicata è inoltre in Bitcoin. La dimensione della chiave di 32 byte è stata scelta affinché la chiave potesse essere contenuta in un singolo record DNS.
In aggiunta, si può notare framework , destinato alla costruzione di reti P2P decentralizzate e protette. Le reti create con GNUnet non hanno un unico punto di fallimento e possono garantire la riservatezza delle informazioni personali degli utenti, incluso escludere possibili abusi da parte dei servizi segreti e degli amministratori con accesso ai nodi della rete. Questa versione è contrassegnata come contenente cambiamenti significativi nel protocollo che violano la retrocompatibilità con le versioni 0.12.x.
GNUnet supporta la creazione di reti P2P sopra TCP, UDP, HTTP/HTTPS, Bluetooth e WLAN, e può operare in modalità F2F (Friend-to-friend). È supportato il bypass NAT, incluso l'uso di UPnP e ICMP. Per l'indirizzamento della distribuzione dei dati è possibile utilizzare una tabella hash distribuita (DHT). Sono forniti strumenti per il dispiegamento di reti mesh. Per la concessione e la revoca selettiva dei diritti di accesso viene utilizzato il servizio di scambio decentralizzato di attributi di identificazione , GNS (GNU Name System) e la crittografia basata su attributi ().
Il sistema si distingue per un basso consumo di risorse e per l'uso di un'architettura multiprocessore per garantire l'isolamento tra i componenti. Sono forniti strumenti flessibili per la registrazione e la raccolta di statistiche. Per lo sviluppo di applicazioni finali, GNUnet offre API per il linguaggio C e binding per altri linguaggi di programmazione. Per semplificare lo sviluppo, viene consigliato di utilizzare i cicli di eventi (event loop) e i processi al posto dei thread. Comprende una libreria di test per il dispiegamento automatico di reti sperimentali che coprono decine di migliaia di peer.
Oltre a GNS, sulla base delle tecnologie GNUnet, sono in fase di sviluppo anche diverse applicazioni pronte all'uso:
- Un servizio per lo scambio anonimo di file che non consente di analizzare le informazioni grazie alla trasmissione dei dati esclusivamente in forma crittografata e che non permette di tracciare chi ha caricato, cercato e scaricato file grazie all'uso del protocollo GAP.
- Sistema VPN per la creazione di servizi nascosti nel dominio '.gnu' e il tunneling di IPv4 e IPv6 sopra la rete P2P. Supportate anche le schemi di traduzione IPv4-in-IPv6 e IPv6-in-IPv4, oltre alla creazione di tunnel IPv4-sopra-IPv6 e IPv6-sopra-IPv4.
- Il servizio GNUnet Conversation per effettuare chiamate vocali su GNUnet. Per l'identificazione degli utenti viene utilizzato il GNS, e il contenuto del traffico vocale è trasmesso in forma crittografata. L'anonimato non è ancora garantito: altri peer possono tracciare la connessione tra due utenti e determinare i loro indirizzi IP.
- Una piattaforma per la costruzione di reti sociali decentralizzate , che utilizza il protocollo e supporta la diffusione di notifiche in modalità multicast utilizzando la crittografia end-to-end in modo che solo gli utenti autorizzati possano accedere a messaggi, file, chat e discussioni (coloro a cui i messaggi non sono indirizzati, inclusi gli amministratori dei nodi, non potranno leggerli);
- Un sistema per l'organizzazione dell'email crittografata , applicando GNUnet per proteggere i metadati e supportando diversi per la verifica delle chiavi;
- Sistema di pagamento , che fornisce anonimato agli acquirenti, ma tiene traccia delle transazioni dei venditori per garantire trasparenza e fornire rapporti fiscali. Supporta operazioni con diverse valute esistenti e denaro elettronico, inclusi dollari, euro e bitcoin.
Novità principali di GNUnet 0.13:
- È stato attivato il registro (GNUnet Assigned Numbers Authority), responsabile per l'assegnazione di nomi e indirizzi per GNUnet.
- L'implementazione del sistema decentralizzato di nomi di dominio GNS è stata allineata con , proposta in IETF. È stato avviato il lavoro del plugin NSS "block". Sono stati aggiunti nuovi flag SUPPLEMENTAL per le registrazioni, che non sono esplicitamente pubblicate sotto l'etichetta specificata, ma vengono restituite dal resolutore. Nello strumento gnunet-namestore è stata aggiunta la visualizzazione di un avviso quando si aggiungono registrazioni TLSA o SRV al di fuori di una registrazione .
- Nell meccanismo di revoca delle chiavi (GNS/REVOCATION) la funzione è stata trasferita all'utilizzo dell'algoritmo di hashing Argon2.
- Nel servizio di scambio decentralizzato di attributi di identificazione (RECLAIM) la dimensione del ticket è stata aumentata a 256 bit.
- Il plugin di trasporto, che utilizza il protocollo UDP per la trasmissione dei dati, è stato spostato nella categoria sperimentale a causa di problemi di stabilità;
- Il formato del file delle chiavi e il metodo di serializzazione delle chiavi private ECDSA sono stati unificati con altre librerie (le vecchie chiavi smetteranno di funzionare).
- Come implementazione degli algoritmi di crittografia basati su curve ellittiche è stata utilizzata la libreria .
- Aggiunta la possibilità di compilare utilità con la libreria cURL, non collegata a gnutls.
- Restituito il server di integrazione continua .
- Nelle dipendenze di compilazione sono state incluse le librerie libmicrohttpd, libjansson e libsodium.
Fonte: opennet.ru
