Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.
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.
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.
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.