エンドツーエンドの暗号化トランスコーディング・パイプラインの設定

Picture of bsp-admin-1
bsp-admin-1
ブログ・プレースホルダー画像

多くのZencoderのお客様にとって、トランスコーディングのプロセスにおいてコンテンツの安全性を確保することは最優先事項です。Zencoderが暗号化入力をサポートするようになったことで、お客様はZencoderを経由するデータが決して暗号化が適用されていない状態に保存されないようにすることができます。つまり、Zencoderは暗号化された入力を受け入れ、トランスコードするために復号化し、出力ビデオをストレージに書き込む前に再暗号化することができます。このワークフローの重要性は、入力と出力の両方が保護されることです。もし権限のないユーザーがこれらの暗号化されたファイルにアクセスできたとしても、暗号化に使われたキーとIV(Initialization vector)のペアがなければ見ることはできません。このプロセスがどのように見えるかを見ていきましょう。始める前に、暗号化された入力が必要になります。この例では、OpenSSLを使用してローカルでファイルを暗号化し、トランスコード・ジョブを作成する前にS3にアップロードします。

$ openssl aes-256-cbc -k zencoderisawesome -in trailer_test.mp4 -out trailer_test.mp4.enc -p

について -k フラグは使用したい秘密で、この場合は "zencoderisawesome"になります。この場合 -p フラグはOpenSSLに、終了時にキーを出力するよう指示します。当社の場合、出力は以下のようになりました。

salt=9E7E90A964768A2F
key=DAFF64EAE3B3AB9C7905871E407293D4987E16DE76578372E161B1261F39CD66
iv =375FDBBB213C062D544FCB5A6ACBA44E

これでファイルは暗号化されたので、以前のようにファイルを再生することはできないはずです。Zencoderがアクセスできるように、ファイルをS3かFTPサーバーにアップロードする必要があります。ここではS3のアップロード・インターフェースを使うことにします。S3アップロードリクエストを作る時間です。リクエストの作成には Node.jsライブラリ のような別のツールを使ってリクエストを送ることもできます。 リクエストビルダー入力には、上記で使用した暗号化キーとIVを指定する必要があります。

var zencoder = require('zencoder')();
zencoder.Job.create({
  input: "s3://zencoder-demo/trailer_test.mp4.enc",
  decryption_method: "aes-256",
  decryption_key: "DAFF64EAE3B3AB9C7905871E407293D4987E16DE76578372E161B1261F39CD66",
  decryption_password: "zencoderisawesome"
}, function(err, data) {
  if (err) {
    console.log("Job wasn't created");
    return console.log(err);
  }
  console.log("Woo!");
  console.log(data);
});

これは、標準的なh.264出力を作成するのに十分ですが、どのような方法でも暗号化されません。暗号化されたメザニンファイル(他の低品質出力を作成するために使用される非常に高品質な中間ファイル)は、透かし入りの出力や低品質出力に使用して配布したい場合などに、このファイルがあると便利です。1つのメザニンファイルを3つの異なるサービスにアップロードしたいとしましょう。1つの出力は透かしの入った暗号化されていない低品質バージョンで、残りの2つは2つの異なるキーを使って暗号化し、1つは識別用の透かし入り、もう1つは透かしなしのファイルに出力したいと思います。このリクエストを作成する前に、使用する2つのキーを生成する必要があります。OpenSSLをもう一度使って、新しい鍵を作ります。

$ openssl enc -aes-256-cbc -k supersecret -P
salt=12B83BBF81DFA5B7
key=48A9E3FA8A629AEBA5B4F1FAC962920F0D7084E306E0D01A0ED01C920BBCBD08
iv =2B3CABAB503198DB32394245F54E2A34

$ openssl enc -aes-256-cbc -k anothersecret -P salt=DE2DE044EA5FEB2A key=3AAE9D6E5212224BB9F76E328D2BD826F17B4FC292845B6E3B72634D2C28052D iv =169C3DE53C56E74130CDA57BA85F8255

