Bagikan melalui


DRM Perangkat Keras

Topik ini memberikan gambaran umum tentang cara menambahkan manajemen hak digital (DRM) berbasis perangkat keras PlayReady ke aplikasi Platform Windows Universal (UWP) Anda.

Catatan

DRM PlayReady berbasis perangkat keras didukung pada banyak perangkat, termasuk perangkat Windows dan non-Windows seperti set TV, ponsel, dan tablet. Agar perangkat Windows mendukung DRM Perangkat Keras PlayReady, perangkat keras harus menjalankan Windows 10 dan memiliki konfigurasi perangkat keras yang didukung.

Semakin banyak, penyedia konten bergerak menuju perlindungan berbasis perangkat keras untuk memberikan izin untuk memutar kembali konten bernilai tinggi penuh di aplikasi. Dukungan yang kuat untuk implementasi perangkat keras inti kriptografi telah ditambahkan ke PlayReady untuk memenuhi kebutuhan ini. Dukungan ini memungkinkan pemutaran aman konten definisi tinggi (1080p) dan definisi ultra-tinggi (UHD) pada beberapa platform perangkat. Materi utama (termasuk kunci privat, kunci konten, dan materi kunci lain yang digunakan untuk mendapatkan atau membuka kunci kunci tersebut), dan sampel video terkompresi dan tidak terkompresi yang didekripsi dilindungi dengan memanfaatkan keamanan perangkat keras.

Implementasi TEE Windows

Topik ini memberikan gambaran singkat tentang bagaimana Windows 10 mengimplementasikan lingkungan eksekusi tepercaya (TEE).

Detail implementasi TEE Windows berada di luar cakupan untuk dokumen ini. Namun, diskusi singkat tentang perbedaan antara port TEE kit porting standar dan port Windows akan bermanfaat. Windows mengimplementasikan lapisan proksi OEM dan mentransfer panggilan fungsi PRITEE berseri ke driver mode pengguna di subsistem Windows Media Foundation. Ini akhirnya akan dirutekan ke driver Windows TrEE (Trusted Execution Environment) atau driver grafis OEM. Detail salah satu pendekatan ini berada di luar cakupan untuk dokumen ini. Diagram berikut menunjukkan interaksi komponen umum untuk port Windows. Jika Anda ingin mengembangkan implementasi TEE Windows PlayReady, Anda bisa menghubungi WMLA@Microsoft.com.

diagram komponen tee windows

Pertimbangan untuk menggunakan DRM perangkat keras

Topik ini menyediakan daftar singkat item yang harus dipertimbangkan saat mengembangkan aplikasi yang dirancang untuk menggunakan DRM perangkat keras. Seperti yang dijelaskan dalam PlayReady DRM, dengan PlayReady HWDRM untuk Windows 10, semua perlindungan output diberlakukan dari dalam implementasi TEE Windows, yang memiliki beberapa konsekuensi pada perilaku perlindungan output:

  • Dukungan untuk tingkat perlindungan output (OPL) untuk video digital 270 yang tidak dikompresi: PlayReady HWDRM untuk Windows 10 tidak mendukung resolusi rendah dan akan memberlakukan bahwa HDCP terlibat. Sebaiknya konten definisi tinggi untuk HWDRM memiliki OPL yang lebih besar dari 270 (meskipun tidak diperlukan). Selain itu, kami sarankan Anda mengatur pembatasan jenis HDCP dalam lisensi (HDCP versi 2.2 pada Windows 10).
  • Tidak seperti DRM perangkat lunak (SWDRM), perlindungan output diberlakukan pada semua monitor berdasarkan monitor yang paling tidak mampu. Misalnya, jika pengguna memiliki dua monitor yang terhubung di mana salah satu monitor mendukung HDCP dan yang lain tidak, pemutaran akan gagal jika lisensi memerlukan HDCP bahkan jika konten hanya dirender pada monitor yang mendukung HDCP. Dalam DRM perangkat lunak, konten akan diputar kembali selama hanya dirender pada monitor yang mendukung HDCP.
  • HWDRM tidak dijamin digunakan oleh klien dan aman kecuali kondisi berikut dipenuhi oleh kunci konten dan lisensi:
    • Lisensi yang digunakan untuk kunci konten video harus memiliki properti tingkat Keamanan Minimum 3000.
    • Audio harus dienkripsi ke kunci konten yang berbeda dari video, dan lisensi yang digunakan untuk audio harus memiliki properti tingkat Keamanan Minimum 2000. Atau, audio dapat dibiarkan jelas.

Selain itu, Anda harus mempertimbangkan item berikut saat menggunakan HWDRM:

  • Proses Media Terproteksi (PMP) tidak didukung.
  • Windows Media Video (juga dikenal sebagai VC-1) tidak didukung (lihat Mengambil alih DRM perangkat keras).
  • Beberapa unit pemrosesan grafis (GPU) tidak didukung untuk lisensi persisten.

Untuk menangani lisensi persisten pada komputer dengan beberapa GPU, pertimbangkan skenario berikut:

  1. Pelanggan membeli mesin baru dengan kartu grafis terintegrasi.
  2. Pelanggan menggunakan aplikasi yang memperoleh lisensi persisten saat menggunakan DRM perangkat keras.
  3. Lisensi persisten sekarang terikat ke kunci perangkat keras kartu grafis tersebut.
  4. Pelanggan kemudian menginstal kartu grafis baru.
  5. Semua lisensi di penyimpanan data yang di-hash (HDS) terikat ke kartu video terintegrasi, tetapi pelanggan sekarang ingin memutar kembali konten yang dilindungi menggunakan kartu grafis yang baru diinstal.

