Bbabo NET

Scienza & Tecnologia Notizia

Signal ha aumentato il numero massimo di partecipanti alle chiamate audio e video da cinque a 40

Messenger Signal ha rilasciato un aggiornamento in cui il numero massimo di partecipanti alle chiamate audio e video di gruppo è aumentato da cinque a 40. Gli sviluppatori hanno spiegato come sono riusciti a risolvere il problema del supporto delle chiamate di gruppo con un numero elevato di partecipanti e end-to-end crittografia allo stesso tempo.

Secondo i rappresentanti del messenger, hanno affrontato il problema che se tutti i partecipanti inviano i propri file audio e video a ogni altro partecipante separatamente e li ricevono anche (mesh completa), la crittografia end-to-end funziona, ma molti partecipanti non avranno larghezza di banda sufficiente, poiché in una chiamata per 40 persone devono essere mantenute 39 connessioni. Quando ogni partecipante invia il proprio audio e video al server e il server reindirizza un singolo flusso audio e video per ogni altro partecipante, la larghezza di banda sarà sufficiente, ma la crittografia end-to-end non funziona.

Di conseguenza, gli sviluppatori hanno scelto un'opzione alternativa: Selective Forwarding Unit, quando ogni partecipante invia il proprio audio e video al server e il server li invia al resto senza decifrare. Il team di Signal ha creato da solo un servizio di elaborazione del segnale open source e ha pubblicato il codice su GitHub.

Una versione semplificata del ciclo principale nel codice in SFU si presenta così:

Il team di Signal ha valutato molte SFU open source, ma solo due di esse hanno avuto un adeguato controllo della congestione. Gli sviluppatori hanno lanciato chiamate di gruppo utilizzando una versione modificata di uno di questi server, ma hanno presto scoperto che, anche con modifiche importanti, non potevano scalare in modo affidabile il numero di partecipanti oltre gli otto a causa dell'elevato utilizzo della CPU. Poi hanno scritto SFU da zero in Rust.

La parte più impegnativa del progetto della SFU è stata organizzare l'invio del video con la risoluzione corretta a ciascun partecipante alla chiamata, mentre le condizioni della rete sono in continua evoluzione. Il team ha combinato diverse tecniche: Simulcast e Packet Rewriting consentono il passaggio tra diverse risoluzioni video, Congestion Control determina il volume corretto da inviare e Rate Allocation determina cosa inviare all'interno di quel volume.

L'implementazione della crittografia end-to-end è archiviata in RingRTC, una libreria di videochiamate open source scritta in Rust. Il contenuto di ogni frame del video inoltrato viene crittografato prima di essere suddiviso in pacchetti, come in SFrame. Quando un client si unisce a una chiamata, genera una chiave e la invia a tutti gli altri partecipanti alla chiamata come messaggio già protetto dalla crittografia Signal. Usa questa chiave per crittografare il supporto prima di inviarlo all'SFU. Ogni volta che un utente si unisce alla chiamata, genera una nuova chiave e la invia a tutti gli altri partecipanti.

A novembre, Signal ha aggiunto il blocco dei messaggi di spam e l'invio di reclami direttamente dalla pagina della chat. Ora gli utenti del messenger possono bloccare e segnalare lo spam con un clic. Quando viene inviato un reclamo ai server del messenger, vengono ricevuti solo il numero di telefono e l'ID del presunto trasgressore. Questi dati sono correlati ad altri risultati. Se lo stesso numero di telefono e ID vengono riportati in più reclami, o se il sistema rileva segni che l'account viene utilizzato per inviare spam, Signal chiederà un controllo di umanità di base. Uno dei metodi di verifica è CAPTCHA. L'utente non sarà in grado di pubblicare nuovi messaggi finché non confermerà di essere umano.

Signal ha aumentato il numero massimo di partecipanti alle chiamate audio e video da cinque a 40