Dela via


Sökväg till skyddat medium

I det här avsnittet beskrivs tre relaterade ämnen: skyddad miljö, gateway för mediekompatibilitet samt återkallande och förnyelse.

  • En skyddad miljö (PE) är en uppsättning tekniker som gör att skyddat innehåll kan flöda från och via Windows Vista på ett skyddat sätt. Alla komponenter i en skyddad miljö är betrodda och processen skyddas mot manipulering.
  • Den skyddade mediesökvägen (PMP) är en körbar fil som körs i en skyddad miljö.
  • Om en betrodd komponent i PE komprometteras kommer den att återkallas efter rättsprocessen. Microsoft tillhandahåller dock en förnyelsemekanism för att installera en nyare betrodd version av komponenten när en blir tillgänglig.

Information om komponenter för kodsignering av skyddade media finns i vitboken Kodsignering för skyddade mediekomponenter i Windows Vista.

Det här avsnittet innehåller följande avsnitt:

Skyddad miljö

Innehållsskydd omfattar flera tekniker som var och en försöker se till att innehållet inte kan användas på ett sätt som är oförenligt med innehållsägarens eller leverantörens avsikt. Dessa tekniker omfattar kopieringsskydd, länkskydd, villkorlig åtkomst och hantering av digitala rättigheter (DRM). Grunden för var och en är förtroende: Åtkomst till innehållet beviljas endast till programvarukomponenter som följer användningsvillkoren som tilldelats det innehållet.

För att minimera hoten mot skyddat innehåll gör Windows Vista och Media Foundation Software att betrodd kod kan köras i en skyddad miljö. En PE är en uppsättning komponenter, riktlinjer och verktyg som är utformade för att öka skyddet mot piratkopiering av innehåll.

Innan du undersöker PE närmare är det viktigt att förstå de hot som den är utformad för att minimera. Anta att du kör ett medieprogram i en användarlägesprocess. Programmet är länkat till de olika DLL:er (Dynamic Link Libraries) som innehåller plugin-program för media, till exempel avkodare. Andra processer körs också i användarläge och olika drivrutiner läses in i kerneln. Om det inte finns någon förtroendemekanism finns följande hot:

  • Programmet kan komma åt skyddade medier direkt eller hacka processminnet.
  • Plugin-program kan komma åt innehållet direkt eller hacka processminnet.
  • Andra processer kan hacka medieprocessminnet antingen direkt eller genom att mata in kod.
  • Kernel-drivrutiner kan hacka medieprocessminnet.
  • Innehåll kan skickas utanför systemet via ett oskyddat medium. (Länkskydd är utformat för att minimera det här hotet.)

Design av den skyddade miljön

En skyddad miljö körs i en separat skyddad process från medieprogrammet. Den skyddade processfunktionen i Windows Vista hindrar andra processer från att komma åt den skyddade processen.

När en skyddad process skapas identifierar kärnkärnkomponenter obetrodda komponenter och plugin-program så att den skyddade miljön kan vägra att läsa in dem. En betrodd komponent är en komponent som har signerats korrekt av Microsoft. Kerneln spårar också moduler som läses in i den, vilket gör att den skyddade miljön kan stoppa uppspelningen av skyddat innehåll om en ej betrodd modul läses in. Innan en kernelkomponent läses in kontrollerar kerneln om den är betrodd. Om det inte är det vägrar betrodda komponenter som redan finns i PE att bearbeta skyddat innehåll. För att aktivera detta utför PE-komponenter regelbundet en kryptografiskt skyddad handskakning med kerneln. Om det finns en obetrodd komponent i kernelläge misslyckas handskakningen och anger för PE att det finns en obetrodd komponent.

Om en betrodd komponent komprometteras kan den återkallas efter rättsprocessen. Microsoft tillhandahåller en förnyelsemekanism för att installera en nyare betrodd version när den är tillgänglig.

Sökväg till skyddat medium

Den skyddade mediesökvägen (PMP) är den primära PE-körbara filen för Media Foundation. PMP är utökningsbar, så att mekanismer för innehållsskydd från tredje part kan stödjas.

