Secure HLS Streams with AES-128

最終更新日:2023-08-17 15:44:06

CDNetworksのMedia Acceleration Live Broadcastサービスでは、AES-128暗号化を使用してHLSストリーミングを保護できます。この記事では、HLS ストリームの AES-128 暗号化を構成する手順の概要を説明します。

HLSストリームを暗号化する

ストリーミングを暗号化するには、以下に示すように、まず暗号化キーとキーサーバーアドレスを使用してリクエストを Uri に送信します。

POST メソッド

curl -i --url "http://ca.haplat.net/wslive/drm/manage.action?n=$username&r=$currentTimeStamp&k=$k" \
-X "POST" \
-H "Content-Type: application/json" \
-d '{
    "Host":"streampull.cdnetworks.com",
    "data":[
        {
            "Stream":"live/stream1",
            "Action":"add",
            "Method":"aes-128",
            "Key":"123456789",
            "Uri":"http://livestream-aes.com/testaeskey",
	    "Expire":"1850092464"
        }
    ]
}'

パラメータとヘッダー

パラメータ/ヘッダ 必須 説明
Host はい ストリーミングプッシュドメイン。
n はい あなたのアカウント名。
r はい 最大長が 13 の一意のランダムな文字列。タイムスタンプを使用することをお勧めします。
k はい MD5認証値。
k = md5 (r + apikey) 、つまり、「k」の値を取得したい場合、文字列「r」の最後に文字列 apikey を追加し、結果の文字列のMD5計算を行います。
注: apikey は、カスタマー サービスから取得できます。
例えば、
1.リクエストして取得 apikey=012f37a3f2952
2.文字列r=1409284800をランダムに生成する
3. apikey を「r」の最後に追加し、文字列「1409284800012f37a3f2952」を生成します。
4.新しい文字列のMD5ハッシュを計算して「k」の値を取得し、それが「b9fed80be752551834eec3e52fa94115」です。

リクエストボディ

リクエストボディはJSON形式である必要があります。以下の情報を含むJSONオブジェクトを作成することができます。

アイテム 必須 説明
Stream はい ストリーム名、またはアプリケーション名と一緒に、例えば、「/」、「live」、「live/livestream」。
注: トップレベルのアプリケーション名のみが許可されます。
Action はい アクションタイプ。 「add」、「update」、「del」の3種類の値をサポートします。
Method いいえ 暗号化アルゴリズム、ase-128またはAES-128。
Key はい 暗号化キー。
Uri はい 鍵サーバのアドレス。
Expire いいえ 例:1646720000.
なお、有効期限を指定しない場合、暗号化鍵は最大7日間有効です。キーの有効期限が切れると、ストリーミングは暗号化されなくなります。

エラーコード

HTTPコード 説明
400 リクエストボディにn、r、k、または必要なフィールドのパラメータがありません。
403 不正なk値。
404 URI が正しくありません。
405 リクエストメソッドはPOSTではありません。
5XX 内部サーバーエラー。

対応例

{
    "msg": true,
    "code": 200,
    "callTime": "2023-04-13 16:35:45"
}

AES 暗号化のテスト

AES暗号化が適切に機能している場合、ストリーミングは暗号化され、プレーヤーでメディアセグメントを再生できなくなります。これを確認するには、次の手順を実行します。

  1. 再生URLをコピーして、Webブラウザのアドレスバーに貼り付けます。

http://pullaes128.cdnetworks.com/test/a5ebdd290182100039a7236800000000/playlist.m3u8

  1. プレイリストファイルをコンピューターに保存します。ストリームが正常に暗号化された場合、プレイリストファイルにEXT-X-KEYのヘッダーが表示されます。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:69

#EXT-X-KEY:METHOD=AES-128,URI="https://cloudvodtest0622.cdnetworks.com/cloudv-material/**********************",IV=0x313233343536******************
#EXTINF:3.989,
1661944371.ts?wsApp=HLS&wsMonitor=0
#EXTINF:3.968,
1661944372.ts?wsApp=HLS&wsMonitor=0
#EXTINF:3.989,
1661944373.ts?wsApp=HLS&wsMonitor=0
  1. TS ファイルの 1 つのパスをコピーします。そして、再生URLのプレイリストパス「playlist.m3u8」を、TSファイルパス「1661944371.ts?wsApp=HLS&wsMonitor=0」に置き換えます。例えば:

http://pullaes128.cdnetworks.com/test/a5ebdd290182100039a7236800000000/1661944371.ts?wsApp=HLS&wsMonitor=0

  1. TSファイルを保存し、プレーヤーで開きます。プレーヤーは暗号化されているため、再生することはできません。