ID Kunci dan Kunci (KID)

Setiap file media yang dilindungi oleh PlayReady memiliki Objek PlayReady (PRO), yang berisi beberapa informasi yang dibutuhkan PlayReady. Ini terletak di header konten file yang, misalnya, mungkin juga berisi metadata untuk trek video dan audio.

Dalam setiap PRO adalah Header PlayReady, yang memberi klien informasi yang diperlukan untuk menemukan atau memperoleh lisensi untuk bagian konten tempatnya disimpan. Header PlayReady terlihat seperti ini:


<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
        <KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
      </KIDS>
    </PROTECTINFO>
  <LA_URL>https://test.playready.microsoft.com/service/rightsmanager.asmx</LA_URL>
  </DATA>
</WRMHEADER>

Bagian yang menarik minat kita adalah <KIDS> elemen , yang berisi satu atau beberapa <KID> elemen. KID (ID Kunci) berisi pengidentifikasi unik global (GUID) yang digunakan klien untuk meminta kunci yang sesuai kepada Server, dan ALGID, yang kemudian digunakan untuk mendekripsi file. KID bersifat publik, karena terkandung dalam PRO, tetapi kunci itu sendiri adalah rahasia untuk layanan, dan hubungan antara kunci dan KID hanya diketahui oleh layanan.

Membuat kunci dan mengenkripsi konten

Kunci enkripsi konten dalam sistem PlayReady adalah kunci CBC AES-128 CTR dan AES-128. Layanan yang mengenkripsi konten menghasilkan KID baru dan kunci konten baru. KID dimasukkan ke dalam PRO, dan bingkai video dan audio konten dienkripsi dengan kunci konten. Gambar berikut menunjukkan bagaimana kunci dihasilkan, lalu digunakan untuk mengenkripsi konten.

 

PlayReady content encryption flow

 

Ada dua cara untuk menghasilkan KID dan kunci, termasuk:

  • Menggunakan Sistem Manajemen Kunci (KMS), di mana layanan secara acak menghasilkan setiap KID dan nilai kunci dan menyimpannya, dan cukup mencari nilai kunci yang sesuai dengan KID yang disediakan oleh klien.
  • Menggunakan mekanisme PlayReady Key Seed . Dengan mekanisme ini, layanan menentukan nilai konstanta yang disebut benih kunci (nilai acak 30 byte), dan untuk setiap bagian konten yang memerlukan kunci, menghasilkan KID acak. Dengan menggunakan Server SDK, Anda dapat menghasilkan kunci dengan menyediakan 128 bit kunci, atau benih kunci dan KID. Kunci akan disimpulkan oleh algoritma PlayReady yang ditentukan di sini.

Tidak peduli bagaimana Anda menghasilkan kunci, Anda harus dapat memverifikasi bahwa itu sesuai dengan KID yang benar dan kemudian mengenkripsi konten.

Mengirimkan lisensi untuk konten

Saat klien membuat permintaan lisensi, klien mengirimkan Header PlayReady konten ke penerbit lisensi. Penerbit lisensi mengekstrak KID dan menentukan nilai kunci yang sesuai, menggunakan salah satu metode yang dijelaskan di atas—jika menggunakan mekanisme benih kunci, itu hanya meregenerasi kunci berdasarkan KID dan benih kunci. Kemudian menghasilkan lisensi termasuk kunci ini, yang dikirim kembali ke klien dalam respons lisensi.

Misalnya, Anda memiliki file video. Packager untuk konten ini menghasilkan KID 123acak , yang disisipkannya ke Header PlayReady file. Packager juga menghasilkan nilai ABC kunci acak yang sesuai dengan KID 123, dan menyimpan keduanya di KMS. Packager meminta KMS untuk kunci yang benar untuk mengenkripsi file dengan, dan mengenkripsi file dengan kunci ABC. Ketika pelanggan mencoba memutar file, klien meminta lisensi kepada penerbit lisensi yang sesuai dengan KID 123. Penerbit lisensi mencari KID di KMS, dan merespons dengan lisensi termasuk kunci ABC, yang memungkinkan klien untuk membuka kunci file, dan pelanggan untuk menontonnya.

Catatan

