View a markdown version of this page

SPEKE API v2.0 - Kustomisasi dan batasan untuk spesifikasi DASH-IF - Spesifikasi API Pertukaran Kunci Pengemas dan Encoder yang Aman

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SPEKE API v2.0 - Kustomisasi dan batasan untuk spesifikasi DASH-IF

Spesifikasi DASH Industry Forum CPIX 2.3 mendukung sejumlah kasus penggunaan dan topologi. Spesifikasi SPEKE API v2.0 mendefinisikan Profil CPIX dan API untuk CPIX. Untuk mencapai dua tujuan ini, ia mematuhi spesifikasi CPIX dengan penyesuaian dan batasan berikut:

Profil CPIX
  • SPEKE mengikuti alur kerja Encryptor Consumer.

  • Untuk kunci konten terenkripsi, SPEKE menerapkan batasan berikut:

    • SPEKE tidak mendukung verifikasi tanda tangan digital (XMLDSIG) untuk payload permintaan atau respons.

    • SPEKE membutuhkan 2048 RSA-based sertifikat.

  • SPEKE hanya memanfaatkan sebagian fungsi CPIX:

    • SPEKE menghilangkan fungsionalitas. UpdateHistoryItemList Jika daftar ada dalam respons, SPEKE mengabaikannya.

    • SPEKE menghilangkan fungsionalitas root/leaf utama. Jika ContentKey@dependsOnKey atribut hadir dalam respons, SPEKE mengabaikannya.

    • SPEKE menghilangkan BitrateFilter elemen dan atribut. VideoFilter@wcg Jika elemen atau atribut ini ada di payload CPIX, SPEKE mengabaikannya.

  • Hanya elemen atau atribut yang dirujuk sebagai 'Didukung' pada halaman Kompon en Payload Standar atau halaman kontrak Enkripsi yang dapat digunakan dalam dokumen CPIX yang dipertukarkan dengan SPEKE v2.

  • Ketika disertakan dalam permintaan CPIX oleh enkripsi, semua elemen dan atribut harus membawa nilai yang valid dalam respons CPIX penyedia kunci. Jika tidak, enkripsi akan berhenti dan melemparkan kesalahan.

  • SPEKE mendukung rotasi kunci dengan KeyPeriodFilter elemen. SPEKE hanya menggunakan ContentKeyPeriod@index untuk melacak periode kunci.

  • Untuk pensinyalan HLS, beberapa DRMSystem.HLSSignalingData elemen harus digunakan: satu dengan nilai DRMSystem.HLSSignalingData@playlist atribut 'media', dan satu lagi dengan nilai DRMSystem.HLSSignalingData@playlist atribut 'master'.

  • Saat meminta kunci, enkripsi mungkin menggunakan @explicitIV atribut opsional pada ContentKey elemen. Penyedia kunci dapat merespons dengan menggunakan IV@explicitIV, bahkan jika atribut tidak termasuk dalam permintaan.

  • Enkripsi membuat pengenal kunci (KID), yang tetap sama untuk ID konten dan periode kunci tertentu. Penyedia kunci termasuk KID dalam tanggapannya terhadap dokumen permintaan.

  • Enkripsi harus menyertakan nilai untuk atribut. CPIX@contentId Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing CPIX @contentId '. CPIX@contentIdnilai tidak dapat diganti oleh penyedia kunci.

    CPIX@idnilai, jika bukan null, akan diabaikan oleh penyedia kunci.

  • Enkripsi harus menyertakan nilai untuk atribut. CPIX@version Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing CPIX @version '. Saat menerima permintaan dengan versi yang tidak didukung, deskripsi kesalahan yang dikembalikan oleh penyedia kunci adalah 'Tidak didukung CPIX @version '.

    CPIX@versionnilai tidak dapat diganti oleh penyedia kunci.

  • Enkripsi harus menyertakan nilai untuk ContentKey@commonEncryptionScheme atribut untuk setiap kunci yang diminta. Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing ContentKey @common EncryptionScheme for KID id '.

    Dokumen CPIX unik tidak dapat mencampur beberapa nilai untuk ContentKey@commonEncryptionScheme atribut yang berbeda. Saat menerima kombinasi seperti itu, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Kombinasi ContentKey @common yang tidak sesuai. EncryptionScheme '

    Tidak semua ContentKey@commonEncryptionScheme nilai kompatibel dengan semua teknologi DRM. Saat menerima kombinasi seperti itu, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'ContentKey@common tidak kompatibel EncryptionScheme dengan DRMSystemid'.

    ContentKey@commonEncryptionSchemenilai tidak dapat diganti oleh penyedia kunci.

  • Saat menerima nilai yang berbeda untuk DRMSystem@PSSH dan <pssh> elemen DRMSystem.ContentProtectionData innerXML dalam badan respons CPIX, enkripsi harus berhenti dan memberikan kesalahan.

