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

Alibaba Cloud では現在 2 つの方法による暗号化をサポートしています。 1 つはプライベート暗号化、もう 1 つは HLS 標準暗号化です。 HLS 標準暗号化を使用した場合、ユーザーは暗号化キーを保護する必要があります。 ここでは、HLS 標準暗号化について説明します。
  1. <section class="section" id="section-ssn-2bw-1fb">
  2. <h2 class="title sectiontitle" id="title-9e0-91j-8ci">暗号化アーキテクチャの全容</h2>
  3. <br><img class="image" id="image-a5x-hbw-1fb" src="http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/11402/156214269511385_ja-JP.png"><br></section>
  4. <section class="section" id="section-c54-3bw-1fb">
  5. <h2 class="title sectiontitle" id="title-gek-fke-w8e">用語</h2>
  6. <div class="p" id="p-v0o-wka-1ix">
  7. <ul class="ul" id="ul-u5k-jbw-1fb">
  8. <li class="li" id="li-rva-m9z-qco">
  9. <p class="p" id="p-fvp-47g-506">Key Management Service (KMS)</p>
  10. <p class="p" cond-props="intl" id="i">セキュリティ管理サービス。主にデータキーの生成、暗号化、および暗号化解除などの操作の役割を担います。 <a title="" href="https://common-buy-intl.aliyun.com/?spm=a2796.105433.1204892.1.631e2a7e616pCe&commodityCode=kms_intl&accounttraceid=83ebc5a2-8fce-43b2-bf75-15ff169809d8#/open">KMS サービス</a>を有効にするには、こちらをクリックしてください。
  11. </p>
  12. </li>
  13. <li class="li" id="li-xca-07t-bjj">
  14. <p class="p" id="p-2l2-w6b-e7a">Data Key (DK) (平文キーとも呼ばれます)</p>
  15. <p class="p" id="p-t4x-li0-71m">DK は、データの暗号化に使用される平文データキーです。</p>
  16. </li>
  17. <li class="li" id="li-q7b-fan-kuw">
  18. <p class="p" id="p-k58-owv-658">Enveloped Data Key (EDK) (暗号文データキーとも呼ばれます)</p>
  19. <p class="p" id="p-yp9-6tu-xgg">EDK は、エンベロープ暗号化テクノロジーを使用して暗号化された暗号文データキーです。</p>
  20. </li>
  21. <li class="li" id="li-lr9-erb-v2g">
  22. <p class="p" id="p-4ob-w3c-w9j">Resource Access Management (RAM) </p>
  23. <p class="p" cond-props="intl" id="in">Alibaba Cloud が提供する、ユーザー識別管理およびリソースアクセス管理サービスです。 <a title="" href="https://buy-intl.aliyun.com/ram?spm=a2796.104927.1204861.1.41ba6559rYlVBZ#/loading">RAM サービス</a>を有効にするには、こちらをクリックしてください。
  24. </p>
  25. </li>
  26. </ul>
  27. </div>
  28. </section>
  29. <section class="section" id="section-mj3-kbw-1fb">
  30. <h2 class="title sectiontitle" id="title-xx2-3r6-4hw">手順</h2>
  31. <ol class="ol" id="ol-cfw-kbw-1fb">
  32. <li class="li" id="li-is5-wka-qnn">HLS 暗号化ワークフローを作成します。
  33. <div class="note note note-note" id="note-s99-c7a-5l5">
  34. <div class="note-icon-wrapper"><i class="icon-note note"></i></div>
  35. <div class="note-content"><strong></strong> 現在、コンソールは HLS 暗号化ワークフローの作成をサポートしていません。 API を使用して HLS 暗号化ワークフローを作成します。 デモについての詳細は、<a title="" href="~~59762#concept-lwg-3fx-y2b~~">「HLS 標準暗号化ワークフローの作成」</a>をご参照ください。 HLS 暗号化ワークフローの作成後、ワークフローはコンソール上で変更ができなくなるか、もしくは暗号化設定が無効になります。
  36. </div>
  37. </div>
  38. <div class="p" id="p-muc-3q9-r18">ワークフローでのキーの設定
  39. <ul class="ul" id="ul-axp-nbw-1fb">
  40. <li class="li" id="li-61i-k04-qay">開始アクティビティノード: <code class="ph codeph" id="codeph-5yf-97h-tip">InputFile:{"Bucket":"bucketdemo", "Location ":"oss-cn-hangzhou", "ObjectPrefix":"HLS-Encryption"}</code>
  41. <p class="p" id="p-wta-4ph-378">このコードは、コンテンツ作成者がパス oss://bucketdemo/HLS-Encryption よりビデオを杭州にアップロードし、暗号化トランスコードが自動的に起動することを示します。</p>
  42. </li>
  43. <li class="li" id="li-hcs-6fm-o5i">トランスコードアクティビティノード: <code class="ph codeph" id="codeph-1wr-xlj-886">Encryption:{"Type":"hls-aes-128", "KeyUri":"https://decrypt.demo.com"}</code>
  44. <p class="p" id="p-4qm-m76-cm3">トランスコード操作が完了すると、プレイヤーの使用のため、KeyUri の設定が "m3u8" ファイル上に現れます。</p>
  45. <p class="p" id="p-10e-tnd-mxk">再生中、プレイヤーは、再生のための DK 平文キーを取得するため、 EDK 暗号文キーを送信してアドレスを要求します。</p>
  46. </li>
  47. </ul>
  48. </div>
  49. </li>
  50. <li class="li" id="li-ean-jpq-plk">ビデオのアップロード
  51. <div class="p" id="p-iw6-m5y-88s">どちらの方法でビデオをアップロードしても、暗号化トランスコードは自動的に起動します。
  52. <ul class="ul" id="ul-h1m-vbw-1fb">
  53. <li class="li" id="li-h70-w25-qg9">MPS コンソールを使用し、作成したワークフローにビデオをアップロードします。</li>
  54. <li class="li" id="li-ekg-19m-zri">OSS アップロードツールを使用し、パス oss://bucketdemo/HLS-Encryption にビデオをアップロードします。</li>
  55. </ul>
  56. </div>
  57. <div class="p" id="p-8x1-jda-y0c">トランスコードが完了すると、"m3u8" ファイルの内容が次のように表示されます。
  58. <pre class="pre codeblock" id="codeblock-e9a-7un-0hg"><code>#EXTM3U
  59. #EXT-X-VERSION:3
  60. #EXT-X-TARGETDURATION:5
  61. #EXT-X-MEDIA-SEQUENCE:0
  62. #EXT-X-KEY:METHOD=AES-128,URI="https://decrypt.demo.com?Ciphertext=aabbccddeeff&amp;MediaId=fbbf98691ea44b7c82dd75c5bc8b9271"
  63. #EXTINF:4.127544,
  64. 15029611683170-00001.ts
  65. #EXT-X-ENDLIST</code></pre>
  66. </div>
  67. </li>
  68. <li class="li" id="li-hdf-of4-y7j">プレイ
  69. <ul class="ul" id="ul-otd-2cw-1fb">
  70. <li class="li" id="li-9ua-r1x-o3m">
  71. <p class="p" id="p-hsy-wnj-seu">再生アドレスを取得するには、QueryMediaList インターフェイスを使用します。 詳しくは、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/44459.htm">「QueryMediaList」</a> をご参照ください。 OSS アドレスを取得し、OSS ドメイン名を CDN ドメイン名に置き換え、復号化キーを要求するためのトークンとして機能するパラメーター <span class="keyword parmname" id="parmname-mfz-syy-6md">MtsHlsUriToken</span>を結合します。 その仕組みは以下のとおりです。
  72. </p>
  73. <p class="p" id="p-2th-95h-v3d">再生中、プレイヤーは "m3u8" ファイルの EXT-X-KEY タグの URI にアクセスし、復号化キーを取得します。 URI は、ビジネス側で構築された復号化キーインターフェイスです。
  74. したがって、復号化を要求するには、プレイヤーはビジネス側で承認された何らかの認証情報を送信する必要があります。 "MtsHlsUriToken" も同様の役割を果たします。
  75. ビジネス側はプレイヤーにトークンを発行し、プレイヤーは復号化キーを要求する際にそのトークンを送信し、ビジネス側はトークンの有効性をチェックします。
  76. </p>
  77. </li>
  78. <li class="li" id="li-49w-fwc-vrt">プレイヤーは認証のため、トークンをビジネス側に送信します。
  79. <p class="p" id="p-zn9-xsw-mfs">たとえば、通常の再生アドレスは <code class="ph codeph" id="codeph-38e-yre-yn0">https://vod.demo.com/test.m3u8</code> です。 パラメーター <code class="ph codeph" id="codeph-qg6-riq-swu">MtsHlsUriToken</code> を結合して送信すると、ビジネス側で発行される再生アドレスは、<code class="ph codeph" id="codeph-ely-fn8-h7j">https://vod.demo.com/test.m3u8?MtsHlsUriToken=Token</code> になります。
  80. </p>
  81. <p class="p" id="p-rbx-olj-n6j">再生中、プレイヤーは Alibaba Cloudの CDN に対して、ビジネス側で発行された <code class="ph codeph" id="codeph-2la-i4s-r6e">https://vod.demo.com/test.m3u8?MtsHlsUriToken=Token</code> を要求し、Alibaba Cloud の CDN は、"m3u8" ファイル内の復号化 URI を動的に変更します。 たとえば、元の<code class="ph codeph" id="codeph-j9q-lgh-8eu">https://decrypt.demo.com?Ciphertext=aabbccddeeff&amp;MediaId=fbbf98691ea44b7c82dd75c5bc8b9271</code> は、ビジネス側で発行された <code class="ph codeph" id="codeph-xds-s5n-1d2">https://decrypt.demo.com?Ciphertext=aabbccddeeff&amp;MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&amp;MtsHlsUriToken=Token</code> に変更されます。
  82. </p>
  83. <p class="p" id="p-p20-ir0-drq">したがって、プレイヤーが要求する最終的な復号化 URI は、<code class="ph codeph" id="codeph-9hd-kfh-xag">https://decrypt.demo.com?Ciphertext=aabbccddeeff&amp;MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&amp;MtsHlsUriToken=Token</code> になります。 このアドレスは、ビジネス側で発行されたトークンを送信し、ビジネス側で識別されます。
  84. </p>
  85. </li>
  86. </ul>
  87. </li>
  88. <li class="li" id="li-7aq-5s4-byz">ビジネス側では、以下の操作を行う必要があります。
  89. <ol class="ol" type="a" id="ol-xdj-mcw-1fb">
  90. <li class="li" id="li-6et-21u-rkd">"MtsHlsUriToken" サービスの構築、発行、および識別。</li>
  91. <li class="li" id="li-kva-d3q-c0k">復号化トークンの識別。 1 つのトークンは 1 回だけ使用できます。</li>
  92. <li class="li" id="li-omv-21i-3wx">復号化キー: 暗号文である EDK は、復号化のため、 KMS (Key Management Service) サービスの復号化インターフェイスを呼び出します。
  93. 詳しくは、<a title="" href="https://jp.alibabacloud.com/help/doc-detail/28950.htm">「復号化」</a>をご参照ください。 復号化後に情報をキャッシュして、ネットワーク IO を減らします。
  94. </li>
  95. <li class="li" id="li-nap-qrh-ipl">復号化後に base64decodd を必要とする DK (平文キー)を取得し、それをプレイヤーに返します。</li>
  96. </ol>
  97. </li>
  98. </ol>
  99. </section>
  100. </div>
  101. </article>
  102. </main>