PMP accepterar skyddat innehåll och associerade principer från alla Media Foundation-källor med hjälp av alla innehållsskyddssystem, inklusive de som tillhandahålls av tredje part. Det skickar innehåll till alla Media Foundation-mottagare, så länge mottagaren uppfyller de principer som anges av källan. Den stöder även transformeringar mellan källan och mottagaren, inklusive transformeringar från tredje part, så länge de är betrodda.

PMP körs i en skyddad process som är isolerad från medieprogrammet. Programmet har bara möjlighet att utbyta kommando- och kontrollmeddelanden med PMP,men har inte åtkomst till innehåll när det har skickats till PMP. Följande diagram illustrerar den här processen.

diagram över den skyddade mediesökvägen

Skuggade rutor representerar komponenter som kan tillhandahållas av tredje part. Alla komponenter som skapas i den skyddade processen måste vara signerade och betrodda.

Programmet skapar en instans av mediesessionen i den skyddade processen och tar emot en pekare till en proxymediesession, som samlar gränssnittspekare över processgränsen.

Mediekällan kan skapas antingen inom programprocessen, som du ser här, eller i den skyddade processen. Om mediekällan skapas i programprocessen skapar källan en proxy för sig själv i den skyddade processen.

Alla andra pipelinekomponenter, till exempel avkodare och mediemottagare, skapas i den skyddade processen. Om dessa objekt exponerar anpassade gränssnitt för program måste de tillhandahålla en DCOM-proxy/stub för att konvertera gränssnittet.

För att framtvinga principer för skyddat innehåll när det flödar genom pipelinen använder PMP tre typer av komponenter: indataförtroendemyndigheter (ITA), utdataförtroendemyndigheter (OTA) och principobjekt. Dessa komponenter arbetar tillsammans för att bevilja eller begränsa rättigheter att använda innehåll och för att ange de länkskydd som måste användas när innehåll spelas upp, till exempel HDCP (High-Bandwidth Digital Content Protection).

Indataförtroendemyndigheter

En ITA skapas av en betrodd mediekälla och utför flera funktioner:

  • Anger behörighet att använda innehåll. Rättigheter kan omfatta rätten att spela upp innehåll, överföra det till en enhet och så vidare. Den definierar en ordnad lista över godkända utdataskyddssystem och motsvarande utdataprinciper för varje system. ITA lagrar den här informationen i ett principobjekt.
  • Tillhandahåller den dekryptering som krävs för att dekryptera innehållet.
  • Upprättar förtroende med kernelmodulen i den skyddade miljön för att säkerställa att ITA körs i en betrodd miljö.

En ITA är associerad med en enskild ström som innehåller skyddat innehåll. En dataström kan bara ha en ITA och en instans av en ITA kan bara associeras med en ström.

Betrodda utdatamyndigheter

Ett OTA är associerat med en betrodd utdata. OTA exponerar en åtgärd som de betrodda utdata kan utföra på innehållet, till exempel uppspelning eller kopiering. Dess roll är att framtvinga ett eller flera utdataskyddssystem som krävs av ITA. OTA frågar principobjektet som tillhandahålls av ITA för att avgöra vilket skyddssystem det måste framtvinga.

Principobjekt

Ett principobjekt kapslar in innehållsskyddskraven för en ITA. Den används av principmotorn för att förhandla om stöd för innehållsskydd med ett OTA. OTA:er frågar principobjekt för att avgöra vilka skyddssystem de måste tillämpa på varje utdata från det aktuella innehållet.

Skapa objekt i PMP

Om du vill skapa ett objekt i den skyddade mediesökvägen (PMP) anropar IMFMediaSourceIMFPMPHostApp::ActivateClassById, med angivna indata IStream formaterat på följande sätt:

Format: (All DWORD values are serialized in little-endian order)
[GUID (content protection system guid, obtained from Windows.Media.Protection.MediaProtectionSystemId)]
[DWORD (track count, use the actual track count even if all tracks are encrypted using the same data, note that zero is invalid)]
[DWORD (next track ID, use -1 if all remaining tracks are encrypted using the same data)]
[DWORD (next track's binary data size)]
[BYTE* (next track's binary data)]
{ Repeat from "next track ID" above for each stream }

Översikt över principförhandling

Det finns tre grundläggande krav som måste uppfyllas innan skyddat innehåll kan bearbetas i PMP. För det första måste skyddat innehåll endast skickas till betrodda utdata. För det andra måste endast tillåtna åtgärder tillämpas på en dataström. För det tredje måste endast godkända utdataskyddssystem användas för att spela upp en ström. Principmotorn samordnar mellan ITA:er och OTA:er för att säkerställa att dessa krav uppfylls.

Det enklaste sättet att förstå processen är att gå igenom ett förenklat exempel som identifierar de steg som krävs för att spela upp ASF-innehåll (Avancerat systemformat) som skyddas av Windows Media Digital Rights Management (WMDRM).

När en användare startar ett spelarprogram och öppnar en ASF-fil som har en skyddad ljudström och en skyddad videoström, måste följande steg utföras:

  1. Programmet skapar ASF-mediekällan och pmp-sessionen (protected media path). Media Foundation skapar en PMP-process.
  2. Programmet skapar en partiell topologi som innehåller en ljudkällnod som är ansluten till ljudåtergivningen och en videokällnod som är ansluten till den förbättrade videoåtergivningen (EVR). För återgivningarna skapar programmet inte återgivningen direkt. I stället skapar programmet i den oskyddade processen ett objekt som kallas aktiveringsobjekt. PMP använder aktiveringsobjektet för att skapa återgivningarna i den skyddade processen. (Mer information om aktiveringsobjekt finns i aktiveringsobjekt.)
  3. Programmet anger den partiella topologin i PMP-sessionen.
  4. PMP-sessionen serialiserar topologin och skickar den till PMP-värden i den skyddade processen. PMP-värden skickar topologin till principmotorn.
  5. Topologiinläsaren anropar IMFInputTrustAuthority::GetDecrypter på ITA:erna och infogar dekrypteringarna i topologin omedelbart nedströms motsvarande källnoder.
  6. Topologiinläsaren infogar ljud- och videodekodare nedströms dekrypteringsnoderna.
  7. Principmotorn söker igenom de infogade noderna för att avgöra om någon implementerar IMFTrustedOutput-gränssnittet. BÅDE EVR och ljudåtergivningen implementerar IMFTrustedOutputeftersom de skickar data utanför PMP.
  8. Varje ITA bekräftar att den körs i en skyddad process genom att utföra en kryptografisk handskakning med en skyddad miljökärnmodul.
  9. För varje ström förhandlar principmotorn princip genom att hämta ett principobjekt från ITA och skicka det till OTA. OTA innehåller en lista över de skyddssystem som det stöder, och principobjektet anger vilka skyddssystem som måste tillämpas, tillsammans med rätt inställningar. OTA tillämpar sedan dessa inställningar. Om det inte kan göra det blockeras innehållet.

Återkallande och förnyelse

En betrodd komponent kan återkallas om den komprometteras eller om den bryter mot de licensavtal som den ursprungligen var betrodd enligt. Det finns en förnyelsemekanism för att installera en nyare, mer betrodd version av komponenten.

Betrodda komponenter signeras med hjälp av ett kryptografiskt certifikat. Microsoft publicerar en global återkallningslista (GRL) som identifierar komponenter som har återkallats. GRL är digitalt signerad för att säkerställa dess äkthet. Innehållsägare kan via principmekanismen se till att den aktuella versionen av GRL finns på användarens dator.

När premiumvideoinnehåll visas färdas de de dekrypterade, okomprimerade bildrutorna över en fysisk anslutning till visningsenheten. Innehållsleverantörer kan kräva att videoramarna skyddas just nu när de färdas över den fysiska anslutningsappen. Det finns olika skyddsmekanismer för detta ändamål, bland annat High-Bandwidth HDCP (Digital Content Protection) och DisplayPort Content Protection (DPCP). Videon OTA framtvingar dessa skydd med hjälp av Output Protection Manager (OPM). Utdataskyddshanteraren skickar kommandon till grafikdrivrutinen och grafikdrivrutinen framtvingar de länkskyddsmekanismer som krävs av principen.

ett diagram som visar relationen mellan videon ota och opm.

Om Media Foundation

Media Foundation Architecture

GPU-Based Content Protection-

Output Protection Manager

PMP Media Session