Sommario
Negli ultimi aggiornamenti, Discord ha fatto due importanti annunci: una significativa riduzione del traffico WebSocket e l’introduzione della crittografia end-to-end (E2EE) per proteggere le chiamate audio e video degli utenti. Questi miglioramenti mirano a ottimizzare le prestazioni della piattaforma e rafforzare la sicurezza e la privacy degli utenti.
Riduzione del traffico WebSocket del 40%
Discord ha implementato una serie di miglioramenti tecnici, riducendo il traffico WebSocket del 40% grazie all’uso di tecniche avanzate di compressione. Utilizzando il protocollo zstandard e ottimizzando parametri come il chainlog, hashlog e windowlog, Discord è riuscito a comprimere efficacemente i dati scambiati sulla piattaforma senza compromettere le prestazioni.
La società ha condotto una serie di esperimenti per migliorare la compressione, anche considerando l’uso di dizionari zstandard preaddestrati. Sebbene questi abbiano portato a miglioramenti per i payload di dimensioni ridotte, come le notifiche di typing, i guadagni complessivi non giustificavano la complessità aggiuntiva. Di conseguenza, Discord ha deciso di non proseguire con l’implementazione dei dizionari, concentrandosi invece su altre ottimizzazioni, come l’uso dinamico delle risorse durante le ore di minor traffico.
Cos’è il traffico websocket?
Il traffico WebSocket si riferisce alla comunicazione bidirezionale tra un client (come un browser web) e un server tramite il protocollo WebSocket. È diverso dal tradizionale modello HTTP, che è basato su richieste e risposte, in quanto consente una connessione aperta e persistente tra le due parti, permettendo lo scambio continuo di dati in tempo reale.
Ecco alcuni punti chiave sul traffico WebSocket:
- Connessione persistente: una volta stabilita la connessione WebSocket, rimane aperta, il che consente sia al client che al server di inviare messaggi in qualsiasi momento senza la necessità di richieste ripetute.
- Bidirezionalità: sia il client che il server possono inviare dati l’uno all’altro in tempo reale, senza dover aspettare che l’altra parte lo richieda.
- Efficienza: rispetto a HTTP, il protocollo WebSocket riduce l’overhead della trasmissione dei dati, poiché evita la necessità di inviare richieste e risposte per ogni scambio di informazioni. Questo è particolarmente utile in applicazioni come le chat, i giochi online, o le applicazioni di monitoraggio in tempo reale.
- Uso tipico: viene utilizzato in scenari in cui è necessaria una comunicazione in tempo reale, come chat, trading di criptovalute, sistemi di notifiche push, dashboard di monitoraggio e molto altro.
Il traffico WebSocket può essere visualizzato e analizzato utilizzando strumenti di sviluppo come le schede di Network nei browser o strumenti di rete più avanzati per monitorare i dati scambiati.
Crittografia end-to-end (E2EE) per chiamate audio e video
Discord ha introdotto il protocollo personalizzato DAVE per la crittografia end-to-end, progettato per proteggere le chiamate audio e video da accessi non autorizzati. Questo nuovo sistema è stato sviluppato in collaborazione con esperti di sicurezza di Trail of Bits, che hanno anche condotto una revisione del codice del sistema E2EE.
DAVE è destinato a proteggere le comunicazioni in DM privati, chat di gruppo, canali vocali nei server e streaming in tempo reale. Gli utenti potranno verificare se le loro chiamate sono protette da crittografia E2EE grazie a un indicatore presente nell’interfaccia. Inoltre, Discord ha reso open-source il protocollo e le librerie di supporto, permettendo a ricercatori di sicurezza di esaminarlo e garantendo la massima trasparenza.
Il sistema utilizza il protocollo MLS (Messaging Layer Security) per la gestione delle chiavi di gruppo, garantendo che ogni partecipante abbia una chiave di crittografia media simmetrica per l’invio. Un elemento chiave di DAVE è la capacità di resistere al tracciamento persistente grazie all’uso di chiavi identità effimere.
Discord prevede una migrazione graduale del sistema DAVE su tutte le piattaforme, con il supporto completo per desktop, mobile e successivamente per i client web: la crittografia End-to-End contribuirà alla sicurezza delle connessioni WebSocket.