Chiffrement de bout en bout

Utilisez l'API de chiffrement de bout en bout pour chiffrer les médias envoyés par un serveur de médias depuis votre application.

Important : Dans OpenTok.js 2.27.0+, le chiffrement de bout en bout ne fonctionnera pas lors de la connexion à des clients utilisant une version antérieure d'OpenTok.js. Lorsque vous mettez à jour votre application pour utiliser OpenTok.js 2.27.0+, assurez-vous que tous les clients utilisent OpenTok.js 2.27.0+ si l'application utilise le chiffrement de bout en bout.

Cette rubrique comprend les sections suivantes :

Vue d'ensemble

Le chiffrement de bout en bout (ou E2EE) permet aux développeurs d'applications de chiffrer les médias en sessions acheminées d'un client à l'autre. Pour les sessions relayées, les flux multimédias sont déjà chiffrés de client à client, via les protocoles WebRTC. Cette fonctionnalité ajoute une couche de chiffrement supplémentaire en chiffrant la charge utile multimédia au niveau du client, de sorte qu'elle reste chiffrée tout au long du parcours via le routeur multimédia OpenTok qui achemine les flux vers d'autres clients (dans les sessions routées). Vous activez le chiffrement de bout en bout lors de la création d’une session.

Le chiffrement de bout en bout est pris en charge dans les applications Web sur les navigateurs basés sur Chromium (Chrome, Opera, Edge, Samsung Internet et Android WebView) et sur ceux basés sur WebKit, par exemple Safari sous macOS/iOS, Chrome sous iOS et WebView sous iOS. Le chiffrement de bout en bout n'est pas pris en charge dans les applications Web sur Firefox.

La prise en charge des navigateurs basés sur WebKit n'est disponible qu'à partir de la version OpenTok.js 2.30.0.

Le chiffrement de bout en bout est pris en charge dans chacun des SDK clients natifs (pour Android, iOS, Windows, Linux et macOS).

Vous définissez le secret de chiffrement dans une application web utilisant OpenTok.js. Vous devez définir les secrets de chiffrement dans le client web lorsque vous initialisez une session, et vous pouvez modifier les secrets de chiffrement à la volée une fois que la session est connectée. Le secret de chiffrement est une chaîne non vide. Tous les utilisateurs doivent utiliser le même secret pour recevoir des médias intelligibles. Le secret de cryptage est une clé permettant de générer une clé cryptographique utilisée pour crypter et décrypter les médias. Plus précisément, le secret de cryptage génère une clé de cryptage AES-256 à l'aide d'un algorithme AES-CTR avec une clé de 256 bits.

Veuillez noter que le Routeur multimédia OpenTok n'a pas accès aux fichiers multimédias non chiffrés lorsqu'il utilise le chiffrement de bout en bout. Par conséquent, les fonctionnalités nécessitant le décodage de fichiers multimédias — telles que l'archivage, la diffusion en direct, le « Experience Composer », le « Audio Connector » et l'interconnexion SIP — ne sont pas prises en charge dans les sessions chiffrées de bout en bout.

Prise en charge du chiffrement de bout en bout par codec sur tous les terminaux OpenTok

Codec/Terminal Chrome Android Chrome Chrome pour iOS Firefox Safari Bord SDK iOS SDK Android SDK Windows SDK macOS SDK Linux
VP8
H.264
VP9

Ajout d'un chiffrement de bout en bout pour votre Account

Le chiffrement de bout en bout est disponible sous forme de fonction complémentaire. Vous pouvez l'activer sur votre Page de l'account Vonage Video.

Activation du chiffrement à l'aide de l'API REST

Vous activez le chiffrement de bout en bout lorsque vous créez une session à l'aide de l'API REST. Définissez l'option e2ee à la propriété true. Voir création d'une session.

Remarque : Avant d'activer le chiffrement de bout en bout pour une session, vous devez l'activer pour votre compte Vonage Video. Consultez la section précédente.

L'exemple Node.js suivant crée une session avec chiffrement de bout en bout :

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);
  }
});