Aracılığıyla paylaş


PlayReady İçerik Şifreleme Modları

Bu konu, PlayReady sistemlerinde içerik şifreleme modları hakkında genel bir bakış sağlar. PlayReady ve içerik şifreleme hakkında genel bir bakış için bkz. PlayReady İçerik Şifrelemesi. Şifreleme terimleri ve tanımları için bkz. Sözlük .

PlayReady sürüm 1.0, daha önce WMDRM'de (Windows Media Digital Rights Management) kullanılan Microsoft'a özgü KOKTEYL şifreleme moduna ek olarak AES-128 CTR içerik şifreleme modunu da kullanıma sunulmuştur. AES-128 CTR içerik şifreleme modu, Karşı Mod'daki (CTR) içerik dosyalarında kullanılan 128 bit uzunluğunda AES anahtarlarını kullanır.

Sürüm 4.0'dan başlayarak PlayReady sistemleri hem Sayaç Modu (CTR) hem de Şifreleme Blok Zincirleme modunda (CBC) AES 128 bit tuşlarını destekler.

Bu değişiklik, PlayReady kullanan hizmetlerin tüm cihazlarda benzersiz bir akış ve dosya biçiminden tam olarak yararlanmasını sağlar. Ayrıca Microsoft, ISO/IEC FDIS 23000-19'da tanımlandığı gibi CMAF (Ortak Medya Uygulama Biçimi) standardını destekler.

Ortak Şifreleme modları

ISO standardı ISO/IEC 23001-7 dört Ortak Şifreleme modunu tanımlar.

Yaygın Şifreleme Modları

Sürüm 4.0 ile başlayan PlayReady İstemcileri, Ortak Şifreleme modu 'cenc' için AES CTR anahtarlarına ek olarak Ortak Şifreleme modu 'cbcs' için destek sağlayan AES CBC anahtarlarını destekler. 4.0 sürümünden önce AES CTR, yaygın olarak PlayReady İstemcileri tarafından desteklenen ve Ortak Şifreleme modu 'cenc' için destek sağlayan moddu. Ortak Şifreleme modları 'cens' ve 'cbc1', PlayReady ekosisteminde izin verilir ve teknik olarak mümkündür, ancak desteklenmez.

'cbcs' AES-CBC no'lu Şifreleme Şeması için Destek

PlayReady PK sürüm 4.0 üzerinde veya sonrasında oluşturulan tüm istemciler CBC anahtarlarını destekleyebilebilir. Destek, istemciler için isteğe bağlıdır ve lisans alma protokolündeki ek bir özellik aracılığıyla Lisans Sunucuları'na işaret edilir.

Sürüm KOKTEYL 'cenc' cbcs
PlayReady İstemcisi 1.0 destekli destekli desteklenmiyor
PlayReady İstemcisi 2.0 destekli destekli desteklenmiyor
PlayReady İstemcisi 2.5 destekli destekli desteklenmiyor
PlayReady İstemcisi 3.0 desteklenmiyor destekli desteklenmiyor
PlayReady İstemcisi 3.3 desteklenmiyor destekli desteklenmiyor
PlayReady İstemcisi 4.0 desteklenmiyor destekli destekli

Uyarı

  • Sürüm 1709 veya üzeri ile yükseltilen tüm Xbox One birimleri 'cbcs' desteğine sahip.
  • Sürüm 4.0 ile başlayan tüm PlayReady Lisans Sunucuları, CBC anahtarlarıyla lisans verilmesini destekler.

PlayReady Üst Bilgisinde ALGID Belirtilmesi

PlayReady Üst Bilgisi, genellikle bir içerik dosyasının veya akışın üst bilgisinde bulunan bir XML belgesidir. İstemcinin bu içeriğin şifresini çözmesi için gereken PlayReady özniteliklerini açıklar. PlayReady Üst Bilgisi'nin kendi özellikleri ve sürüm bilgileri vardır. Daha fazla bilgi için bkz. PlayReady Üst Bilgi Belirtimi.

Sürüm PlayReady Üst Bilgisi 4.3 PlayReady Üst Bilgisi 4.2 PlayReady Üst Bilgisi 4.1 PlayReady Üst Bilgisi 4.0
PlayReady İstemcisi 4.0
(4. nota bakınız)
PlayReady İstemcisi 3.3
Bakınız not 3
PlayReady İstemcisi 3.0
Bakınız not 3
PlayReady İstemcisi 2.5
(bkz. not 2)
PlayReady İstemcisi 2.0
(bkz. not 2)
PlayReady İstemcisi 1.0
(bkz. not 1)

