E2EE für Gruppenanrufe: Signal verschlüsselt Calls mit bis zu 40 Teilnehmern

Sven Bauduin
37 Kommentare
E2EE für Gruppenanrufe: Signal verschlüsselt Calls mit bis zu 40 Teilnehmern
Bild: Pexels

Der quelloffene Instant Messenger Signal verschlüsselt jetzt auch Gruppenanrufe mit bis zu 40 Teilnehmern sicher mittels Ende-zu-Ende-Verschlüsselung (E2EE). Nachdem zuvor maximal Gespräche von bis zu fünf Personen verschlüsselt werden konnten, ist Signal nun dank selektiver Weiterleitung in der Lage, große Gruppen zu schützen.

Selektive Weiterleitung für bis zu 40 Teilnehmer

Bei einem Gruppenanruf über einen Instant Messenger muss jeder Teilnehmer sein Audio- und Videomaterial an alle anderen Teilnehmer des Anrufs weiterleiten. Dafür gibt es drei mögliche allgemeine Architekturen:

  • Fullmesh: Jeder Gesprächsteilnehmer sendet seine Medien (Audio und Video) direkt an jeden anderen Gesprächsteilnehmer. Dies funktioniert bei sehr kleinen Anrufen, lässt sich aber nicht auf viele Teilnehmer übertragen. Die meisten Nutzer haben beispielsweise keine geeignete Internetverbindung, die schnell genug wäre, um 40 Kopien ihres Videos gleichzeitig zu senden.
  • Server-Mixing: Jeder Gesprächsteilnehmer sendet seine Medien an einen Server. Der Server „mischt“ die Medien zusammen und sendet sie an jeden Teilnehmer. Dies funktioniert bei vielen Teilnehmern, ist aber nicht mit der Ende-zu-Ende-Verschlüsselung (E2EE) kompatibel, da der Server die Medien einsehen und verändern können muss.
  • Selective Forwarding: Jeder Teilnehmer sendet seine Medien an einen Server. Der Server „leitet“ die Medien an andere Teilnehmer weiter, ohne sie einzusehen oder zu verändern. Dies funktioniert mit vielen Teilnehmern und ist mit der Ende-zu-Ende-Verschlüsselung (E2EE) kompatibel.

Aus diesem Grund hat sich Signal für eine selektive Weiterleitung, das sogenannte Selective Forwarding, entschieden. Die Server, die das Audio- und Videomaterial an bis zu 40 Teilnehmer weiterleiten, werden als Selective Forwarding Unit (SFU) bezeichnet und unterstützen E2EE für alle Gesprächsteilnehmer.

Signal nutzt das Prinzip der selektiven Weiterleitung für Gruppenanrufe
Signal nutzt das Prinzip der selektiven Weiterleitung für Gruppenanrufe (Bild: Signal)

Auch die dafür eingesetzten Server, die sogenannten SFUs, sind Open Source und deren Quellcode und Protokolle, die auf WebRTC basieren, jederzeit für jedermann einsehbar. Auf seinem Blog geht Signal noch tiefer ins Detail und erläutert die Technik hinter den verschlüsselten Gruppenanrufen.

Die SFUs nutzen Simulcast und Packet Rewriting
Die SFUs nutzen Simulcast und Packet Rewriting (Bild: Signal)

Die Ereignisschleife, der sogenannte Main Loop im Code der jeweiligen SFU sieht dabei wie folgt aus:

let socket = std::net::UdpSocket::bind(config.server_addr);
let mut clients = ...;  // changes over time as clients join and leave
loop {
  let mut incoming_buffer = [0u8; 1500];
  let (incoming_size, sender_addr) = socket.recv_from(&mut incoming_buffer);
  let incoming_packet = &incoming_buffer[..incoming_size];

  for receiver in &clients {
     // Don't send to yourself
     if sender_addr != receiver.addr {
       // Rewriting the packet is needed for reasons we'll describe later.
       let outgoing_packet = rewrite_packet(incoming_packet, receiver);
       socket.send_to(&outgoing_packet, receiver.addr);
     }
  }
}

Weshalb gerade Ende-zu-Ende verschlüsselte Gruppenanrufe mit einer Vielzahl an Teilnehmern eine so große Herausforderung sind und wie Signal dabei vorgeht, um Codecs wie VP9 und AV1 unter einen Hut zu bekommen, erklären die Entwickler im Beitrag „How to build large-scale end-to-end encrypted group video calls“.