¿Es posible crear un servidor de transmisión segura?

1

Ahora mismo estoy pensando en una forma de crear un servidor de transmisión de video seguro con la siguiente suposición:

  • se puede confiar en las personas para que no distribuyan el video que tienen derechos para ver.

(Creo que en la primera edición de mi pregunta no pude articular mis pensamientos. Lo que se confía en las personas no es un requisito, sino un supuesto. Y creo que en algunos casos es válido. Por ejemplo : no confía a las personas con su tarjeta de credencial y no quiere que conozcan su secreto, pero puede confiarle a su esposa). De la misma manera, podría haber un grupo de personas dentro de una organización a la que les gustaría compartir algunos videos y confiar entre ellos (pueden estar equivocados, pero en este momento confían).

y requisitos:

  • las personas tienen que iniciar sesión con sus credenciales para ver videos
  • diferentes personas deben tener derechos para ver diferentes videos
  • debería poder usar el almacenamiento en caché de CDN (los videos pueden ser bastante grandes)
  • el video debe verse en diferentes plataformas y dispositivos.

La parte con credenciales de inicio de sesión para ver videos no se ve tan difícil, el problema surge cuando tiene que transmitir video a un usuario. Sin cifrar de alguna manera el video, existe la posibilidad de un ataque MITM (y también los fragmentos pueden almacenarse en CDN y luego verse libremente).

Al principio, pensé que esto tampoco es un problema y lo único que se necesita es mostrar el video a través de https. Pero luego me di cuenta de que de esta manera no es posible utilizar el almacenamiento en caché CDN (aunque el almacenamiento en caché del navegador todavía será posible).

Otro enfoque en el que pensé es crear una clave privada para cada video y codificar el video con esta clave. Si el debe tener derechos para verlo, recibiría una clave para descifrar el video (por lo tanto, todos los usuarios que tienen derechos para ver un video en particular tendrían que acceder al mismo video encriptado y, por lo tanto, se puede almacenar en caché en CDN sin riesgo) . El problema aquí es que el descifrado se debe realizar en el cliente y la forma en que puedo verlo es a través de flash (que no es compatible con todos los dispositivos).

Supongo que jugadores como Google y Netflix ya han hecho algo como esto pero no pudieron encontrar cómo lo lograron. Entonces, ¿es posible construir el sistema que satisfaga los criterios mencionados anteriormente y, de ser así, cuál es el enfoque?

    
pregunta Salvador Dali 13.11.2013 - 22:52
fuente

1 respuesta

2

Se ha actualizado suponiendo que confiará en sus usuarios:

De tus 4 criterios, 2 son fáciles:

  • las personas tienen que iniciar sesión con sus credenciales para ver videos
  • diferentes personas deben tener derechos para ver diferentes videos

Usted simplemente encripta y les proporciona la clave de descifrado. Si tiene muchos usuarios, la administración de claves podría ser molesta, pero este es un problema fácil de resolver.

Los dos últimos también son relativamente sencillos:

  • debería poder usar el almacenamiento en caché de CDN (los videos pueden ser bastante grandes)

Así que simplemente cifre los fragmentos y use un mecanismo de transmisión para transmitir los fragmentos a la población de usuarios.

  • el video debe verse en diferentes plataformas y dispositivos.

Así que escribe tu método de descifrado en un lenguaje multiplataforma.

Todos estos son problemas resueltos estándar.

O alternativamente, simplemente transmita todo a través de https, y solo requiera que los usuarios inicien sesión. Después de su actualización, esta será su solución más simple: autenticar a los usuarios. Proporcionarles acceso al contenido que están permitidos; entregarlo utilizando https: problema resuelto.

    
respondido por el Rory Alsop 14.11.2013 - 09:07
fuente

Lea otras preguntas en las etiquetas