2010-06-09 9 views
12

Qualcuno ha avuto fortuna a ricevere lo streaming crittografato per funzionare con HTTP Live Streaming di Apple usando openssl? Sembra che ci sia quasi ma il mio video non viene riprodotto, ma non ho alcun errore in Safari (come "Il video non è riproducibile" o "Non hai il permesso di riprodurre questo video" quando ho ricevuto la chiave sbagliato).Utilizzo della crittografia openssl per HTTP Live Streaming di Apple

#bash script: 
keyFile="key.txt" 
openssl rand 16 > $keyFile 
hexKey=$(cat key.txt | hexdump -e '"%x"') 
hexIV='0' 
openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV} -K ${hexKey} 


#my playlist file: 
#EXTM3U 
#EXT-X-TARGETDURATION:000020 
#EXT-X-MEDIA-SEQUENCE:0 
#EXT-X-KEY:METHOD=AES-128,URI="key.txt" 
#EXTINF:20, no desc 
test.ts.enc 
#EXT-X-ENDLIST 

stavo usando questi documenti come guida:

http://tools.ietf.org/html/draft-pantos-http-live-streaming

+0

Hai crittografato il file. Perché dovresti aspettarti che Safari sia in grado di "riprodurre" testo cifrato? –

+1

Per ulteriori contesto su questa questione: http://developer.apple.com/iphone/library/documentation/networkinginternet/conceptual/streamingmediaguide/introduction/introduction.html http://tools.ietf.org/html/draft-pantos-http-live-streaming – Rob

+0

grazie per i collegamenti. –

risposta

10

OK, l'ho capito ... Il comando hexdump era errato. Dovrebbe essere:

hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"') 
0

Purtroppo non ho gli strumenti per sperimentare questo. Sembra che tu abbia seguito attentamente le specifiche. Una cosa che farei è sniffare la rete assicurandoti che il file key.txt venga scaricato in Safari. Proverò anche a prelevare esplicitamente la IV usando l'attributo IV del tag EXT-X-KEY, ad es.

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000 
+0

Sì, ho provato ad impostare la IV esplicitamente ma ho ottenuto lo stesso risultato. Posso confermare che il file key.txt è stato recuperato e ho anche ricevuto errori reali dall'elemento video cambiando alcuni byte in key.txt ("Non sei autorizzato ad aprire questo file"). – Rob

7

Anche tenere a mente quanto segue, se si dispone di più di 1 TS "chunk", e siete alla ricerca di un sostituto di bit esatto per la cifratura gasdotto Apple. Per impostazione predefinita, lo strumento di crittografia Apple aggiorna il parametro IV (vettore di inizializzazione) per ciascuno dei blocchi, che "aumenta la forza del codice", secondo le specifiche di Pantos.

Implementare questo significa semplicemente che il numero di sequenza deve essere codificato in esadecimale e passato come parametro -IV a openssl:

#!/bin/bash 
keyFile="key.txt" 
openssl rand 16 > $keyFile 
hexKey=$(cat key.txt | hexdump -e '"%x"') 
# hexIV='0' 
for i in {0..number_of_TS_chunks} 
do 
    hexIV=`printf '%032x' $i` 
    openssl aes-128-cbc -e -in $fileName -out $encryptedFileName -p -nosalt -iv ${hexIV} -K ${hexKey} 
done 
4

combinazione di informazioni da tre di cui sopra (OP, la correzione per hexdump e le informazioni IV) hanno prodotto una soluzione operativa per us. Vale a dire:

openssl rand 16 > static.key 

key_as_hex=$(cat static.key | hexdump -e '16/1 "%02x"') 

for i in {0..9}; do 
    init_vector=`printf '%032x' $i` 
    openssl aes-128-cbc -e -in video_low_$(($i+1)).ts -out video_low_enc_$(($i+1)).ts -p -nosalt -iv $init_vector -K $key_as_hex 
done 
Problemi correlati