Ende-zu-Ende-Verschlüsselung

Verwenden Sie die End-to-End Encryption API, um Medien zu verschlüsseln, die von Ihrer Anwendung über einen Medienserver gesendet werden.

Das ist wichtig: In OpenTok.js 2.27.0+ funktioniert die Ende-zu-Ende-Verschlüsselung nicht, wenn Sie sich mit Clients verbinden, die eine frühere Version von OpenTok.js verwenden. Wenn Sie Ihre Anwendung aktualisieren, um OpenTok.js 2.27.0+ zu verwenden, stellen Sie sicher, dass alle Clients OpenTok.js 2.27.0+ verwenden, wenn die Anwendung eine Ende-zu-Ende-Verschlüsselung verwendet.

Dieses Thema umfasst die folgenden Abschnitte:

Übersicht

Die Ende-zu-Ende-Verschlüsselung (oder E2EE) ermöglicht es Anwendungsentwicklern, Medien in weitergeleitete Sitzungen von Client zu Client. Bei weitergeleiteten Sitzungen werden die Medien bereits über WebRTC-Protokolle von Client zu Client verschlüsselt. Diese Funktion fügt eine zusätzliche Verschlüsselungsebene hinzu, indem die Medien-Nutzdaten auf dem Client verschlüsselt werden, sodass sie auch beim Durchlaufen des OpenTok Media Routers, der die Medien an andere Clients weiterleitet (bei weitergeleiteten Sitzungen), verschlüsselt bleiben. Sie aktivieren die End-to-End-Verschlüsselung beim Erstellen einer Sitzung.

Die End-to-End-Verschlüsselung wird in Web-Apps in Chromium-basierten Browsern (Chrome, Opera, Edge, Samsung Internet und Android WebView) sowie in WebKit-basierten Browsern unterstützt, beispielsweise in Safari unter macOS/iOS, Chrome unter iOS und WebView unter iOS. In Web-Apps in Firefox wird die End-to-End-Verschlüsselung nicht unterstützt.

WebKit-basierte Browserunterstützung ist erst ab der Version OpenTok.js 2.30.0 verfügbar.

Die Ende-zu-Ende-Verschlüsselung wird in jedem der nativen Client-SDKs (für Android, iOS, Windows, Linux und macOS) unterstützt.

Sie legen das Verschlüsselungsgeheimnis in einer Webanwendung mit OpenTok.js fest. Sie müssen das Verschlüsselungsgeheimnis im Web-Client festlegen, wenn Sie eine Sitzung initialisieren, und Sie können das Verschlüsselungsgeheimnis im laufenden Betrieb ändern, sobald die Sitzung verbunden ist. Das Verschlüsselungsgeheimnis ist eine nicht leere Zeichenfolge. Alle Benutzer müssen das gleiche Geheimnis verwenden, um verständliche Medien zu erhalten. Das Verschlüsselungsgeheimnis ist das Schlüsselmaterial für die Erzeugung eines kryptografischen Schlüssels, der zum Ver- und Entschlüsseln von Medien verwendet wird. Das Verschlüsselungsgeheimnis generiert insbesondere einen AES-256-Schlüssel unter Verwendung eines AES-CTR-Algorithmus mit einem 256-Bit-Schlüssel.

Bitte beachten Sie, dass die OpenTok Media Router hat bei Verwendung der End-to-End-Verschlüsselung keinen Zugriff auf unverschlüsselte Medien. Daher werden Funktionen, die eine Dekodierung von Medien erfordern – wie beispielsweise Archivierung, Live-Streaming, Experience Composer, Audio Connector und SIP-Interconnect – in End-to-End-verschlüsselten Sitzungen nicht unterstützt.

Unterstützung der End-to-End-Verschlüsselung pro Codec auf allen OpenTok-Endpunkten

Codec/Endpunkt Chrom Android Chrome iOS Chrome Firefox Safari Kante iOS-SDK Android-SDK Windows-SDK macOS-SDK Linux-SDK
VP8
H.264
VP9

Hinzufügen einer Ende-zu-Ende-Verschlüsselung für Ihren Account

Eine End-to-End-Verschlüsselung ist als Add-on-Feature. Sie können diese Funktion auf Ihrem Vonage Video-Account-Seite.

Aktivieren der Verschlüsselung über die REST-API

Sie aktivieren die Ende-zu-Ende-Verschlüsselung, wenn Sie eine Sitzung mit der REST-API erstellen. Setzen Sie die e2ee Eigenschaft zu true. Siehe Erstellung von Sitzungen.

Anmerkung: Bevor Sie die End-to-End-Verschlüsselung für eine Sitzung aktivieren können, müssen Sie diese zunächst für Ihren Vonage Video-Account aktivieren. Weitere Informationen finden Sie unter vorheriger Abschnitt.

Das folgende Node.js-Beispiel erstellt eine Sitzung mit End-to-End-Verschlüsselung:

const opentok = new OpenTok(API_KEY, API_SECRET);
const sessionId;
opentok.createSession({
    mediaMode: 'routed',
    e2ee: true,
  }, function(error, session) {
  if (error) {
    console.log('Error creating session:', error)
  } else {
    sessionId = session.sessionId;
    console.log('Session ID: ' + sessionId);
  }
});