L’idea di accantonare gli indirizzi IP dalle comunicazioni Internet può sembrare, a prima vista, qualcosa di folle o fantascientifico. Da oltre 40 anni (la pubblicazione di IPv4 risale al 1981; a 50 anni fa i primi lavori di progettazione) l’intera architettura della rete si basa infatti su un principio apparentemente immutabile: per raggiungere un dispositivo bisogna conoscerne l’indirizzo IP. Router, firewall, DNS, servizi cloud e applicazioni distribuite utilizzano e gestiscono uno o più indirizzi IP: immaginare un mondo in cui computer, smartphone e server siano raggiungibili senza conoscere il loro indirizzo di rete può apparire quasi un paradosso tecnico.
Eppure Iroh, progetto open source sviluppato da n0, una giovane società fondata da sviluppatori con una lunga esperienza nelle tecnologie peer-to-peer e nei sistemi distribuiti, prova a ridurre la centralità degli indirizzi IP. Al di là del “marketing“, non è una vera e propria sostituzione, come vedremo più avanti.
Alla guida dell’azienda c’è Paul Frazee, figura nota nell’ambito delle tecnologie decentralizzate per il suo lavoro su progetti come Beaker Browser e Hypercore. L’obiettivo dichiarato del team è affrontare uno dei problemi più complessi delle reti moderne: permettere ai dispositivi di comunicare tra loro senza costringere sviluppatori e amministratori a gestire continuamente indirizzi IP, porte, NAT e configurazioni di rete.
La scommessa di Iroh consiste nel sostituire il concetto tradizionale di indirizzo IP con un’identità crittografica permanente. Invece di connettersi a un numero che identifica la posizione temporanea di un dispositivo nella rete, le applicazioni possono comunicare direttamente con una chiave pubblica che rappresenta in modo univoco il nodo remoto. Sarà poi il software a individuare il percorso migliore per raggiungerlo, anche quando il dispositivo si trova dietro firewall, connessioni mobili o meccanismi di traduzione degli indirizzi che cambiano continuamente.
Iroh: dalla posizione di rete all’identità crittografica
Quando un’applicazione deve comunicare con un altro dispositivo, normalmente deve conoscere il suo indirizzo IP e la porta di destinazione: sono informazioni che cambiano frequentemente. Un notebook può passare dal WiFi domestico a una rete aziendale; uno smartphone cambia indirizzo durante gli spostamenti; un server cloud può essere migrato o riconfigurato.
Iroh introduce un modello differente: ogni endpoint è identificato attraverso una coppia di chiavi crittografiche. La chiave pubblica diventa l’identificativo permanente del dispositivo, mentre il software si occupa di localizzare automaticamente il nodo e stabilire il percorso migliore per la comunicazione. L’identità rimane stabile mentre la posizione di rete può cambiare continuamente.
Dopo circa 4 anni di sviluppo e oltre 50 release preliminari, il framework Iroh raggiunge una fase di maturità che punta a offrire stabilità sia a livello di protocollo sia nelle API destinate agli sviluppatori.
Come funziona la connessione diretta tra dispositivi
Alla base di Iroh si trova il protocollo QUIC, tecnologia sviluppata originariamente da Google e successivamente standardizzata dall’IETF.
QUIC integra funzionalità tradizionalmente separate tra TCP e TLS, offrendo connessioni cifrate fin dall’inizio della comunicazione e tempi di instaurazione particolarmente ridotti.
Ogni nodo mantiene una connessione verso un relay di riferimento che svolge un duplice ruolo: facilita la scoperta degli endpoint e interviene come trasporto di emergenza quando una connessione diretta non può essere stabilita.
Quando due dispositivi tentano di comunicare, il sistema cerca innanzitutto di realizzare un collegamento peer-to-peer diretto attraverso tecniche di NAT traversal e hole punching; se il tentativo fallisce, il traffico continua a transitare tramite relay senza interrompere il servizio.
La principale novità rispetto alle tante librerie peer-to-peer già disponibili, è che Iroh cerca di nascondere gran parte delle complessità normalmente associate a questi meccanismi.
Supporto multipiattaforma, prestazioni e cifratura
Un elemento che distingue Iroh da molte soluzioni concorrenti riguarda la disponibilità su numerosi ambienti di sviluppo. Oltre all’implementazione originale in Rust, la versione 1.0 estende il supporto ufficiale a Python, Node.js, Swift e Kotlin: ciò permette di integrare le stesse funzionalità sia in applicazioni server sia in software destinato ad Android e iOS.
La portabilità rappresenta uno degli aspetti più interessanti. Il framework può essere eseguito su Windows, Linux, macOS, dispositivi mobili e persino hardware embedded come ESP32 e Raspberry Pi. In uno scenario IoT questo approccio consente di utilizzare lo stesso modello di comunicazione dal sensore fino al backend cloud.
Le connessioni create tramite Iroh risultano cifrate end-to-end senza richiedere la gestione manuale di certificati. L’identità crittografica del nodo svolge contemporaneamente il ruolo di meccanismo di autenticazione e identificazione.
La possibilità di stabilire collegamenti diretti permette anche di ridurre il traffico instradato attraverso server centrali: per molte applicazioni distribuite questo si traduce in minori costi infrastrutturali e in una riduzione della latenza percepita dagli utenti finali.
I numeri diffusi dal progetto suggeriscono una diffusione già significativa. I relay pubblici hanno gestito oltre 200 milioni di endpoint negli ultimi 30 giorni e la tecnologia trova impiego in scenari che spaziano dalla sincronizzazione in tempo reale tra dispositivi fino all’addestramento distribuito di modelli linguistici e allo streaming video.
Limiti e aspetti da osservare con attenzione
Come accade per ogni tecnologia emergente, esistono anche elementi che meritano una valutazione prudente.
Affidarsi a chiavi crittografiche come identificatori permanenti semplifica molte operazioni ma introduce nuove responsabilità nella gestione delle identità digitali. La perdita o la compromissione delle chiavi può avere conseguenze più rilevanti rispetto alla semplice modifica di un indirizzo IP.
Occorre inoltre considerare la dipendenza da servizi di discovery e relay: sebbene il traffico possa transitare direttamente tra gli endpoint, la fase iniziale di individuazione dei nodi richiede comunque componenti infrastrutturali dedicate. In ambienti particolarmente restrittivi o soggetti a severe politiche di filtraggio della rete, le prestazioni potrebbero variare sensibilmente.
Nonostante queste considerazioni, la release 1.0 dimostra che il progetto ha superato la fase sperimentale. L’idea di sostituire gli indirizzi IP con identità crittografiche non è nuova, ma pochi strumenti sono riusciti a trasformarla in una piattaforma utilizzabile su larga scala.
Ma è davvero una sostituzione degli indirizzi IP e quanto marketing c’è?…
Leggendo le presentazioni, si potrebbe pensare che il progetto Iroh punti a sostituire completamente gli indirizzi IP. In realtà Internet continua e continuerà a funzionare grazie ai protocolli IP e all’uso di indirizzi tratti dagli spazi di indirizzamento IPv4 e IPv6: nessuna tecnologia applicativa può aggirare questo presupposto fondamentale.
I pacchetti che transitano sulla rete devono comunque essere instradati da router e apparati di rete attraverso indirizzi IPv4 o IPv6. Anche Iroh utilizza il protocollo QUIC, che opera sopra UDP e quindi sopra IP, a un livello perciò superiore della pila ISO/OSI.
La novità introdotta dal progetto riguarda un livello diverso dell’architettura. Invece di costringere applicazioni e sviluppatori a conoscere indirizzi IP, porte di comunicazione, configurazioni NAT o regole di port forwarding, Iroh permette di identificare un dispositivo tramite una chiave crittografica permanente. L’indirizzo IP continua a esistere e a svolgere il proprio ruolo, ma diventa un dettaglio gestito automaticamente.
Sarebbe assolutamente fuorviante e scorretto descrivere Iroh come una tecnologia destinata a eliminare gli indirizzi IP: una definizione più aderente alla realtà tecnica consiste nel considerarlo un livello di astrazione che riduce la necessità di conoscere, gestire e configurare manualmente gli indirizzi di rete. L’obiettivo non è sostituire i protocolli fondamentali di Internet, ma rendere meno centrale la loro gestione nello sviluppo delle applicazioni distribuite.