M3U8暗号化と書き換えを有効にすると、Alibaba Cloud CDNはHTTPライブストリーミング (HLS) 経由で送信されるM3U8ファイルを書き換えることができます。 M3U8ファイルが書き換えられた後、暗号化パラメータはファイルの #EXT-X-KEY
タグに追加されます。 暗号化パラメータは、暗号化アルゴリズム、鍵URI、および認証パラメータを含む。 クライアントがAlibaba Cloud CDNによって書き換えられたM3U8ファイルを受信すると、クライアントは認証パラメーターを保持するキーURIを使用してリクエストを開始します。 リクエストはCDNエッジノードからキーを取得します。 次に、クライアントは暗号化アルゴリズムとキーを使用してトランスポートストリーム (TS) ファイルを復号化します。 M3U8暗号化および書き換えは、HLSデータ伝送を暗号化できます。
背景情報
HLSは、Apple Inc. によって開発されたHTTPベースの適応型ビットレートストリーミング通信プロトコルです。 HLSはHTTPに基づいています。 クライアントは、HTTPを介してサーバーからファイルを順番にダウンロードします。 HLSは、ビデオファイルがTSフォーマットでカプセル化されることを指定する。 TSビデオファイルとは別に、HLSは再生を制御するM3U8ファイルも指定します。 HLSは、伝送のためにビデオストリームをいくつかのTSビデオファイルに分割する。 ストリーミングメディアセッションの開始時に、クライアントは、まず、メディアプレイリストとして機能するTSファイルURLを含むM3U8ファイルをダウンロードする。 次に、クライアントはURLを使用してTSファイルをダウンロードします。
#EXTM3U
: M3U8ファイルヘッダー。最初の行に配置する必要があります。EXT-X-MEDIA-SEQUENC
: 最初のTLファイルのシリアル番号。 ほとんどの場合、このシリアル番号は0です。 ライブストリーミングシナリオでは、このシリアル番号はストリーミングセグメントの開始位置を示します。 例:#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION
: 各TSファイルの最大長。 たとえば、#EXT-X-TARGETDURATION:10
は、各TSファイルの長さを10秒にすることを指定します。#EXT-X-ALLOW-CACHE
: ファイルをキャッシュできるかどうかを指定します。 有効な値:#EXT-X-ALLOW-CACHE:YES
および#EXT-X-ALLOW-CACHE:NO
。 ほとんどの場合、値はYESに設定されます。#EXT-X-ENDLIST
: M3U8ファイルのターミネータ。#EXTINF
: 長さや帯域幅など、TSファイルに関する情報が含まれます。 ほとんどの場合、パラメーターは#EXTINF:<duration>,[<title>]
形式で設定されます。 他の情報を値に追加できます。 コンマ (,) の前の値は、現在のTSファイルの長さを指定します。 TSファイルの長さは、#EXT-X-TARGETDURATIO
の値より小さくする必要があります。#EXT-X-バージョン
: M3U8のバージョン番号。#EXT-X-DISCONTINUITY
: 2つの連続したTSファイルが中断されることを指定します。#EXT-X-PLAYLIST-TYP
: ストリーミングメディアのタイプ。#EXT-X-KEY
: データを暗号化および解析するかどうかを指定します。 たとえば、#EXT-X-KEY:METHOD=AES-128、URI="https://example.com/video.key?token=xxx"
は、暗号化アルゴリズムがAES-128であることを指定します。 クライアントは、鍵を取得する要求をhttps://example.com/video.key?token=xxx
に送信できます。 このキーは、TSファイルを解読するためにオンプレミスのマシンに保存されます。
制御ポリシー機能の動作
- クライアントは、
http://example.com/media/index.m3u8?MtsHlsUriToken=xxx
に応じてM3U8ファイルschのリクエストをCDNエッジノードに送信します。 - エッジノードは要求を検証する。 リクエストは検証に合格します。
- エッジノードは、オリジンサーバーからM3U8ファイルをダウンロードし、M3U8ファイルをキャッシュします。
- エッジノードは、M3U8ファイルの
#EXT-X-KEY
タグを書き換え、暗号化アルゴリズム、キーURI、および認証パラメータ (#EXT-X-KEY:METHOD=AES-128、URI="https://example.com/video.key?MtsHlsUriToken=xxx"
など) をタグに追加します。 - エッジノードは、書き換えられたM3U8ファイルをクライアントに送信する。
- クライアントはM3U8ファイルを受信して解析し、キーURI
https://example.com/video.key?MtsHlsUriToken=xxx
を取得します。 次いで、クライアントは、URIに要求を送信する。 - エッジノードは、要求を受信して検証し、鍵ファイルをクライアントに送信する。
- クライアントはM3U8ファイルの解析を続け、エッジノードからTSファイルをダウンロードします。
- クライアントは、キーファイル内のキーと
#EXT-X-key
で指定された暗号化アルゴリズムを使用して、ダウンロードされたTSファイルを復号します。
シナリオ
HLSは、M3U8ファイルを使用してクライアントにメディアプレイリストを提供します。 クライアントがM3U8ファイルを受信すると、クライアントはビデオ再生を開始できます。 オリジンサーバー上のビデオファイルを不正アクセスから保護するために、Alibaba Cloud CDNはHLS経由で送信されるTSファイルを暗号化し、クライアントに復号化方法を通知する必要があります。 このタイプの暗号化を実装するために、Alibaba Cloud CDNはM3U8暗号化および書き換え機能をサポートしています。 この機能では、#EXT-X-KEY
タグを使用して、暗号化アルゴリズム、キーURI、および認証キーをクライアントに通知します。
手順
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、ビデオ関連 をクリックします。
- M3U8 の暗号化と書き換え セクションで、M3U8 の暗号化と書き換え をオンにします。 説明 M3U8暗号化と書き換えをオンにすると、デフォルトでパラメータ名
MtsHlsUriToken
が使用されます。 - オプション: クライアント要求に含まれるカスタムパラメータ名と同じカスタムパラメータ名を使用する場合は、次の手順を実行します。
- [カスタムパラメーター名] フィールドの横にある [変更] をクリックします。
- [カスタムパラメーター名] ダイアログボックスで、[パラメーター名] パラメーターを設定します。 説明 パラメーター名は大文字と小文字を区別します。 指定されたパラメーター名が、クライアント要求に含まれるパラメーター名と同じであることを確認してください。 たとえば、クライアント要求に
foobar
パラメーター名が含まれている場合、カスタムパラメーター名FooBar
は有効になりません。 - OK をクリックします。
設定例
foobar
に設定します。 次の図に、カスタムパラメーター名を示します。 foobar
パラメーターが含まれます。 パラメーター値はyyyy
です。 次の図に示すように、M3U8ファイルを復号するために、Alibaba Cloud CDNはfoobar=yyyy
を #EXT-X-KEY
タグに追加します。