API untuk CPIX
  • Penyedia kunci harus menyertakan nilai untuk header respons X-Speke-User-Agent HTTP.

  • SPEKE-compliant Enkripsi bertindak sebagai klien dan mengirimkan operasi POST ke titik akhir penyedia kunci.

  • Enkripsi harus menyertakan nilai untuk header permintaan X-Speke-Version HTTP, dengan versi SPEKE yang digunakan dengan permintaan, dirumuskan sebagai MajorVersion.MinorVersion, seperti '2.0' untuk SPEKE v2.0. Jika penyedia kunci tidak mendukung versi SPEKE yang digunakan oleh enkripsi untuk permintaan saat ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Versi SPEKE yang tidak didukung' dan tidak mencoba memproses dokumen CPIX berdasarkan upaya terbaik.

    Nilai X-Speke-Version header yang ditentukan oleh enkripsi tidak dapat dimodifikasi oleh penyedia kunci dalam menanggapi permintaan.

  • Saat menerima kesalahan dalam badan respons, enkripsi harus melempar kesalahan dan tidak mencoba lagi permintaan dengan versi SPEKE v1.0.

    Jika penyedia kunci tidak mengembalikan kesalahan tetapi gagal mengembalikan dokumen CPIX yang menyertakan informasi wajib, enkripsi harus berhenti dan melemparkan kesalahan.

Tabel berikut merangkum pesan standar yang harus dikembalikan oleh penyedia kunci di badan pesan. Kode respon HTTP dalam kasus kesalahan harus 4XX atau 5XX, tidak pernah 200. Kode kesalahan 422 dapat digunakan untuk semua kesalahan yang terkait SPEKE/CPIX.

Kasus kesalahan Pesan kesalahan

CPIX @contentId tidak ditentukan

Hilang CPIX @contentId

CPIX @version tidak ditentukan

Hilang CPIX @version

CPIX @version tidak didukung

CPIX @version tidak didukung

ContentKey@common EncryptionScheme tidak didefinisikan

Hilang ContentKey @common EncryptionScheme untuk KID id (di mana id sama dengan nilai ContentKey @kid)

Beberapa EncryptionScheme nilai ContentKey @common digunakan dalam satu dokumen CPIX

EncryptionScheme Kombinasi ContentKey @common yang tidak sesuai

ContentKey@common EncryptionScheme tidak kompatibel dengan teknologi DRM

ContentKey@common tidak EncryptionScheme kompatibel dengan DRMSystem id (di mana id sama dengan nilai DRMSystem @systemId)

X-Speke-Version nilai header bukan versi SPEKE yang didukung

Versi SPEKE tidak didukung

Kontrak enkripsi salah bentuk

Kontrak enkripsi yang salah

Kontrak enkripsi bertentangan dengan batasan tingkat keamanan DRM

Kontrak enkripsi CPIX yang diminta tidak didukung

Kontrak enkripsi tidak menyertakan AudioFilter elemen VideoFilter atau

Kontrak enkripsi CPIX hilang