Ende-zu-Ende-Verschlüsselung

Dieses Thema enthält Einzelheiten zur Verwendung der End-to-End-Verschlüsselung im Vonage Video Windows-Client SDK:

Einen Überblick über die End-to-End-Verschlüsselung finden Sie unter dieses Thema.

Festlegen des Verschlüsselungsschlüssels

End-to-End-verschlüsselte Sitzungen werden mithilfe von Server-APIs erstellt (siehe Aktivieren der Verschlüsselung über die REST-API).

Bevor der Client publiziert oder abonniert, rufen Sie die Session.SetEncryptionSecret() Methode:

Session.SetEncryptionSecret("encryption-secret");	
Session.Connect(TOKEN);

Ein gültiges Geheimnis ist eine Zeichenfolge zwischen 8 und 256 Zeichen. Sie können das Geheimnis ändern, indem Sie die Funktion Session.SetEncryptionSecret() Methode wieder.

Ereignisse und Fehler

Ereignisse und Fehler sind wesentlich für die Verwaltung des benutzergesteuerten Verschlüsselungsverhaltens. Bei der Ende-zu-Ende-Verschlüsselung wird das Modell des gemeinsamen Geheimnisses verwendet: Es wird erwartet, dass alle Teilnehmer der Sitzung dasselbe Geheimnis verwenden, um ihre Medien zu verschlüsseln und die der anderen zu entschlüsseln.

Wenn ein Client versucht, eine Verbindung zu einer Ende-zu-Ende-verschlüsselten Sitzung herzustellen, ohne ein Verschlüsselungsgeheimnis zu setzen, wird der Session.Error Das Ereignis wird mit einem auf … gesetzten Fehlercode gesendet. ErrorCode.EncryptionSecretMissing:

private void Session_Error(object sender, ErrorEventArgs error)
{
	if (Error.ErrorCode == ErrorCode.EncryptionSecretMissing) {
    // Notify the user that they cannot join the session
	}
}

Session.Error += Session_Error;
Session.Connect(TOKEN);

Wenn ein Benutzer versucht, in einer Ende-zu-Ende-verschlüsselten Sitzung zu veröffentlichen, ohne ein Verschlüsselungsgeheimnis angegeben zu haben, wird der Aufruf der Session.Publish() Funktion führt zu der Publisher.Error Ereignis, das mit einem Fehler gesendet wird, bei dem der Code auf ErrorCode.EncryptionInternalError. Für eine optimale Benutzerfreundlichkeit sollte die Anwendung ein vom Benutzer eingegebenes Geheimnis validieren, bevor sie die Session.Publish() Methode:

private void Publisher_Error(object sender, ErrorEventArgs error)
{
	if (Error.ErrorCode == ErrorCode.EncryptionInternalError) {
    // The application should communicate that the secret was not set.
	}
}

Publisher.Error += Publisher_Error;
Session.Publish(Publisher);

Wenn ein Teilnehmer aufgrund eines falschen Verschlüsselungsgeheimnisses nicht in der Lage ist, die Medien eines Streams zu entschlüsseln, wird der Subscriber.Error Ereignis wird mit einem Fehler gesendet, dessen Code auf ErrorCode.EncryptionSecretMismatch. Es ist wichtig, dem Benutzer mitzuteilen, dass die Medien aufgrund eines Verschlüsselungsfehlers und nicht aufgrund eines Verbindungsfehlers oder eines Audio-/Videoproblems nicht empfangen werden können:

private void Subscriber_Error(object sender, ErrorEventArgs error)
{
	if (Error.ErrorCode == ErrorCode.EncryptionSecretMismatch) {
  // Activate a UI element communicating that there's been an encryption secret mismatch.
	}
}

Subscriber.Error += Subscriber_Error;
Session.Subscribe(Subscriber);

Wenn ein Teilnehmer bei der Entschlüsselung eines Pakets auf einen internen Fehler stößt, wird der Subscriber.Error Ereignis wird mit einem Fehler gesendet, dessen Code auf ErrorCode.DecryptionInternalError.