Cifrado de extremo a extremo
Este tema incluye información detallada sobre el uso del cifrado de extremo a extremo en el Client SDK de Vonage Video para Windows:
Para obtener una visión general del cifrado de extremo a extremo, consulta este tema.
Configuración del secreto de cifrado
Las sesiones cifradas de extremo a extremo se crean mediante las API del servidor (véase Activación del cifrado mediante la API REST).
Antes de que el cliente publique o se suscriba, llame a la función Session.SetEncryptionSecret() método:
Session.SetEncryptionSecret("encryption-secret");
Session.Connect(TOKEN);
Una clave válida es una cadena de entre 8 y 256 caracteres. Puedes cambiar la clave llamando a la función Session.SetEncryptionSecret() el método de nuevo.
Sucesos y errores
Los eventos y errores son esenciales para gestionar el comportamiento del cifrado dirigido por el usuario. El cifrado de extremo a extremo utiliza el modelo de secreto compartido: se espera que todos los participantes en la sesión utilicen el mismo secreto para cifrar sus medios y descifrar los de los demás.
Si un cliente intenta conectarse a una sesión cifrada de extremo a extremo sin haber configurado un secreto de cifrado, el Session.Error El evento se envía con un código de error establecido en 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);
Si un usuario intenta publicar en una sesión cifrada de extremo a extremo sin haber especificado un secreto de cifrado, al llamar a la función Session.Publish() da como resultado la función Publisher.Error el evento se envía con un error cuyo código está establecido en ErrorCode.EncryptionInternalError. Para garantizar la mejor experiencia de usuario, la aplicación debería validar una clave secreta facilitada por el usuario antes de llamar a la Session.Publish() método:
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);
Si un suscriptor no puede descodificar el contenido multimedia de una transmisión debido a una clave de cifrado incorrecta, el Subscriber.Error con un error cuyo código es ErrorCode.EncryptionSecretMismatch. Es importante comunicar al usuario que los medios no se están recibiendo debido a un desajuste de cifrado y no a un fallo de conexión o a un problema de audio/vídeo:
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);
Si un abonado encuentra un error interno al descifrar un paquete, el Subscriber.Error con un error cuyo código es ErrorCode.DecryptionInternalError.