Megosztás:


PlayReady tartalomtitkosítási módok

Ez a témakör áttekintést nyújt a PlayReady-rendszerek tartalomtitkosítási módjairól. A PlayReady és a tartalomtitkosítás áttekintése: PlayReady Content Encryption. A titkosítási kifejezésekről és definíciókról lásd a szószedetet .

A PlayReady 1.0-s verziója bevezette az AES-128 CTR tartalomtitkosítási módot a KORÁBBAN a WMDRM-ben (Windows Media Digital Rights Management) használt Microsoft-specifikus KOKTÉL titkosítási mód mellett. Az AES-128 CTR tartalomtitkosítási mód AES-kulcsokat használ, amelynek hossza 128 bit, amelyet számláló módban (CTR) használnak a tartalomfájlokban.

A 4.0-s verziótól kezdve a PlayReady-rendszerek támogatják az AES 128 bites kulcsait számláló módban (CTR) és titkosítási blokklánc módban (CBC).

Ez a módosítás biztosítja, hogy a PlayReadyt használó szolgáltatások teljes mértékben kihasználhassák az egyedi stream- és fájlformátumot minden eszközön. Emellett a Microsoft támogatja az ISO/IEC FDIS 23000-19 szabványban meghatározott CMAF (Common Media Application Format) szabványt.

Gyakori titkosítási módok

Az ISO/IEC 23001-7 ISO szabvány négy közös titkosítási módot határoz meg.

Gyakori titkosítási módok

A PlayReady-ügyfelek a 4.0-s verziótól kezdve támogatják az AES CBC-kulcsokat, amely lehetővé teszi a közös titkosítási mód (cbcs) támogatását, a "cenc" közös titkosítási módhoz tartozó AES CTR-kulcsok mellett. A 4.0-s verzió előtt az AES CTR volt az a mód, amelyet elsősorban a PlayReady-ügyfelek támogattak, ami lehetővé teszi a "cenc" közös titkosítási mód támogatását. Vegye figyelembe, hogy a "cens" és a "cbc1" közös titkosítási módok engedélyezettek és technikailag végrehajthatók a PlayReady-ökoszisztémában, de nem támogatottak.

A cbcs AES-CBC titkosítási sémájának támogatása

A PlayReady PK 4.0-s verziójára épülő vagy azt követő összes ügyfél támogathatja a CBC-kulcsokat. A támogatás nem kötelező az ügyfelek számára, viszont ez a licenckiszolgálóknak egy további tulajdonságként van jelezve a licencszerzési protokollban.

verzió KOKTÉL "cenc" "cbcs"
PlayReady-ügyfél 1.0 Támogatott Támogatott nem támogatott
PlayReady-ügyfél 2.0 Támogatott Támogatott nem támogatott
PlayReady-ügyfél 2.5 Támogatott Támogatott nem támogatott
PlayReady Kliens 3.0 nem támogatott Támogatott nem támogatott
PlayReady-ügyfél 3.3 nem támogatott Támogatott nem támogatott
PlayReady-ügyfél 4.0 nem támogatott Támogatott Támogatott

Megjegyzés:

  • A 1709-es vagy újabb verziójú Xbox One-egységek mindegyike támogatja a cbcs-t.
  • A 4.0-s verziótól kezdve minden PlayReady-licenckiszolgáló támogatja a licencek CBC-kulcsokkal való kiadását.

Az ALGID jelzése a PlayReady fejlécben

A PlayReady-fejléc általában egy tartalomfájl vagy stream fejlécében található XML-dokumentum. Ismerteti azokat a PlayReady-attribútumokat, amelyekre az ügyfélnek szüksége van a tartalom visszafejtéséhez. A PlayReady-fejléc saját specifikációval és verziószámozással rendelkezik. További információ: PlayReady Header Specification.

verzió PlayReady Fejléc 4.3 PlayReady Fejléc 4.2 PlayReady Fejléc 4.1 PlayReady Header 4.0
PlayReady-ügyfél 4.0
(lásd a 4. megjegyzést)
PlayReady-ügyfél 3.3
(lásd a 3. megjegyzést)
PlayReady Kliens 3.0
(lásd a 3. megjegyzést)
PlayReady-ügyfél 2.5
(lásd a 2. megjegyzést)
PlayReady-ügyfél 2.0
(lásd a 2. megjegyzést)
PlayReady-ügyfél 1.0
(lásd az 1. megjegyzést)