Lisensi yang dikirim oleh penerbit lisensi ke klien (dalam contoh kami, lisensi yang berisi kunci ABC) dienkripsi; penyerang tidak dapat mencegat nilai kunci.

Kunci yang digunakan untuk melindungi file media dan kunci dalam lisensi sama; oleh karena itu, pengemas konten dan penerbit lisensi harus dapat mengambil atau menghasilkan kunci yang sama persis untuk file media tertentu. Untuk mencapai hal ini, jika Anda menggunakan benih kunci untuk menghasilkan kunci, Anda harus membagikannya antara pengemas konten dan penerbit lisensi.

Berbagi kunci antara file atau trek

Sama seperti kunci nyata yang dapat membuka lebih dari satu pintu, secara teknis dimungkinkan untuk menggunakan satu kunci PlayReady untuk membuka beberapa trek dalam satu file, atau bahkan beberapa file dalam kumpulan aset. Selama proses pengemasan, pengemas konten dapat menentukan pengidentifikasi kunci yang sama untuk beberapa trek atau beberapa file media, dan kunci yang sama digunakan untuk semuanya.

Misalnya, dengan aset video multi-kualitas dengan trek video 4K, HD, dan SD dan beberapa trek audio, enkripsi memiliki fleksibilitas untuk menentukan satu kunci per trek, atau satu kunci untuk semua trek.

Klien akan memerlukan lisensi untuk setiap kunci yang mereka miliki hak untuk mendekripsi. Perhatikan bahwa memberikan beberapa lisensi dapat dilakukan oleh Server Lisensi dalam satu respons lisensi.

Dalam satu aset dengan beberapa trek, keputusan antara satu kunci untuk semua trek atau kunci untuk setiap trek dilakukan oleh layanan yang mengelola konten, dan berdasarkan kriteria berikut:

  • Lebih banyak kunci membawa lebih banyak kompleksitas tetapi memungkinkan Anda untuk menentukan pada waktu pengiriman lisensi apa yang melacak layanan ingin memungkinkan klien tertentu untuk mendekripsi.
  • Kunci yang lebih sedikit kurang kompleks tetapi tidak memungkinkan Anda menentukan pada waktu pengiriman lisensi apa yang melacak layanan yang ingin memungkinkan klien tertentu untuk mendekripsi.
  • Beberapa klien mungkin memiliki batasan bahwa mereka tidak mendukung beberapa kunci untuk satu aset.

Catatan

Meskipun kunci PlayReady dapat membuka lebih dari satu file media digital, Microsoft sangat menentang ini. Menggunakan kunci unik di semua file memberikan keamanan yang lebih besar daripada melindungi file dengan kunci yang sama.

Menumpuk lisensi dalam respons lisensi

Satu respons lisensi juga dapat membawa beberapa lisensi dan dengan demikian beberapa kunci untuk membuka kunci beberapa file atau trek dalam satu transaksi. Ini lebih efisien daripada membuat beberapa respons untuk beberapa lisensi, karena hanya melibatkan satu transaksi. Ini dapat berguna untuk skenario yang berbeda:

  • Satu file media dienkripsi menggunakan beberapa kunci. Misalnya, trek video dienkripsi menggunakan Key1, dan trek audio dienkripsi menggunakan Key2. Ketika klien meminta lisensi untuk KID1, Server Lisensi mengeluarkan respons lisensi termasuk lisensi untuk KID1 dan KID2, sehingga klien memiliki semua kunci untuk mendekripsi trek video dan audio file.
  • Setiap lagu di album dienkripsi menggunakan kunci yang berbeda, tetapi pelanggan telah memperoleh hak untuk semuanya. Ketika pelanggan mulai memutar lagu pertama, Server Lisensi mengeluarkan respons lisensi termasuk satu lisensi untuk setiap lagu di album, sehingga klien memiliki semua kunci yang diperlukan untuk memutar seluruh album dengan mulus.
  • Kunci untuk saluran di TV langsung diperkirakan akan berubah setiap 24 jam. Ketika pemutaran dimulai, Server mengirim respons lisensi termasuk lisensi untuk kunci saat ini, tetapi juga lisensi dengan kunci berikutnya, jadi ketika kunci berubah, klien sudah memiliki kunci berikutnya dan perubahan terjadi dengan mulus.

Lihat juga

Spesifikasi Header PlayReady

Konten Pengemasan