Architettura

Modello zero-knowledge, flusso encrypt → upload → playback e cosa zkast sa (e cosa no).

Modello di minaccia

zkast parte da un presupposto semplice: chi controlla lo storage non deve poter leggere i contenuti. Un CDN o un bucket cloud compromesso non deve esporre video in chiaro.

La risposta non è “crittografare a riposo lato server” — in quel caso la chiave resta comunque nel perimetro del provider. La risposta è cifratura client-side prima dell’upload, con custodia della chiave separata dal contenuto.

Cosa sa zkast

Datozkast lo conosce?
Chunk cifrati in storage
Manifest (renditions, indici chunk)
Metadati video (titolo, durata, stato)
Chiave AES di decrittazioneNo
Contenuto video in chiaroNo

La chiave vive nel backend del cliente (o in un secret manager) e viene consegnata al player solo tramite bootstrap, dopo autorizzazione.

Flusso end-to-end

1. Uploader esegue zkast-upload in locale
   → ffmpeg produce renditions (1080p, 720p, …)
   → ogni chunk viene cifrato con AES-GCM
   → upload di soli ciphertext via API

2. Viewer apre la pagina con <zkast-player>
   → il player richiede una sessione embed a zkast (legata al dominio)
   → il player chiama bootstrap-url sul backend del cliente
   → riceve decryption_key solo se autorizzato

3. Playback
   → download chunk cifrati con token temporanei
   → decrittazione in RAM via Web Crypto API
   → injection in Media Source Extensions — niente file su disco

Session token e dominio

Prima di servire chunk, zkast verifica che la richiesta provenga da un dominio registrato e verificato (CORS + record DNS TXT). Il token di sessione embed scade e viene rinnovato durante la riproduzione.

Questo blocca l’hotlinking: condividere un URL di chunk non basta — serve dominio autorizzato + sessione valida + chiave dal bootstrap.

Perché non transcoding server-side

Transcodare sul server implicherebbe decifrare (o non cifrare mai) il video in RAM del backend — violando il modello zero-knowledge. Pre-transcodare in locale con ffmpeg e caricare renditions già cifrate mantiene la garanzia e riduce i costi di compute cloud.

Per i dettagli operativi vedi la guida su docs.zkast.io.