Criptografia de ponta a ponta
Use a API de criptografia de ponta a ponta para criptografar os arquivos de mídia enviados pelo seu aplicativo por meio de um servidor de mídia.
Importante: No OpenTok.js 2.27.0 ou superior, a criptografia de ponta a ponta não funcionará ao se conectar a clientes que utilizam uma versão anterior do OpenTok.js. Ao atualizar seu aplicativo para usar o OpenTok.js 2.27.0 ou superior, certifique-se de que todos os clientes estejam usando o OpenTok.js 2.27.0 ou superior, caso o aplicativo utilize criptografia de ponta a ponta.
Este tópico inclui as seguintes seções:
- Visão geral
- Suporte à criptografia de ponta a ponta por codec em todos os terminais OpenTok
- Como ativar a criptografia de ponta a ponta no seu Account
- Ativando a criptografia por meio da API REST
Visão geral
A criptografia de ponta a ponta (ou E2EE) permite que os desenvolvedores de aplicativos criptografem arquivos de mídia em sessões encaminhadas de cliente para cliente. Nas sessões retransmitidas, a mídia já está criptografada de cliente para cliente, por meio dos protocolos WebRTC. Esse recurso adiciona uma camada de criptografia ao criptografar a carga útil da mídia no cliente, de modo que ela permaneça criptografada ao passar pelo OpenTok Media Router, que encaminha a mídia para outros clientes (em sessões roteadas). A criptografia de ponta a ponta é ativada ao criar uma sessão.
A criptografia de ponta a ponta é compatível com aplicativos da web em navegadores baseados no Chromium (Chrome, Opera, Edge, Samsung Internet e Android WebView) e no WebKit, como, por exemplo, o Safari no macOS/iOS, o Chrome no iOS e o WebView no iOS. A criptografia de ponta a ponta não é compatível com aplicativos da web no Firefox.
A compatibilidade com navegadores baseados no WebKit só está disponível a partir da versão 2.30.0 do OpenTok.js.
A criptografia de ponta a ponta é compatível com cada um dos SDKs nativos para clientes (para Android, iOS, Windows, Linux e macOS).
Você define o segredo de criptografia em um aplicativo web usando o OpenTok.js. É necessário definir os segredos de criptografia no cliente web ao inicializar uma sessão, e é possível alterá-los dinamicamente assim que a sessão estiver conectada. O segredo de criptografia é uma string não vazia. Todos os usuários devem usar o mesmo segredo para receber mídia inteligível. O segredo de criptografia é o material de chave para gerar uma chave criptográfica usada para criptografar e descriptografar a mídia. Especificamente, o segredo de criptografia gera uma chave de criptografia AES-256 usando um algoritmo AES-CTR com uma chave de 256 bits.
Observe que o Roteador de mídia OpenTok não tem acesso a mídias não criptografadas ao usar criptografia de ponta a ponta. Portanto, recursos que exigem decodificação de mídia — como arquivamento, transmissões ao vivo, compositor de experiências, conector de áudio e interconexão SIP — não são suportados em sessões com criptografia de ponta a ponta.
Suporte à criptografia de ponta a ponta por codec em todos os terminais OpenTok
| Codec/Ponto final | Chrome | Android Chrome | Chrome para iOS | Firefox | Safári | Borda | SDK do iOS | SDK do Android | SDK do Windows | SDK do macOS | SDK do Linux |
|---|---|---|---|---|---|---|---|---|---|---|---|
| VP8 | |||||||||||
| H.264 | |||||||||||
| VP9 |
Como ativar a criptografia de ponta a ponta no seu Account
A criptografia de ponta a ponta está disponível como um recurso adicional. Você pode ativá-lo no seu Página do account do Vonage Video.
Ativando a criptografia por meio da API REST
Você habilita a criptografia de ponta a ponta ao criar uma sessão usando a API REST. Defina o e2ee propriedade para true.
Veja criação de sessão.
Observação: Antes de ativar a criptografia de ponta a ponta para uma sessão, é necessário ativá-la no seu Account do Vonage Video. Consulte o seção anterior.
O exemplo a seguir em Node.js cria uma sessão com criptografia de ponta a ponta ativada:
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);
}
});