ビデオの暗号化は、ビデオコンテンツを保護するための手段です。 ビデオコンテンツを暗号化することで、ビデオの漏洩やリーチングの問題を効果的に回避できるため、オンライン教育、金融、経済などの分野で広く使用されています。

Alibaba Cloud では現在 2 つの方法による暗号化をサポートしています。 1 つはプライベート暗号化、もう 1 つは HLS 標準暗号化です。 HLS 標準暗号化を使用した場合、ユーザーは暗号化キーを保護する必要があります。 ここでは、HLS 標準暗号化について説明します。

暗号化アーキテクチャの全容



用語

  • Key Management Service (KMS)

    セキュリティ管理サービス。主にデータキーの生成、暗号化、および暗号化解除などの操作の役割を担います。 KMS サービスを有効にするには、こちらをクリックしてください。

  • Data Key (DK) (平文キーとも呼ばれます)

    DK は、データの暗号化に使用される平文データキーです。

  • Enveloped Data Key (EDK) (暗号文データキーとも呼ばれます)

    EDK は、エンベロープ暗号化テクノロジーを使用して暗号化された暗号文データキーです。

  • Resource Access Management (RAM)

    Alibaba Cloud が提供する、ユーザー識別管理およびリソースアクセス管理サービスです。 RAM サービスを有効にするには、こちらをクリックしてください。

手順

  1. HLS 暗号化ワークフローを作成します。
    現在、コンソールは HLS 暗号化ワークフローの作成をサポートしていません。 API を使用して HLS 暗号化ワークフローを作成します。 デモについての詳細は、「HLS 標準暗号化ワークフローの作成」をご参照ください。 HLS 暗号化ワークフローの作成後、ワークフローはコンソール上で変更ができなくなるか、もしくは暗号化設定が無効になります。
    ワークフローでのキーの設定
    • 開始アクティビティノード: InputFile:{"Bucket":"bucketdemo", "Location ":"oss-cn-hangzhou", "ObjectPrefix":"HLS-Encryption"}

      このコードは、コンテンツ作成者がパス oss://bucketdemo/HLS-Encryption よりビデオを杭州にアップロードし、暗号化トランスコードが自動的に起動することを示します。

    • トランスコードアクティビティノード: Encryption:{"Type":"hls-aes-128", "KeyUri":"https://decrypt.demo.com"}

      トランスコード操作が完了すると、プレイヤーの使用のため、KeyUri の設定が "m3u8" ファイル上に現れます。

      再生中、プレイヤーは、再生のための DK 平文キーを取得するため、 EDK 暗号文キーを送信してアドレスを要求します。

  2. ビデオのアップロード
    どちらの方法でビデオをアップロードしても、暗号化トランスコードは自動的に起動します。
    • MPS コンソールを使用し、作成したワークフローにビデオをアップロードします。
    • OSS アップロードツールを使用し、パス oss://bucketdemo/HLS-Encryption にビデオをアップロードします。
    トランスコードが完了すると、"m3u8" ファイルの内容が次のように表示されます。
    #EXTM3U
         #EXT-X-VERSION:3
         #EXT-X-TARGETDURATION:5
         #EXT-X-MEDIA-SEQUENCE:0
         #EXT-X-KEY:METHOD=AES-128,URI="https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271"
         #EXTINF:4.127544,
         15029611683170-00001.ts
         #EXT-X-ENDLIST
  3. プレイ
    • 再生アドレスを取得するには、QueryMediaList インターフェイスを使用します。 詳しくは、「QueryMediaList」 をご参照ください。 OSS アドレスを取得し、OSS ドメイン名を CDN ドメイン名に置き換え、復号化キーを要求するためのトークンとして機能するパラメーター MtsHlsUriTokenを結合します。 その仕組みは以下のとおりです。

      再生中、プレイヤーは "m3u8" ファイルの EXT-X-KEY タグの URI にアクセスし、復号化キーを取得します。 URI は、ビジネス側で構築された復号化キーインターフェイスです。 したがって、復号化を要求するには、プレイヤーはビジネス側で承認された何らかの認証情報を送信する必要があります。 "MtsHlsUriToken" も同様の役割を果たします。 ビジネス側はプレイヤーにトークンを発行し、プレイヤーは復号化キーを要求する際にそのトークンを送信し、ビジネス側はトークンの有効性をチェックします。

    • プレイヤーは認証のため、トークンをビジネス側に送信します。

      たとえば、通常の再生アドレスは https://vod.demo.com/test.m3u8 です。 パラメーター MtsHlsUriToken を結合して送信すると、ビジネス側で発行される再生アドレスは、https://vod.demo.com/test.m3u8?MtsHlsUriToken=Token になります。

      再生中、プレイヤーは Alibaba Cloudの CDN に対して、ビジネス側で発行された https://vod.demo.com/test.m3u8?MtsHlsUriToken=Token を要求し、Alibaba Cloud の CDN は、"m3u8" ファイル内の復号化 URI を動的に変更します。 たとえば、元のhttps://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271 は、ビジネス側で発行された https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&MtsHlsUriToken=Token に変更されます。

      したがって、プレイヤーが要求する最終的な復号化 URI は、https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&MtsHlsUriToken=Token になります。 このアドレスは、ビジネス側で発行されたトークンを送信し、ビジネス側で識別されます。

  4. ビジネス側では、以下の操作を行う必要があります。
    1. "MtsHlsUriToken" サービスの構築、発行、および識別。
    2. 復号化トークンの識別。 1 つのトークンは 1 回だけ使用できます。
    3. 復号化キー: 暗号文である EDK は、復号化のため、 KMS (Key Management Service) サービスの復号化インターフェイスを呼び出します。 詳しくは、「復号化」をご参照ください。 復号化後に情報をキャッシュして、ネットワーク IO を減らします。
    4. 復号化後に base64decodd を必要とする DK (平文キー)を取得し、それをプレイヤーに返します。