Néhány szó a DRM-ről
A DRM egy technológiai összeállítás, amellyel a digitális média (video, audio) tulajdonosok megvédhetik szerzői jogaikat azzal együtt, hogy közeli kapcsolatban maradnak a vásárlókkal. A legtöbb esetben a DRM egy rendszer, amely kódolja a média tartalmát, és korlátozza a hozzáférést azokra a felhasználókra, akik saját engedéllyel rendelkeznek azok lejátszására.
SAP, DRM, és audio lejátszó API-k
A SAP megvédi az audio tartalmat út közben az alkalmazás és az eszközök között azáltal, hogy összezavarja és kódolja azt, így ha elfogják, vagy lemásolják az audio folyamot az alkalmazás és a driver között, akkor használhatatlan adathalmazt kapnak.
A DRM megvalósításban az SAP-n keresztüli lejátszás egy feltétel, amely licensszel megszerezhető. Lejátszási időben, feltételezve, hogy az alkalmazásnak valódi engedélye van a fájlra, a DRM komponensek nyíltan engedik az SAP csomagolást a fájlon, mielőtt az olvasó-objektumhoz kerülne. A csomagolt fájl elküldhető az eszköznek bármely normális audio lejátszó API-n keresztül, mint amilyen a waveOut, Microsoft DirectSound vagy a Microsoft DirectShow.
Másként fogalmazva, amikor egy alkalmazás használja a DRM technológiát, akkor az SAP minden részletének használata az operációs rendszer és az SDK komponensek keze alatt történik. Az SAP API segítségével létrehozhatunk SAP folyamokat a DRM technológián kívül. Ilyenkor az alkalmazás az SAP API-k segítségével közvetlenül létrehoz egy adatfolyamot, előkészíti a fejléc-információkat, és kódolja az adatot. Az adat ezután továbbításra kerül az eszközökhöz bármely lejátszó API használatával.
Az SAP kernel módú alrendszer
Amikor a kernel audio tartalmat küld a kimeneti eszközre, a rendszer észleli, ha az SAP tartalom. Alapértelmezésben az első eszköz a stack-ben az SAP driver (drmk.sys), amely dekódolja a tartalmat, mielőtt az eszköz stack-be kerülne. Lehetséges, hogy más eszközök néhány esetben a SAP driver felett települnek, de ennek az eszköznek csak a kódolt folyamhoz van elérése. Az SAP eszköz képes ellenőrizni a driver-eket, amelyek követik őt a kimeneti sorban, hogy meghatározzák az ő biztonsági szintjüket, és hogy vajon tartalmaznak-e jelölt biztonsági tanúsítványt. Némely tartalom igényli valamelyiket, vagy mindegyiket ezek közül. Végül szükséges, hogy a kimeneti hardver ne tartalmazzon digitális kimeneti kaput.
Így a legtöbb biztonságos tartalom esetében az SAP rendszer lehetővé teszi az alkalmazásnak, hogy kódolja az audio adatot az alkalmazáson belül, elküldve azt a kernel-nek és az eszköz stack-nek, így bizonyosodva meg arról, hogy valamelyik driver a kimeneti sorban nagyon biztonságos ezzel az ellenőrzéssel egy digitálisan aláírt tanúsítványon keresztül.
Megjegyzés: Az SAP nem címezi meg a védett audio tartalom kimenetét az alkalmazáson belül, vagy mielőtt elküldésre kerülne a külső eszköznek.
Az SAP statikus könyvtár
Az SAP API-k használatához szükséges egy statikus könyvtár, amely egyedi az alkalmazásunkban, és ez a könyvtár elkülönül a DRM statikus könyvtártól. Ezeket a könyvtárakat a Microsoft-tól kell megszereznünk. Ahhoz, hogy kezdeményezzük a licensz igénylését, az alábbi oldalra kell ellátogatnunk:
http://www.microsoft.com/legal/sap/default.asp
Megjegyzés: A DRM komponens a Windows Media Format 9 Series SDK-ban ugyanezt a statikus könyvtárat használja audio folyamok kódolására SAP-n keresztül.
Az IMSSapStubObj Interface
Az IMSSapStubObj interfész metódusai használhatók a tartalomkódoláshoz. Az alábbi táblában található metódusokat alkalmazásból hívhatjuk meg. Ezt az interfészt az SAP statikus könyvtár valósítja meg. A statikus könyvtár belül számos műveletet hajt végre a biztonság érdekében, és hívásait az SAP operációs rendszer komponensen (MSSAP.DLL) keresztül küldi, amely végrehajtja az aktuális kódolást és azonosítást.
| Metódus |
Leírás |
| CheckSecurity |
A stack-hez fordulást indít, és érvényesíti az eszköz biztonságát. |
| CreateInstance |
Létrehoz egy SAP objektumot és visszaad egy mutatót az IMSSapStubObj interfészhez. |
| CreateStream |
Kezdeti helyzetbe állít egy folyamatosztályt és létrehozza a folyamot. |
| DestroyStream |
Törli a folyamot a CreateStream-ből és felszabadítja a memóriát. |
| EncryptSamples |
Kódolja a beviteli puffer egy részét és előkészíti azt küldésre a kimenethez. |
| GetMSSAPFileName |
Lehetővé teszi az alkalmazásnak az MSSAP.DLL ellenőrzését (hogy megvédjen a manipulációtól). |
| GetStreamFormat |
Elkészíti a fejlécét az adatnak, amely az output-ra indul. |
| Init |
Kezdeti helyzetbe állítja az SAP objektumot. |
| SetParameters |
Megadja a DRM biztonsági leírásokat az aktuális átvitelhez. |