Uyarı

  • (4) Xbox One sürüm 1709 veya üzeri PlayReady 4.X İstemcileridir.
  • (3) Windows 10'un tüm sürümleri ve Xbox One sürüm 1703 veya üzeri PlayReady 3.X İstemcileridir. 2017'nin ardından yayınlanan en yeni Windows dışı cihazlar (akıllı TV'ler gibi) PlayReady 3.X İstemcileridir.
  • (2) Silverlight ve Windows 8, 8.1, PlayReady 2.X İstemcileridir. 2011 ile 2017 arasında yayımlanan Windows dışı cihazların çoğu (örneğin, Akıllı TV'ler) PlayReady 2.X İstemcileridir.
  • (1) 2008 ile 2011 arasında yayımlanan Windows dışı cihazların çoğu (örneğin, Akıllı TV'ler) PlayReady 1.X İstemcileridir.

Aşağıda PlayReady Başlık v4.2 örneği verilmiştir.

<WRMHEADER
          version="4.2.0.0"
          xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
        <KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
       </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

ALGID (algoritma tanımlayıcısı), KID öğesinin bir özelliğidir ve içeriği şifrelemek için kullanılan şifreleme algoritmasını belirtir. PlayReady Header sürüm 4.2'den başlayarak, ALGID gereklidir ve "AESCTR" veya "KOKTEYL" olarak ayarlanmalıdır. Ancak 4.3 sürümünden itibaren ALGID değeri de "AESCBC" değerine ayarlanabilir. Aşağıdaki örnekte, ALGID değerlerinin "AESCBC" olarak ayarlandığı PlayReady Header sürüm 4.3 gösterilmektedir.

<WRMHEADER
          version="4.3.0.0"
          xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"/>
        <KID VALUE="tuhDoKUN7EyxDPtMRNmhyA==" ALGID="AESCBC"/>
      </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

Aşağıdaki şekilde, lisans isteğinin PlayReady Üst Bilgisini temel aldığı ve ALGID'nin belirtildiği bir içerik akışı (content flow) gösterilmektedir.

ALGID belirtilen içerik akışı

Eksik ALGID'ler

PlayReady Header sürüm 4.3'den başlayarak ALGID eksik olabilir. Aşağıdaki örnekte, ALGID değerlerinin eksik olduğu PlayReady Header sürüm 4.3 gösterilmektedir.

<WRMHEADER
          version="4.3.0.0"
          xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="/>
      </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

Aşağıdaki şekilde, lisans isteğinin CDMi modülünü kullandığı ve ALGID'in eksik olduğu bir içerik akışı gösterilmektedir.

ALGID eksik içerik akışı

Uyarı

Her PlayReady Üst Bilgisinde şu bilgiler bulunabilir:

  • Yalnızca bir şifreleme türü. Örneğin, ALGID="AESCTR" ise, üst bilgi için tüm anahtarlar CTR modunda kullanılır. ALGID="AESCBC" olduğunda, bu üst bilginin tüm anahtarları CBC modunda kullanılır.
  • ALGID eksik olduğunda, bu üst bilgi için tüm anahtarlar Sayaç Modu veya Şifreleme Blok Zincirinde kullanılır, ancak değer üst bilgisine eklenmez.
  • PlayReady Başlık v4.3 ile v4.0'ın altındaki bir Lisans Sunucusuna lisans alma isteğinde bulunmak hata verir.
  • Lisans yanıtı, her lisansın bir anahtarı ve herhangi bir sayıda ilkeyi içerdiği bir veya birden çok lisans içerebilir.

ALGID değeri neden eksik

Microsoft, şifreleyicilerin içeriği işlerken ekledikleri PlayReady Üst Bilgisinde her zaman aynı ALGID değerini içermesini önerir.

Standart bir senaryoda, şifreleyici içeriği şifreler ve içerikte PlayReady Üst Bilgisini oluşturur. Şifreleyici, şifreleme için hangi AES modunu kullandığını bilir; bu nedenle, bu bilgileri PlayReady Üst Bilgisinin ALGID özelliğine ekler. İstemciler, gerçek içerik dışında ayrıştırılan PlayReady Üst Bilgilerine dayalı lisans isteklerini başlatır, böylece ALGID değeri mevcut ve geçerli olur.

Bazı senaryolarda istemci basit bir KID değerine (128 bit GUID) dayalı bir lisans isteği başlatır. Bu durumda, lisans isteğine eklenen PlayReady Üst Bilgisindeki ALGID değeri eksik olacaktır (belirtilmemiş olarak da bilinir). Örneklerden biri, istemcinin HTML5 EME API'lerini kullanarak lisans isteğinde bulunmasıdır.

İstemcinin eksik bir ALGID'i işleme şekli

İstemci gelen PlayReady Üst Bilgisini temel alan bir lisans isteği başlatırsa, lisans alma sınaması PlayReady Üst Bilgisinin bir kopyasını içerdiğinden, lisans isteğindeki ALGID değeri üst bilgide bulunan değeri yansıtır. Bu durumda:

  • Tüm PlayReady Headers v4.2 veya daha düşük sürümler için ALGID değeri gereklidir ve geçerli olmalıdır.
  • PlayReady Headers v4.3 veya üzeri için ALGID değeri mevcut ve geçerli veya eksik olabilir.

Sunucu SDK'sı eksik bir ALGID'i nasıl işler?

Lisans yanıtı aracılığıyla teslim edilen tüm lisanslar geçerli bir ALGID değeri içermelidir.

Gelen lisans isteğinde ALGID belirtilmemişse, Lisans Sunucusu bu bilgileri hizmetin arka tarafından almalı ve lisans yanıtına doğru değeri koymalıdır.

Başlatma Vektörleri (IVs)

PlayReady 3.3 ve önceki sürümlerinde, CTR modunda yalnızca 64 bit IV'ler (8 baytlı IV'ler) desteklenir. PlayReady sürüm 4.0'dan itibaren hem 64 bit hem de 128 bit IV'ler (8 bayt ve 16 baytlık IV'ler) hem CTR hem de CBC modlarında desteklenir.

Örnekler:

  • CBC modunda sık sık 128 bit IV kullanan HLS uyumlu akışlar artık desteklenmektedir.
  • CTR modunda 128 bit IV kullanan bazı HbbTV uyumlu akışları artık desteklenmektedir.

Sınırlamalar

  • PlayReady Başlık tüm KID öğeleri için yalnızca bir ALGID değerini kullanmalıdır. Başka bir deyişle, bir varlığın farklı parçalarını ve niteliklerini şifrelemek için kullanılan tüm anahtarlar AES CTR veya AES CBC olmalıdır. HERHANGI bir KID öğesinde ALGID eksikse, tüm KID öğelerinde eksik olmalıdır.
  • PlayReady 4.4 sürümünden önce, gelen İstemci Sertifikası Windows ve SL2000 olduğunda, CBC anahtarıyla bir lisans oluşturmak istendiğinde bir özel durum oluşturur. Bunun nedeni Windows İstemcilerinin CBC'nin yalnızca SL3000 birimlerinde destekleniyor olmasıdır. Ancak bu istemci PlayReady sürüm 4.0 en düşük ise ve CBC modu için destek bildiriyorsa, bir SL2000 İstemcisine CBC anahtarıyla lisans teslim etmek mümkün olabilir.
  • Porting Kit'in 4.0 öncesi bir sürümünü kullanan cihazlar için gelen İstemci Sertifikası söz konusu olduğunda, CBC anahtarı kullanarak lisans oluşturmak hatalara yol açar.
  • Gelen lisans isteği AES CBC desteğini belirtmediğinde, bir CBC anahtarıyla lisans oluşturmak bir istisna fırlatacaktır.

Önemli

Hizmet, aynı {KID, Ck} kullanarak CTR modunda ve CBC modunda tek bir içerik parçasını şifrelememelidir.

  • İşlevsel nedenlerle hem {KID, Ck, AESCTR} hem de {KID, Ck, AESCBC} için lisans alan bir istemci çalışmaz.
  • Sağlamlık nedenleriyle, hem CBC hem de CTR modlarında aynı anahtarla şifrelenmiş aynı içeriğe erişimi olan bir saldırgan, yetkilendirme olmadan içeriğin şifresini daha kolay çözebilir.