Megjegyzés:

  • (4) Az Xbox One 1709-es vagy újabb verziói PlayReady 4.X klienseket tartalmaznak.
  • (3) A Windows 10 minden verziója és az Xbox One 1703-as vagy újabb verziója a PlayReady 3.X-ügyfelek. A 2017 után kiadott legújabb nem Windows rendszerű eszközök (például intelligens tévék) a PlayReady 3.X-ügyfelek.
  • (2) A Silverlight és a Windows 8, 8.1 PlayReady 2.X-ügyfelek. A 2011 és 2017 között kiadott legtöbb nem Windows rendszerű eszköz (például intelligens tévé) a PlayReady 2.X-ügyfelek.
  • (1) A 2008 és 2011 között kiadott legtöbb nem Windows rendszerű eszköz (például intelligens tévé) a PlayReady 1.X-ügyfelek.

Az alábbiakban egy Példa a PlayReady Header 4.2-s verziójára.

<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>

Az ALGID (algoritmusazonosító) a KID elem tulajdonsága, és megadja a tartalom titkosításához használt titkosítási algoritmust. A PlayReady Header 4.2-es verziójától kezdve az ALGID megadása kötelező, és "AESCTR" vagy "COCKTAIL" értékre kell állítani. A 4.3-es verziótól kezdve azonban az ALGID az "AESCBC" értékre is beállítható. Az alábbi példa egy PlayReady-fejléc 4.3-as verzióját mutatja be, amelynek ALGID-értéke "AESCBC".

<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>

Az alábbi ábra egy tartalomfolyamatot mutat be, ahol a licenckérelem a PlayReady-fejlécen alapul, és az ALGID meg van adva.

Tartalomfolyam megadott ALGID azonosítóval

Hiányzó ALGID-k

A PlayReady-fejléc 4.3-as verziójától kezdve előfordulhat, hogy az ALGID hiányzik. Az alábbi példa egy PlayReady-fejléc 4.3-as verzióját mutatja be, amelyből hiányzik az ALGID-érték.

<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>

Az alábbi ábra egy tartalomfolyamatot mutat be, ahol a licenckérelem a CDMi modult használja, és hiányzik az ALGID.

Hiányzó ALGID-azonosítójú tartalomfolyam

Megjegyzés:

Az egyes PlayReady-fejlécek a következőt tartalmazhatják:

  • Csak egy titkosítási típus. Ha például ALGID="AESCTR", a fejléc összes kulcsa CTR módban lesz használva. Ha ALGID="AESCBC", a fejléc összes kulcsa CBC módban lesz használva.
  • Ha hiányzik az ALGID, a fejléc összes kulcsa számláló üzemmódban vagy titkosítási blokklánc üzemmódban kerül felhasználásra, de az érték nem kerül bele a fejlécbe.
  • A PlayReady Header v4.3 licencbeszerzési kérelmet küldeni egy licenckiszolgálónak, amely v4.0 alatti verzióval rendelkezik, kivételt fog eredményezni.
  • A licencválaszok tartalmazhatnak egy vagy több licencet, ahol minden licenc egy kulcsot és tetszőleges számú szabályzatot tartalmaz.

Miért hiányzik az ALGID-érték?

A Microsoft azt javasolja, hogy a titkosítók mindig ugyanazt az ALGID-értéket tartalmazzák a PlayReady-fejlécben, amelyet a tartalom feldolgozásakor tartalmaztak.

Normál forgatókönyv esetén a titkosító titkosítja a tartalmat, és létrehozza a PlayReady-fejlécet a tartalomban. A titkosító tudja, hogy melyik AES-módot használja a titkosításhoz; így ezeket az információkat a PlayReady-fejléc ALGID tulajdonságában tartalmazza. Az ügyfelek valós tartalomból elemezett PlayReady-fejlécek alapján kezdeményeznek licenckéréseket, így az ALGID érték jelen van és érvényes.

