Dela via


PlayReady-innehållskryptering

Det här avsnittet innehåller en översikt över de krypteringsalgoritmer som används för att skydda innehåll i PlayReady-ekosystemet.

Anmärkning

Se Ordlista för krypteringsvillkor och definitioner.

Grunderna för kryptering

Symmetrisk nyckelkryptografi är den enklaste typen av kryptering. Med symmetrisk nyckelkryptografi används samma nyckel för att kryptera innehållet och dekryptera det. Symmetriska nyckelalgoritmer är vanligtvis små och snabba. Vanligtvis hanteras huvuddelen av alla krypteringsuppgifter av någon form av symmetrisk nyckelkryptering.

Kryptografi med offentlig nyckel använder däremot en publicerad offentlig nyckel för att kryptera och en annan hemlig privat nyckel för att dekryptera. Om användaren "A" ger användaren "B" en offentlig nyckel kan B kryptera innehåll för A utan någon annan information. Oavsett hur innehållet överförs kan bara A läsa det. Innehållsavlyssnare saknar den privata nyckeln (hemlig nyckel) och kan inte dekryptera meddelandet. Eftersom den offentliga nyckeln görs öppet tillgänglig kan vem som helst kryptera för A, men endast A kan dekryptera. Kryptering med offentlig nyckel kräver beräkningsmässigt komplexa algoritmer.

Elliptisk kurvkryptografi (ECC) är en krypteringsalgoritm för offentliga nycklar som används för att kryptera och dekryptera innehåll. Det är en beräkningsmässigt komplex funktion som beskriver en elliptisk kurva. Komponenter i den här algoritmen delas som en offentlig nyckel. Andra komponenter, som används för dekryptering, utgör den privata nyckeln.

Ennyckelkoder för meddelandeautentisering (OMAC) är en kod för meddelandeautentisering som skapats från ett blockkryptering. Det finns två OMAC-algoritmer, OMAC1 och OMAC2.

Certifikat används för att säkerställa äkthet för entiteter som inte är betrodda. Avsändaren av ett certifikat signerar sitt namn (enhetsidentifierare) med hjälp av dess privata nyckel. Certifikatmottagaren verifierar sedan certifikatets signatur med avsändarens offentliga nyckel för att säkerställa avsändarens identitet. Eftersom avsändaren är den enda ägaren av den privata nyckeln är det svårt att skapa en privat nyckel med en offentlig nyckel och certifikatet verifieras inte korrekt om det inte är signerat med den privata nyckeln. I det här fallet antas datakällan vara korrekt och certifierad kommunikation är säker.

PlayReady-krypteringsalgoritmer

Symmetriska algoritmer

Följande AES-krypteringslägen stöds:

  • AES 128 CTR-läge – PlayReady-system kan skydda filer och strömmar där exemplen krypteras i sin helhet eller där endast ett mönster av exemplen krypteras i CTR-driftsläge. Dessa inkluderar de vanliga krypteringslägena 'cenc' (Vanligt krypteringssystem) och 'cens' (Vanligt krypteringssystem som använder ett mönster av okrypterade/krypterade byte), som definieras i ISO/IEC 23001-7.

  • AES 128 CBC-läge – PlayReady-system som börjar med version 4.0 kan skydda filer och strömmar som antingen är helt eller delvis krypterade med en AES 128-innehållsnyckel i CBC-driftsläge. Dessa inkluderar common encryption-lägena "cbc1" och "cbcs" enligt definitionen i ISO/IEC 23001-7 och alla andra format som krypteras med en AES 128-innehållsnyckel i CBC-läge.

Anmärkning

PlayReady-system med version 1.X, 2.X och 3.X kan bara skydda filer som krypterats i CTR-läge (common encryption mode 'cenc'). "cens" stöds inte. PlayReady-system med version 4.0 och senare kan skydda filer som krypterats i CTR-läge (common encryption modes 'cenc') och i CBC-läge (common encryption modes 'cbcs'). De andra lägena "cens" och "cbc1" stöds inte.

ECC-algoritmer

Microsoft PlayReady-system använder ECC (Elliptical curve cryptography) för att kryptera innehållsnycklar och signera protokollmeddelanden.

  • ECC ElGamal-algoritm – används för krypterade innehållsnycklar.
  • ECDSA (Elliptic curve digital signature algorithm) – Används för signering av meddelanden i tillämpliga fall i PlayReady-protokollen.
  • NIST – Microsoft PlayReady-system använder NIST-standardalgoritmer för ECC-kryptering där det är tillämpligt och använder för närvarande den elliptiska P-256-kurvan.

Signeringsalgoritmer

För signering av licenser, tillfälliga nycklar eller data använder PlayReady-system AES OMAC1, vilket motsvarar CMAC (chifferbaserad meddelandeautentiseringskod) och blev en NIST-rekommendation i maj 2005. Nycklar genereras slumpmässigt, men data hashas med SHA256 och sedan signeras hashen med ECC256.

Körnings- och prestandaöverväganden

När innehållsuppspelning utlöses måste PlayReady-klienten utföra vissa steg innan den första uppspelningen kan börja. Detta omfattar att hitta en licens, binda eller tolka licensen, dekryptera innehållsnyckeln och slutligen förbereda dekrypteringen av innehållet. PlayReady-klientstacken tar tid att binda en licens till ett innehåll, och den här åtgärden krävs innan innehållsdekryptering och återgivning startas. Det innebär att tiden för att binda en licens påverkar tiden till den första bildrutan när en uppspelning startas eller avståndet mellan spåren. Både klientutvecklaren och programutvecklaren kanske vill överväga att optimera sin kod för körningstid och prestandaproblem, för att minska tiden till den första ramen och tillåta glappfri uppspelning.

Skyddade containrar använder symmetrisk nyckelkryptering för att kryptera huvuddelen av innehållet. Kryptering med offentlig nyckel används dock i licensen. Det beror på att licensen innehåller innehållets symmetriska nyckel, och servern använder klientens offentliga nyckel för att kryptera innehållets symmetriska nyckel.

När det är dags att dekryptera innehållet används klientens privata nyckel för att dekryptera den symmetriska nyckeln från licensen. Endast klienten som licensen är bunden till kan extrahera den symmetriska nyckeln.

Dekryptering av privata nycklar är mer intensiv beräkningsmässigt än symmetrisk dekryptering. Därför är det beräkningsintensivt att tolka licensen. När licensen har hanterats korrekt dekrypteras den symmetriska nyckeln och innehållet kan dekrypteras med små och snabba algoritmer.

För program eller enheter som är resursbegränsade kräver start mycket tid och resurser. När det är klart frigörs dock resurserna, dekrypteringen kan fortsätta effektivt och få CPU-cykler eller systemresurser krävs.