HLS 暗号化は AES-128 を使用しており、すべての HLS プレーヤーで動作します。キー管理やトークンサービスと組み合わせることで、オンライン教育や独占コンテンツのストリーミングなど、高セキュリティが求められるシナリオに適しています。
仕組み
ApsaraVideo VOD は、エンベロープ暗号化を使用します。サービスプロバイダーは、Alibaba Cloud Key Management Service (KMS) を使用してデータキー (DK) とエンベロープ化されたデータキー (EDK) を生成します。DK が動画を暗号化し、EDK は動画と共に保存されます。再生時には、クライアントが復号サービスから DK を取得して動画を復号します。
復号 URL を保護するには、M3U8 暗号化と書き換えを有効にします。これにより、HLS データアクセスプロセスに保護レイヤーが追加されます。デフォルトの書き換えパラメーターは MtsHlsUriToken です。この機能を有効にする方法と仕組みについては、「M3U8 暗号化と書き換え」をご参照ください。
前提条件
-
HLS 暗号化は無料サービスです。ただし、この機能を使用するには動画トランスコーディングが必要で、料金が発生します。詳細については、「メディアトランスコーディングの課金」をご参照ください。
-
ApsaraVideo VOD が有効化されていること。手順については、「ApsaraVideo VOD の有効化」をご参照ください。
-
ApsaraVideo VOD に Key Management Service (KMS) へのアクセス権限が付与されていること。必要な権限は、クラウド リソースのアクセス許可ページで付与できます。
-
ApsaraVideo VOD にアクセラレーションドメイン名が追加されていること。手順については、「アクセラレーションドメイン名の追加」をご参照ください。
-
必要なサーバーサイド SDK がインストールされていること。詳細については、「サーバーサイド SDK」をご参照ください。このトピックでは、Java 用 SDK を例として使用します。
暗号化と復号のワークフロー
アップロードと暗号化のワークフロー

復号と再生のワークフロー
M3U8 書き換え:有効 (推奨)

M3U8 書き換え:無効

