In questo momento sto pensando a un modo per creare un server di streaming video sicuro con la seguente ipotesi:
- ci si può fidare che le persone non possano distribuire il video di cui hanno i diritti per vedere.
(Penso che nella prima modifica della mia domanda non sia stato in grado di articolare i miei pensieri.) La cosa di cui le persone si fidano non è un requisito, ma un'ipotesi e, in alcuni casi, è valida. : non ti fidi delle persone con la tua carta credenziali e non vuoi che loro sappiano il tuo segreto, ma potresti fidarti di tua moglie con esso). Allo stesso modo ci potrebbe essere un gruppo di persone all'interno di un'organizzazione che vorrebbe avere alcuni video condivisi e si fidano l'un l'altro (potrebbero essere sbagliati, ma in questo momento si fidano).
e requisiti:
- le persone devono accedere con le loro credenziali per vedere i video
- persone diverse dovrebbero avere i diritti per vedere video diversi
- dovrebbe essere in grado di utilizzare la memorizzazione nella cache CDN (i video possono essere abbastanza grandi)
- il video dovrebbe essere visualizzato su piattaforme e dispositivi diversi.
La parte con le credenziali di accesso per vedere i video non sembra così difficile, il problema sorge quando devi eseguire lo streaming di video a un utente. Senza crittografare in qualche modo il video, c'è un potenziale attacco MITM (e anche i pezzi possono essere memorizzati in CDN e quindi visualizzati liberamente).
All'inizio pensavo che anche questo non fosse un problema e l'unica cosa che serve è servire il video su https. Ma poi mi sono reso conto che in questo modo non è possibile utilizzare la memorizzazione nella cache di CDN (sebbene il caching del browser sia ancora possibile).
Un altro approccio a cui ho pensato è quello di creare una chiave privata per ogni video e codificare il video con questa chiave. Se l'utente dovrebbe avere i diritti per visualizzarlo, riceverà una chiave per decrittografare il video (quindi tutti gli utenti che hanno i diritti per visualizzare un determinato video dovrebbero accedere allo stesso video criptato e quindi possono essere memorizzati nella cache su CDN senza alcun rischio) . Il problema qui è che la decifrazione dovrebbe essere eseguita sul client e il modo in cui posso vederlo è tramite flash (che non è supportato da ogni dispositivo).
Suppongo che giocatori come google e netflix abbiano già fatto qualcosa del genere ma non siano riusciti a trovare il modo in cui l'hanno raggiunto. Quindi è possibile costruire il sistema che soddisfa i criteri sopra menzionati e se sì - qual è l'approccio?