これで、トランスコード処理中に出力を暗号化するときに、これらのキーを使うことができます。

zencoder.Job.create({
  input: "s3://zencoder-demo/trailer_test.mp4.enc",
  decryption_method: "aes-256",
  decryption_key: "DAFF64EAE3B3AB9C7905871E407293D4987E16DE76578372E161B1261F39CD66",
  decryption_password: "zencoderisawesome",
  outputs: [
    {
      url: 's3://some-bucket/decrypted.mp4',
      quality: 3,
      width: 320,
      watermarks: [{
        url: 's3://zencoder-live/test-job-watermark.png'
      }]
    },
    {
      url: 's3://some-other-bucket/encrypted-watermarked.mp4',
      width: 720,
      watermarks: [{
        url: 's3://zencoder-live/test-job-watermark.png'
      }],
      encryption_method: "aes-256",
      encryption_key: '48A9E3FA8A629AEBA5B4F1FAC962920F0D7084E306E0D01A0ED01C920BBCBD08',
      encryption_iv: '2B3CABAB503198DB32394245F54E2A34'
    },
    {
      url: 's3://some-bucket/encrypted-out.mp4',
      width: 720,
      encryption_method: "aes-256",
      encryption_key: '3AAE9D6E5212224BB9F76E328D2BD826F17B4FC292845B6E3B72634D2C28052D',
      encryption_iv: '169C3DE53C56E74130CDA57BA85F8255'
    }
  ]
}, function(err, data) {
  if (err) {
    console.log("Job wasn't created…");
    return console.log(err);
  }
  console.log("Woo!");
  console.log(data);
});

1つの出力から暗号化を省き、他の2つの出力を別々に暗号化するというのは、奇抜なことのように思えるかもしれませんが、使用例を考えてみてください。低画質の出力はサンプルとして使うことができます(この目的のために短いクリップを作成することもできます)。高画質バージョンの1つには、動画をアップロードする相手を特定する透かしが入っているので、その相手に解読して視聴するためのキーを提供することができます。3つ目の透かしのないコピーは、私たちが管理するバケットにアップロードし直します。ローカルに暗号化されたファイルがあれば、最初に暗号化したときと同じような手順で復号化することができます。透かし入りファイルの暗号化を解除するには $ openssl enc -aes-256-cbc -d -K 48A9E3FA8A629AEBA5B4F1FAC962920F0D7084E306E0D01A0ED01C920BBCBD08 -iv 2B3CABAB503198DB32394245F54E2A34 -in encrypted-watermarked.mp4 -out decrypted-watermarked.mp4 透かしなしでファイルの暗号化を解除する: $ openssl enc -aes-256-cbc -d -K 3AAE9D6E5212224BB9F76E328D2BD826F17B4FC292845B6E3B72634D2C28052D -iv 169C3DE53C56E74130CDA57BA85F8255 -in encrypted-out.mp4 -out decrypted-out.mp4 これでエンド・ツー・エンドの暗号化エンコーディング・パイプラインができました。これらの例で使用されている暗号化されたファイルは、こちらの場所から入手可能です。実際にこの認証情報を使って暗号化されているので、テストファイルとして自由にご使用ください。 メモしかし、これはデジタル著作権管理(DRM)と混同してはなりません。適切なDRMソリューションは、コンテンツへのアクセス権を扱うようなもので、特定のデバイスやユーザーまで、より細かく設定することができます。暗号化されたファイルは、暗号化キーと関連するパスワードを使用してのみ見ることができますが、それが唯一の基準です。

Back in July 2025, Brightcove unveiled an ambitious roadmap with a dual focus on innovation and quality of experience...
Our teams have been hard at work making the Brightcove platform more powerful, more reliable, and more insightful for...
Vertical Videos Experience lets you deliver a TikTok/Reels-style vertical feed on the web, powered by Brightcove. It’...

動画コンテンツの管理・活用はできていますか?

御社の動画マーケティング活動を強化し、必要な結果とROIを生み出すお手伝いをする方法については、
弊社までお問い合わせください。