2010-06-09 16 views
12

¿Alguien ha tenido suerte al hacer que la transmisión encriptada funcione con HTTP Live Streaming de Apple utilizando openssl? Parece que casi estoy allí, pero mi video no se reproduce, pero tampoco tengo ningún error en Safari (como "El video no se puede reproducir" o "No tienes permiso para reproducir este video" cuando recibí la clave incorrecto).Uso del cifrado de openssl para HTTP Live Streaming de 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 

que estaba usando estos documentos como guía:

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

+0

Has encriptado el archivo. ¿Por qué esperar que Safari pueda "reproducir" el texto cifrado? –

+1

Para más contexto sobre esta cuestión: 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

gracias por los enlaces. –

Respuesta

10

Bien, lo descubrí ... Mi comando hexdump era incorrecto. Debe ser:

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

Por desgracia, no tienen las herramientas para experimentar con esto. Parece que seguiste cuidadosamente las especificaciones. Una cosa que haría es olfatear la red, asegúrese de que el archivo key.txt se descargue en Safari. También trataría de seleccionar explícitamente el IV usando el atributo IV de la etiqueta EXT-X-KEY, p.

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

Sí, traté de configurar el IV explícitamente pero obtuve el mismo resultado. Puedo confirmar que key.txt se está recuperando, y también tengo errores reales del elemento de video al cambiar algunos bytes en key.txt ("No está autorizado para abrir este archivo"). – Rob

7

También hay que tener en cuenta lo siguiente, si tiene más de 1 TS "trozo", y que está buscando un reemplazo bit a bit de encriptación para el gasoducto de Apple. Por defecto, la herramienta de cifrado de Apple actualiza el parámetro IV (vector de inicialización) para cada uno de los fragmentos, lo que "aumenta la intensidad del cifrado", de acuerdo con las especificaciones de Pantos.

La implementación de este sólo significa que el número de secuencia necesita ser codificado en hexadecimal y pasado como parámetro -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

combinando la información de tres de los anteriores (la OP, el arreglo para hexdump y la información IV) produjo una solución de trabajo para us. A saber:

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 
Cuestiones relacionadas