すべてのプロダクト
Search
ドキュメントセンター

CDN:M3U8暗号化と書き換え

最終更新日:Jan 24, 2024

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ファイルをダウンロードします。

HLS基本フィールド:
  • #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ファイルを解読するためにオンプレミスのマシンに保存されます。

制御ポリシー機能の動作

  1. クライアントは、http://example.com/media/index.m3u8?MtsHlsUriToken=xxxに応じてM3U8ファイルschのリクエストをCDNエッジノードに送信します。
  2. エッジノードは要求を検証する。 リクエストは検証に合格します。
  3. エッジノードは、オリジンサーバーからM3U8ファイルをダウンロードし、M3U8ファイルをキャッシュします。
  4. エッジノードは、M3U8ファイルの #EXT-X-KEYタグを書き換え、暗号化アルゴリズム、キーURI、および認証パラメータ (#EXT-X-KEY:METHOD=AES-128、URI="https://example.com/video.key?MtsHlsUriToken=xxx" など) をタグに追加します。
  5. エッジノードは、書き換えられたM3U8ファイルをクライアントに送信する。
  6. クライアントはM3U8ファイルを受信して解析し、キーURI https://example.com/video.key?MtsHlsUriToken=xxxを取得します。 次いで、クライアントは、URIに要求を送信する。
  7. エッジノードは、要求を受信して検証し、鍵ファイルをクライアントに送信する。
  8. クライアントはM3U8ファイルの解析を続け、エッジノードからTSファイルをダウンロードします。
  9. クライアントは、キーファイル内のキーと #EXT-X-keyで指定された暗号化アルゴリズムを使用して、ダウンロードされたTSファイルを復号します。

シナリオ

HLSは、M3U8ファイルを使用してクライアントにメディアプレイリストを提供します。 クライアントがM3U8ファイルを受信すると、クライアントはビデオ再生を開始できます。 オリジンサーバー上のビデオファイルを不正アクセスから保護するために、Alibaba Cloud CDNはHLS経由で送信されるTSファイルを暗号化し、クライアントに復号化方法を通知する必要があります。 このタイプの暗号化を実装するために、Alibaba Cloud CDNはM3U8暗号化および書き換え機能をサポートしています。 この機能では、#EXT-X-KEYタグを使用して、暗号化アルゴリズム、キーURI、および認証キーをクライアントに通知します。

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. [ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。

  4. ドメイン名の左側のナビゲーションツリーで、ビデオ関連 をクリックします。

  5. M3U8 の暗号化と書き換え セクションで、M3U8 の暗号化と書き換え をオンにします。
    Turn on M3U8 Encryption and Rewrite
    説明 M3U8暗号化と書き換えをオンにすると、デフォルトでパラメータ名MtsHlsUriTokenが使用されます。
  6. オプション: クライアント要求に含まれるカスタムパラメータ名と同じカスタムパラメータ名を使用する場合は、次の手順を実行します。
    1. [カスタムパラメーター名] フィールドの横にある [変更] をクリックします。
    2. [カスタムパラメーター名] ダイアログボックスで、[パラメーター名] パラメーターを設定します。
      Set the parameter name
      説明 パラメーター名は大文字と小文字を区別します。 指定されたパラメーター名が、クライアント要求に含まれるパラメーター名と同じであることを確認してください。 たとえば、クライアント要求にfoobarパラメーター名が含まれている場合、カスタムパラメーター名FooBarは有効になりません。
    3. OK をクリックします。

設定例

Alibaba Cloud CDNコンソールにログインし、M3U8暗号化と書き換えをオンにしてから、カスタムパラメーター名をfoobarに設定します。 次の図に、カスタムパラメーター名を示します。 Example 1
クライアント要求にはfoobarパラメーターが含まれます。 パラメーター値はyyyyです。 次の図に示すように、M3U8ファイルを復号するために、Alibaba Cloud CDNはfoobar=yyyy#EXT-X-KEYタグに追加します。 Example 2