Bagikan melalui


Pengamanan Konten PlayReady

Topik ini memberikan gambaran umum tentang algoritma enkripsi yang digunakan untuk melindungi konten dalam ekosistem PlayReady.

Nota

Lihat Glosarium untuk istilah dan definisi enkripsi.

Dasar-dasar enkripsi

Kriptografi kunci simetris adalah jenis enkripsi paling sederhana. Dengan kriptografi kunci simetris, kunci yang sama digunakan untuk mengenkripsi dan mendekripsi konten. Algoritma kunci simetris biasanya kecil dan cepat. Biasanya, sebagian besar tugas enkripsi apa pun ditangani oleh salah satu bentuk enkripsi kunci simetri.

Kriptografi kunci publik, sebaliknya, menggunakan kunci publik yang diterbitkan untuk mengenkripsi, dan kunci privat yang berbeda, rahasia, untuk didekripsi. Dengan demikian, jika pengguna "A" memberi pengguna "B" kunci publik, B dapat mengenkripsi konten untuk A tanpa informasi lain. Tidak peduli bagaimana konten ditransmisikan, hanya A yang dapat membacanya. Pencegat konten tidak memiliki kunci privat (kunci rahasia) dan tidak dapat mendekripsi pesan. Karena kunci publik tersedia secara terbuka, siapa pun dapat mengenkripsi untuk A, tetapi hanya A yang dapat mendekripsi. Kriptografi kunci publik memerlukan algoritma yang kompleks secara komputasi.

Kriptografi kurva elips (ECC) adalah algoritma kriptografi kunci publik yang digunakan untuk mengenkripsi dan mendekripsi konten. Ini adalah fungsi komputasi kompleks yang menggambarkan kurva elips. Komponen algoritma ini dibagikan sebagai kunci publik. Komponen lain, digunakan untuk dekripsi, membentuk kunci privat.

Kode Autentikasi Pesan Satu Kunci (OMAC) adalah kode autentikasi pesan yang dibuat dari cipher blok. Ada dua algoritma OMAC, OMAC1 dan OMAC2.

Sertifikat digunakan untuk memastikan keaslian untuk entitas yang tidak tepercaya. Pengirim sertifikat menandatangani namanya (pengidentifikasi perangkat) dengan menggunakan kunci privatnya. Penerima sertifikat kemudian memverifikasi tanda tangan sertifikat dengan kunci umum pengirim untuk memastikan identitas pengirim. Karena pengirim adalah satu-satunya pemilik kunci privat, sulit untuk membuat kunci privat yang diberi kunci publik, dan sertifikat tidak akan diverifikasi dengan benar kecuali ditandatangani dengan kunci privat; dalam hal ini, sumber data diasumsikan benar dan komunikasi bersertifikat aman.

Algoritma enkripsi PlayReady untuk pengelolaan hak digital

Algoritma simetris

Mode enkripsi AES berikut didukung:

  • Mode AES 128 CTR — Sistem PlayReady dapat melindungi file dan aliran di mana sampel dienkripsi secara penuh atau di mana hanya pola sampel yang dienkripsi, dalam mode operasi CTR. Ini termasuk mode Enkripsi Umum 'cenc' (Common Encryption Scheme) dan 'cens' (Common Encryption Scheme menggunakan pola byte tidak terenkripsi/terenkripsi), yang didefinisikan dalam ISO/IEC 23001-7.

  • Mode CBC AES 128 — Sistem PlayReady yang dimulai dengan versi 4.0 dapat melindungi file dan aliran yang sepenuhnya atau sebagian dienkripsi dengan kunci konten AES 128, dalam mode operasi CBC. Ini termasuk mode Enkripsi Umum 'cbc1' dan 'cbcs' seperti yang didefinisikan dalam ISO/IEC 23001-7, dan format lain yang dienkripsi dengan kunci konten AES 128 dalam mode CBC.

Nota

Sistem PlayReady dengan versi 1.X, 2.X, dan 3.X hanya dapat melindungi file yang dienkripsi dalam mode CTR (mode Enkripsi Umum 'cenc'). 'cens' tidak didukung. Sistem PlayReady dengan versi 4.0 dan yang lebih tinggi dapat melindungi file yang dienkripsi dalam mode CTR (mode Enkripsi Umum 'cenc') dan dalam mode CBC (mode Enkripsi Umum 'cbcs'). Mode lain 'cens' dan 'cbc1' tidak didukung.

Algoritma ECC

Sistem Microsoft PlayReady menggunakan ECC (Kriptografi kurva elips) untuk mengenkripsi kunci konten dan menandatangani pesan protokol.

  • Algoritma ECC ElGamal — Digunakan untuk kunci konten terenkripsi.
  • ECDSA (Algoritma tanda tangan digital kurva elips) — Digunakan untuk menandatangani pesan di mana pun berlaku dalam protokol PlayReady.
  • NIST — Sistem Microsoft PlayReady menggunakan algoritma NIST standar untuk enkripsi ECC jika berlaku dan saat ini menggunakan kurva elips P-256.

Algoritma penandatanganan

Untuk menandatangani lisensi, kunci atau data sementara, sistem PlayReady menggunakan AES OMAC1, yang setara dengan CMAC (Kode Autentikasi pesan berbasis Sandi) dan menjadi rekomendasi NIST pada Mei 2005. Kunci dihasilkan secara acak, tetapi data di-hash dengan SHA256 dan kemudian hash ditandatangani dengan ECC256.

Pertimbangan runtime dan kinerja

Ketika pemutaran konten dipicu, Klien PlayReady harus melakukan beberapa langkah sebelum pemutaran awal dapat dimulai. Ini termasuk menemukan lisensi, mengikat, atau menafsirkan lisensi, mendekripsi kunci konten, dan akhirnya, bersiap untuk mendekripsi konten. Tumpukan Klien PlayReady membutuhkan waktu untuk mengikat lisensi ke bagian konten, dan operasi ini diperlukan sebelum memulai dekripsi dan penyajian konten. Ini berarti bahwa waktu untuk lisensi yang terikat memengaruhi waktu menuju bingkai pertama saat memulai pemutaran, atau jeda antar lagu. Pengembang klien serta pengembang aplikasi mungkin ingin mempertimbangkan untuk mengoptimalkan kode mereka untuk runtime dan masalah performa, mengurangi waktu untuk mencapai bingkai pertama, dan memungkinkan pemutaran tanpa jeda.

Kontainer yang dilindungi menggunakan enkripsi kunci simetris untuk mengenkripsi sebagian besar isi konten. Namun, enkripsi kunci publik digunakan dalam lisensi. Ini karena lisensi berisi kunci simetris konten, dan server menggunakan kunci publik klien untuk mengenkripsi kunci simetris konten.

Ketika saatnya untuk mendekripsi konten, kunci privat klien digunakan untuk mendekripsi kunci simetris dari lisensi. Hanya klien yang lisensinya terikat yang dapat mengekstrak kunci simetris.

Dekripsi kunci privat lebih intensif secara komputasi daripada dekripsi simetris; oleh karena itu, interpretasi lisensi juga intensif secara komputasi. Setelah lisensi ditangani dengan benar, kunci simetris didekripsi dan kemudian konten dapat didekripsi menggunakan algoritma yang kecil dan cepat.

Untuk aplikasi atau perangkat yang dibatasi sumber daya, start-up memerlukan waktu dan sumber daya yang signifikan. Setelah itu selesai, sumber daya dibebaskan, dekripsi dapat berlangsung secara efisien, dan hanya sedikit siklus CPU atau sumber daya sistem yang diperlukan.