Bizonyos esetekben az ügyfél egy egyszerű KID-érték (128 bites GUID) alapján kezdeményez licenckérelmet. Ebben az esetben a licenckérelembe beszúrt PlayReady-fejléc ALGID-értéke hiányzik (más néven meghatározatlan). Ilyen például, ha az ügyfél HTML5 EME API-k használatával küld licenckérelmet.

Hogyan kezeli az ügyfél a hiányzó ALGID-et?

Ha az ügyfél egy bejövő PlayReady-fejléc alapján kezdeményez licenckérelmet, akkor a licenckérelemben szereplő ALGID érték a fejlécben található értéket fogja tükrözni, mert a licencszerzési feladat tartalmazza a PlayReady-fejléc másolatát. Ebben az esetben:

  • Az összes PlayReady-fejléc 4.2-s vagy újabb verziójához az ALGID érték megadása kötelező, és érvényesnek kell lennie.
  • A PlayReady-fejlécek 4.3-as vagy újabb verziója esetén az ALGID érték jelen lehet, érvényes vagy hiányzik.

A kiszolgáló SDK-jának kezelése hiányzó ALGID-azonosítóval

A licencválaszon keresztül kézbesített összes licencnek tartalmaznia kell egy érvényes ALGID-értéket.

Ha az ALGID nincs meghatározva a bejövő licenckérelemben, a licenckiszolgálónak le kell kérnie ezeket az adatokat a szolgáltatás háttérrendszeréből, és a megfelelő értéket kell elhelyeznie a licencválaszban.

Inicializálási vektorok (IV-k)

A PlayReady 3.3 és korábbi verzióiban csak a 64 bites (8 bájtos) inicializációs vektorok támogatottak a CTR módban. A PlayReady 4.0-s verziójától kezdve a 64 bites és a 128 bites (8 bájtos és 16 bájtos) virtuális gépek egyaránt támogatottak CTR és CBC módban is.

Példák:

  • Mostantól támogatottak azok a HLS-kompatibilis streamek, amelyek gyakran használnak 128 bites IV-ket CBC módban.
  • Azok a HbbTV-konform streamek, amelyek 128 bites IV-ket használnak CTR módban, mostantól támogatottak.

Korlátozások

  • A PlayReady-fejlécnek csak egy ALGID-értéket kell használnia az összes KID-elemhez. Más szóval az eszköz különböző pályáinak és tulajdonságainak titkosításához használt összes kulcsnak AES CTR-nek vagy AES CBC-nek kell lennie. Ha az ALGID hiányzik bármelyik KID-elemből, akkor az összes KID-elemből hiányzik.
  • A PlayReady 4.4-es verziója előtt kivételt vált ki a CBC-kulccsal rendelkező licenc generálása, ha a bejövő ügyféltanúsítvány Windows és SL2000. Ennek az az oka, hogy a Windows-ügyfelek csak SL3000 egységeken támogatják a CBC-t. Előfordulhat, hogy egy CBC kulcsot tartalmazó licencet átadhat egy SL2000 ügyfélnek, amennyiben ez az ügyfél minimum PlayReady 4.0 verziójú, és deklarálja a CBC mód támogatását.
  • A CBC-kulccsal rendelkező licenc létrehozása, ha a bejövő ügyféltanúsítvány olyan eszköz, amely a Porting Kit 4.0 előtti verzióját használja, kivételt jelent.
  • A CBC-kulccsal rendelkező licenc létrehozása, ha a bejövő licenckérelem nem jelzi az AES CBC támogatását, kivételt okoz.

Fontos

A szolgáltatások nem titkosítanak egyetlen tartalomrészt CTR módban és CBC módban ugyanazzal a {KID, Ck} használatával.

  • Funkcionális okokból a(z) {KID, Ck, AESCTR} és {KID, Ck, AESCBC} licencét beszerző ügyfél nem működne.
  • A robusztusság érdekében a támadók, akik ugyanahhoz a kulccsal titkosított tartalomhoz férnek hozzá cBC és CTR módban is, könnyebben visszafejthetik a tartalmakat engedélyezés nélkül.