動画の暗号化
-
動画をアップロードし、コールバックを受信します。
HLS 暗号化に対応した動画が自動的にトランスコードされるのを防ぐには、ApsaraVideo VOD に動画をアップロードする際に、組み込みの [トランスコードなし] テンプレートグループを使用する必要があります。これにより、アップロード中の自動トランスコーディングが防止されます。
-
ApsaraVideo VOD コンソールを使用して動画をアップロードする方法については、「ApsaraVideo VOD コンソールでのファイルのアップロード」をご参照ください。サーバー側 API を使用して動画をアップロードする方法については、「メディアアップロード」をご参照ください。
-
ApsaraVideo VOD のイベント通知を設定します。動画アップロード完了イベントのコールバックメッセージは、動画が ApsaraVideo VOD にアップロードされたことを示します。イベント通知の設定方法については、「イベント通知」をご参照ください。
-
-
暗号化サービスをセットアップします。
-
サービスキーを作成します。
サービスキーは KMS のプライマリ暗号化キーで、HLS 暗号化用のキーを生成するために使用されます。サービスキーを作成しない場合、GenerateKMSDataKey API はエラーを返します。
-
ページの左上隅で、リージョン ID をクリックして、サービスキーを作成するリージョンに切り替えます。
説明サービスキーは、動画のオリジンサーバーと同じリージョンにある必要があります。たとえば、動画が中国 (上海) に保存されている場合、サービスキーも中国 (上海) リージョンで作成する必要があります。
利用可能なリージョンは、中国 (上海) 、中国 (北京) 、中国 (深圳) 、日本 (東京) 、シンガポール、インドネシア (ジャカルタ) 、インド (ムンバイ) 、ドイツ (フランクフルト) です。
-
ApsaraVideo VOD コンソールにログインします。 左側のナビゲーションペインで、設定の管理 > ApsaraVideo Media Processing の設定 > 標準暗号化を選択します。
-
[HLS 暗号化] ページで、[サービスキーの作成] をクリックします。
サービスキーが作成されると、確認メッセージが表示されます。その後、[キー情報] セクションでキーを表示できます。
説明成功メッセージが表示されてもキーを表示できない場合、サービスリンクロールが見つからないことが原因と考えられます。ApsaraVideo VOD を 再承認 してロールを復元し、ページを更新してサービスキーを表示できます。
-
-
API を呼び出してデータキー (DK) を生成します。
GenerateKMSDataKey API を呼び出して、データキー (DK) とエンベロープ化されたデータキー (EDK) を生成します。パラメーターを渡す必要はありません。呼び出しが成功すると、レスポンスの
Plaintextフィールドに DK が、CiphertextBlobフィールドに AES-128 形式の EDK が含まれます。HLS 暗号化トランスコーディングジョブのためにCiphertextBlobの値をキャッシュします。
-
-
HLS 暗号化用のトランスコードテンプレートグループを作成します。
HLS 暗号化プロセスには、組み込みの トランスコードなし テンプレートグループと、HLS 暗号化用のカスタムトランスコードテンプレートグループの 2 つのトランスコードテンプレートグループが必要です。カスタムトランスコードテンプレートグループを作成するには、次の手順を実行します。
-
ApsaraVideo VOD コンソールにログインします。 左側のナビゲーションペインで、設定の管理 > ApsaraVideo Media Processing の設定 > トランスコードテンプレートグループを選択します。
-
[トランスコードテンプレートグループ] ページで、HLS 暗号化用のトランスコードテンプレートグループを作成します。
カプセル化形式 を hls に設定します。高度なパラメーター セクションで、ビデオの暗号化 を有効にし、Alibaba Cloud Encryption オプションを選択します。必要に応じて、その他のパラメーターを設定します。パラメーターの詳細については、「トランスコーディングテンプレート」をご参照ください。
-
テンプレートグループが作成されたら、[トランスコードテンプレートグループ] ページの一覧で新しいテンプレートグループを見つけ、その ID を記録します。このテンプレートグループ ID は、暗号化設定に必要です。
-
-
HLS 暗号化トランスコーディングジョブを送信します。
-
SubmitTranscodeJobs API を呼び出して、HLS 暗号化トランスコーディングジョブを送信します。
-
イベント通知を設定している場合、単一解像度トランスコーディング完了またはトランスコード完了イベントのコールバックメッセージで、トランスコーディングジョブが完了したことが通知されます。
-
-
HLS 暗号化の結果を検証します。
トランスコーディングジョブが完了したら、次のいずれかの方法で暗号化を検証します。
-
方法 1: ApsaraVideo VOD コンソールにログインします。[オーディオ/ビデオ] ファイルの詳細ページに移動し、 [動画 URL] タブをクリックします。動画 URL リストで、M3U8 出力ファイルの format 列に [HLS 暗号化] タグがあるかどうかを確認します。このタグが存在すれば、暗号化が成功したことを確認できます。
-
方法 2: 標準暗号化 タグが付いている M3U8 ファイルの URL をコピーします。
curl -v "M3U8 ファイルの URL"コマンドを実行して M3U8 コンテンツを取得します。 コンテンツで次のキー情報を確認します:URI="<DecryptKeyUri パラメーター値として指定した復号 URI>"。 この情報が存在する場合、暗号化は成功です。 -
方法 3: GetTranscodeTask API を呼び出して、 手順 4 で返された
TranscodeTaskIdパラメーターの値を渡します。レスポンスのTranscodeTemplateIdの値が 手順 3 で作成したトランスコードテンプレートグループの ID と一致し、かつTranscodeJobStatusがTranscodeSuccessであれば、暗号化は成功です。
-
HLS (M3U8) の暗号化と書き換え (推奨)
M3U8 の暗号化と書き換えを有効にすると、システムは HLS メディアプレイリスト (M3U8 ファイル) の #EXT-X-KEY タグに、アルゴリズム、キー URI、認証パラメーターなどの暗号化パラメーターを自動的に追加します。クライアントが書き換えられた M3U8 ファイルを解析すると、認証パラメーター付きのキー URI を使用して復号キーをリクエストし、指定されたアルゴリズムでトランスポートストリーム (TS) セグメントを復号します。
手順 1:HLS 暗号化のパラメーターパススルーの有効化
ApsaraVideo VOD コンソールで、[HLS 標準暗号化パラメータのパススルー] を有効にします。
HLS 標準暗号化パラメータのパススルー を有効にすると、ApsaraVideo VOD はクライアントリクエストのパラメーターを #EXT-X-KEY タグの URI に追加して M3U8 ファイルを書き換えます。デフォルトのパラメーター名は MtsHlsUriToken です。
前提条件
オリジン間リソース共有 (CORS) が設定済みであること。詳細については、「オリジン間リソース共有の設定」をご参照ください。
この機能は Alibaba Cloud Gov Cloud では利用できません。
操作手順
-
ApsaraVideo VOD コンソールにログインします。
-
左側のナビゲーションペインで、設定の管理 をクリックします。
-
配信の高速化設定 > ドメイン名 をクリックして、ドメイン名 ページに移動します。
-
管理したいドメイン名を見つけ、操作 列の[設定]をクリックします。
-
ドメインの設定ページで、左側のナビゲーションペインの動画関連をクリックします。
-
暗号化再生セクションでは、HLS 標準暗号化パラメータのパススルー スイッチをオンにします。デフォルトでは、このスイッチはオフになっており、パラメーター名は
MtsHlsUriTokenです。
-
この機能を有効にすると、ApsaraVideo VOD はトークンパラメーターを書き換えることで認証を処理します。書き換えられたパラメーターは
MtsHlsUriTokenで、その値はtestです。復号再生中に、POP は M3U8 ファイルの#EXT-X-KEYタグ内の URI にMtsHlsUriToken=testを追加します。
手順 2:MtsHlsUriToken を含むリクエストの送信
M3U8 ファイルにアクセスするために、クライアントは MtsHlsUriToken パラメーターを含むリクエストを POP に送信します。
ユーザー向けに MtsHlsUriToken を生成・発行するトークンサービスを構築する必要があります。
以下は MtsHlsUriToken を生成するコードです。ビジネス要件に応じて、次のパラメーターを変更する必要があります:
手順 3:ファイルの復号と再生
クライアントからリクエストを受信すると、POP はリクエストを認証します。認証が成功すると、POP はファイルを復号して再生します。
ステップ 2 で生成された MtsHlsUriToken パラメーターの値が test の場合、POP は復号化再生時に、M3U8 ファイルの #EXT-X-KEY タグの URI に MtsHlsUriToken=test を追加します。
認証ロジックを実装する必要があります。参考として、「動画の再生」に記載の、M3U8 の暗号化と書き換えに関する復号サービスのサンプルコードをご参照ください。
動画の再生
M3U8 書き換えあり (推奨)
-
復号サービスをセットアップします。
動画を復号するために、ローカルの HTTP サービスをセットアップします。
DecryptKMSDataKey API を呼び出してデータキーを復号します。レスポンスに含まれるデータキー
PlainTextは、GenerateKMSDataKey API が返したPlainTextの値を Base64 デコードしたものです。復号 URL を検証してセキュリティを強化するために、M3U8 の暗号化と書き換えを有効にします。この機能は、トークンをキーリクエスト URL に追加します。デフォルトのパラメーター名は
MtsHlsUriTokenです。復号サービスの実装は、この機能が有効になっているかどうかによって異なります。 -
動画の再生 URL または再生認証情報を取得します。
GetVideoPlayAuth API を呼び出して再生認証情報を取得するか、GetPlayInfo API を呼び出して再生 URL を取得します。
-
暗号化された動画を再生します。
HLS 標準暗号化は、すべての HLS プレーヤーと互換性があります。自社開発のプレーヤーまたは ApsaraVideo Player を使用して、暗号化された動画を再生できます。
ApsaraVideo Player を使用する場合は、必要に応じてトークンと認証情報を取得して動画を再生します。詳細については、「暗号化された動画の再生」をご参照ください。別のプレーヤーを使用する場合は、再生ロジックを実装します。
次のセクションでは、ApsaraVideo Player の内部再生プロセスについて説明します。
M3U8 書き換えあり (推奨)
M3U8 書き換えなし
-
復号サービスをセットアップします。
動画を復号するために、ローカルの HTTP サービスをセットアップします。
DecryptKMSDataKey API を呼び出してデータキーを復号します。レスポンスに含まれるデータキー
PlainTextは、GenerateKMSDataKey API が返したPlainTextの値を Base64 デコードしたものです。例:
-
動画の再生 URL または再生認証情報を取得します。
GetVideoPlayAuth API を呼び出して再生認証情報を取得するか、GetPlayInfo API を呼び出して再生 URL を取得します。
-
暗号化された動画を再生します。
HLS 標準暗号化は、すべての HLS プレーヤーと互換性があります。自社開発のプレーヤーまたは ApsaraVideo Player を使用して、暗号化された動画を再生できます。
ApsaraVideo Player を使用する場合は、必要に応じてトークンと認証情報を取得して動画を再生します。詳細については、「暗号化された動画の再生」をご参照ください。別のプレーヤーを使用する場合は、再生ロジックを実装します。
次のセクションでは、ApsaraVideo Player の内部再生プロセスについて説明します。
M3U8 書き換えなし