12

openssl を使用して、暗号化されたストリーミングを Apple の HTTP ライブ ストリーミングで動作させることができた人はいますか? 私はほとんどそこにいるようですが、ビデオは再生されませんが、キーを取得したときに「ビデオは再生できません」または「このビデオを再生する権限がありません」などのエラーは Safari で発生しません。違う)。

#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

これらのドキュメントをガイドとして使用していました。

https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming

4

4 に答える 4

10

わかりました... hexdump コマンドが間違っていました。そのはず:

hexKey=$(cat key.txt | hexdump -e '16/1 "%02x"')
于 2010-06-15T00:02:16.290 に答える
7

また、複数の TS "チャンク" があり、Apple 暗号化パイプラインのビット正確な代替品を探している場合は、次の点にも注意してください。デフォルトでは、Apple 暗号化ツールは各チャンクの IV (初期化ベクトル) パラメータを更新します。これにより、Pantos 仕様によると、「暗号の強度が向上します」。

これを実装するということは、シーケンス番号を 16 進数でエンコードし、-iv パラメータとして 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
于 2010-08-03T22:12:23.573 に答える
4

上記のうち 3 つ (OP、hexdump の修正、および IV 情報) からの情報を組み合わせることで、実用的なソリューションが得られまし。すなわち:

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
于 2010-08-30T13:31:58.977 に答える
0

残念ながら、私はこれを試すためのツールを持っていません。仕様に注意深く従ったようです。私がすることの 1 つは、ネットワークを盗聴して、key.txtファイルが Safari にダウンロードされていることを確認することです。また、EXT-X-KEY タグの IV 属性を使用して明示的に IV を選択してみます。

#EXT-X-KEY:METHOD=AES-128,URI="key.txt",IV=0x00000000000000000000000000000000
于 2010-06-10T01:10:59.050 に答える