Untuk mencegah pemutaran gagal karena lisensi tidak dapat didekripsi oleh perangkat keras, PlayReady menggunakan HDS terpisah untuk setiap kartu grafis yang ditemuinya. Ini akan menyebabkan PlayReady mencoba akuisisi lisensi untuk sebagian konten di mana PlayReady biasanya sudah memiliki lisensi (yaitu, dalam kasus DRM perangkat lunak atau kasus apa pun tanpa perubahan perangkat keras, PlayReady tidak perlu meminta kembali lisensi). Oleh karena itu, jika aplikasi memperoleh lisensi persisten saat menggunakan DRM perangkat keras, aplikasi Anda harus dapat menangani kasus di mana lisensi tersebut secara efektif "hilang" jika pengguna akhir menginstal (atau menghapus instalasi) kartu grafis. Karena ini bukan skenario umum, Anda dapat memutuskan untuk menangani panggilan dukungan ketika konten tidak lagi diputar setelah perubahan perangkat keras daripada mencari tahu cara menangani perubahan perangkat keras dalam kode klien/server.

Mengambil alih DRM perangkat keras

Bagian ini menjelaskan cara mengambil alih DRM perangkat keras (HWDRM) jika konten yang akan diputar kembali tidak mendukung DRM perangkat keras.

Secara default, DRM perangkat keras digunakan jika sistem mendukungnya. Namun, beberapa konten tidak didukung dalam DRM perangkat keras. Salah satu contohnya adalah konten Cocktail. Contoh lain adalah konten apa pun yang menggunakan codec video selain H.264 dan HEVC. Contoh lain adalah konten HEVC, karena beberapa DRM perangkat keras akan mendukung HEVC dan beberapa tidak akan. Oleh karena itu, jika Anda ingin memutar konten dan DRM perangkat keras tidak mendukungnya pada sistem yang dimaksud, Anda mungkin ingin menolak DRM perangkat keras.

Contoh berikut menunjukkan cara menolak DRM perangkat keras. Anda hanya perlu melakukan ini sebelum beralih. Selain itu, pastikan Anda tidak memiliki objek PlayReady dalam memori, jika tidak, perilaku tidak ditentukan.

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;

Untuk beralih kembali ke DRM perangkat keras, atur nilai SoftwareOverride ke 0.

Untuk setiap pemutaran media, Anda perlu mengatur MediaProtectionManager ke:

mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;

Cara terbaik untuk mengetahui apakah Anda berada di DRM perangkat keras atau DRM perangkat lunak adalah dengan melihat C:\Users\<username>\AppData\Local\Packages\<application name>\LocalCache\PlayReady\*

  • Jika ada file mspr.hds, Anda berada dalam DRM perangkat lunak.
  • Jika Anda memiliki file *.hds lain, Anda berada di DRM perangkat keras.
  • Anda juga dapat menghapus seluruh folder PlayReady dan mencoba kembali pengujian Anda.

Mendeteksi jenis DRM perangkat keras

Bagian ini menjelaskan cara mendeteksi jenis DRM perangkat keras apa yang didukung pada sistem.

Anda dapat menggunakan metode PlayReadyStatics.CheckSupportedHardware untuk menentukan apakah sistem mendukung fitur DRM perangkat keras tertentu. Contohnya:

bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);

Enumerasi PlayReadyHardwareDRMFeatures berisi daftar nilai fitur DRM perangkat keras yang valid yang dapat dikueri. Untuk menentukan apakah DRM perangkat keras didukung, gunakan anggota HardwareDRM dalam kueri. Untuk menentukan apakah perangkat keras mendukung codec High Efficiency Video Coding (HEVC)/H.265, gunakan anggota HEVC dalam kueri.

Anda juga dapat menggunakan properti PlayReadyStatics.PlayReadyCertificateSecurityLevel untuk mendapatkan tingkat keamanan sertifikat klien untuk menentukan apakah DRM perangkat keras didukung. Kecuali tingkat keamanan sertifikat yang dikembalikan lebih besar dari atau sama dengan 3000, klien tidak disortir atau disediakan (dalam hal ini properti ini mengembalikan 0) atau DRM perangkat keras tidak digunakan (dalam hal ini properti ini mengembalikan nilai kurang dari 3000).

Mendeteksi dukungan untuk DRM perangkat keras AES128CBC

Dimulai dengan Windows 10, versi 1709, Anda dapat mendeteksi dukungan untuk AES128CBC enkripsi perangkat keras pada perangkat dengan memanggil PlayReadyStatics.CheckSupportedHardware dan menentukan nilai enumerasi PlayReadyHardwareDRMFeatures.Aes128Cbc. Pada versi Windows 10 sebelumnya, menentukan nilai ini akan menyebabkan pengecualian dilemparkan. Untuk alasan ini, Anda harus memeriksa keberadaan nilai enumerasi dengan memanggil ApiInformation.IsApiContractPresent dan menentukan kontrak utama versi 5 sebelum memanggil CheckSupportedHardware.

bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);

if (supportsAes128Cbc)
{
    supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}

Lihat juga