Professional Documents
Culture Documents
PNRS2-08-Multimedijalni Podsistem DRM 0
PNRS2-08-Multimedijalni Podsistem DRM 0
Projektovanje Namenskih
Računarskih Struktura
Multimedijalni podsistem 2
(potreba, struktura, softverska arhitektura, DRM, CAS)
Zimski semestar školske godine 2017/2018
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 2
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 3
Multimedijalni podsistem
Uvod
2017 PNRS 4
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 5
Multimedijalni podsistem
Zaštita video podataka
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 7
Multimedijalni podsistem
DRM osnove
DRM = Digital rights management
2017 PNRS 8
Multimedijalni podsistem
DRM uvod
2017 PNRS 9
Multimedijalni podsistem
DRM uvod
2017 PNRS 10
Multimedijalni podsistem
DRM uvod
2017 PNRS 11
Multimedijalni podsistem
DRM uvod
2017 PNRS 12
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 13
Multimedijalni podsistem
Android DRM radno okruženje
2017 PNRS 14
Multimedijalni podsistem
Android DRM radno okruženje
2017 PNRS 15
Multimedijalni podsistem
Android DRM HAL
2017 PNRS 16
Arhitektura DRM radnog
okruženja
2017 PNRS 17
Arhitektura DRM radnog
okruženja
2017 PNRS 18
Arhitektura DRM radnog
okruženja
2017 PNRS 19
DRM Plug-ins
Arhitektura
2017 PNRS 20
DRM Plug-ins
Uvod
2017 PNRS 22
DRM Plug-ins
Proces učitavanja
2017 PNRS 23
DRM Plug-ins
Implementacija
2017 PNRS 24
DRM Plug-ins Implementacija
IDrmEngine
2017 PNRS 25
DRM Plug-ins Implementacija
DRM Info
2017 PNRS 26
DRM Plug-ins Implementacija
DRM Info
2017 PNRS 27
DRM Plug-ins Implementacija
DRM prava
2017 PNRS 30
DRM Plug-ins Implementacija
License Metadata podaci
2017 PNRS 31
DRM Plug-ins Implementacija
Decrypt sesija
2017 PNRS 32
DRM Plug-ins Implementacija
DRM plug-in slušaoci
2017 PNRS 33
DRM Plug-ins Implementacija
Generisanje programskog koda i integracija
PRODUCT_COPY_FILES +=
$(TARGET_OUT_SHARED_LIBRARIES)/<plugin_library>:
system/lib/drm/plugins/native/<plugin_library>
e.g.,
PRODUCT_COPY_FILES +=
$(TARGET_OUT_SHARED_LIBRARIES)/
libdrmpassthruplugin.so:system/lib/drm/plugins/
native/libdrmpassthruplugin.so
2017 PNRS 34
DRM Plug-ins Implementacija
Generisanje programskog koda i integracija
<platform_root>/frameworks/base/drm/libdrmframework/
plugins/passthru
2017 PNRS 35
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 36
DRM sprega
Tipično korišćenje
U tipičnoj DRM sesiji, Android aplikacija koristi DRM radno okruženje
da instancira DrmManagerClient klasu
Potom, tipična sekvenca API poziva izgleda ovako (u zavisnosti od
DRM šeme ova sekvenca može i drugačije da izgleda)
1. Registrovanje uređaja na online DRM servis
Metoda acquireDrmInfo() praćena processDrmInfo()
metodom
2. Dobavljanje licenci koje su povezane sa zaštićenim sadržajem
Metoda acquireRights()
3. Ekstrahovanje ograničenja iz licence
Metoda getConstraints()
4. Povezivanje zaštićenog sadržaja sa svojom licencom
Metoda saveRights()
2017 PNRS 37
DRM sprega
Tipično korišćenje
2017 PNRS 38
DRM sprega
Tipično korišćenje
//Register the device with an online DRM service.
DrmManagerClient mDrmManager;
DrmManager = new DrmManagerClient(context);
DrmInfoRequest drmInfoRequest;
rightsAcquisitionInfo = new DrmInfoRequest(DrmInfoRequest.TYPE_RIGHTS_ACQUISITION_INFO, MIME);
mDrmManager.acquireRights(drmInfoRequest);
//acquireDrmInfo
DrmInfo drmInfo = mDrmManager.acquireDrmInfo (DrmInfoRequest drmInfoRequest)
//processDrmInfo
int successFailure = mDrmManager.processDrmInfo(DrmInfo drmInfo)
//canHandle
boolean canhandle = mDrmManager.canHandle(Uri uri, String mimeType)
boolean canhandle = mDrmManager.canHandle(String path, String mimeType)
//checkRightsStatus
int status = mDrmManager.checkRightsStatus(filePath)
//saveRights
int successFailure = mDrmManager.saveRights(DrmRights drmRights,String rightsPath, String contentPath)
2017 PNRS 39
DRM sprega
Tipično korišćenje
//setOnErrorListener, setOnEventListener, setOnInfoListener
mDrmManager.setOnEventListener(new DrmManagerClient.OnEventListener() {
public void onEvent(DrmManagerClient client, DrmEvent event) {
switch (event.getType()) {
case DrmEvent.TYPE_DRM_INFO_PROCESSED:
//INFO PROCESSED
break;
} } });
mDrmManager.setOnErrorListener(new DrmManagerClient.OnErrorListener() {
public void onError(DrmManagerClient client, DrmErrorEvent event) {
switch (event.getType()) {
case DrmErrorEvent. TYPE_RIGHTS_NOT_INSTALLED:
//RIGHTS NOT INSTALLED
break;
}
mDrmManager.setOnInfoListenr(new DrmManagerClient.OnInfoListener() {
public void onInfo(DrmManagerClient client, DrmInfoEvent event) {
if (event.getType() == DrmInfoEvent.TYPE_RIGHTS_INSTALLED) {
//RIGHTS INSTALLED
} } });
2017 PNRS 40
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 41
Multimedijalni podsistem
DRM sa Media Codec spregom
Aplikacije koje koriste Media Codec spregu, mogu da koriste i DRM
spregu
Primer: MPEG DASH CENC
Koristi MediaCrypto i MediaDRM
MediaDRM obezbeđuje aplikacijama spregu za:
Proviziju DRM klijenata
Dobavljanje licenci/ključeva
Generisanje session ID koji može da se koristi za kreiranje
crypto objekata
MediaCrypto objekti iz MediaDRM se potom mogu koristiti sa
MediaCodec
Prosleđivanje pomoću:
public final void queueSecureInputBuffer (int index, int
offset, MediaCodec.CryptoInfo info, long presentationTimeUs,
int flags)
2017 PNRS 42
Multimedijalni podsistem
DRM sa Media Codec spregom
2017 PNRS 43
Multimedijalni podsistem
DRM sa Media Codec spregom
1. Aplikacija prvo konstruiše MediaExtractor i MediaCodec objekte
2. Pristupa identifikatoru za DRM šemu (UUID) iz metadata podataka, i
pomoću njega instancira MediaDrm objekat
3. Aplikacija potom poziva openSession() da bi generisala sessionId
4. Potom koristi MediaDrm objekat da uputi zahtev za ključem od
strane servera za licence
5. Kada dobije sessionId, aplikacija konstruiše MediaCrypto objekat
6. Objekat MediaCrypto se potom registruje u MediaCodec pomoću
metode configure(MediaFormat, Surface, MediaCrypto, int)
7. Kada aplikacija konstruiše MediaExtractor, MediaCodec i
MediaCrypto objekte, može da nastavi sa dovlačenjem ulaznih
semplova iz ekstraktora i da ih prosleđuje dekoderu
8. Za enkriptovane podatke, iz ekstraktora oni i dalje izlaze
enkriptovani (dekriptuju se interno pre prosleđivanja dekoderu)
2017 PNRS 44
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 45
CAS
Uvod
2017 PNRS 46
CAS
Uvod
2017 PNRS 47
CAS
Uvod
2017 PNRS 48
CAS
Uvod
2017 PNRS 49
CAS
Uvod
2017 PNRS 50
CAS
vs DRM
2017 PNRS 52
CAS
Potreba
Razlog?
2017 PNRS 53
CAS
Potreba
Problem?
Android TV
2017 PNRS 54
Agenda
Uvod
Sigurnost podataka u Android platformi
Zaštita video podataka
DRM
Uvod
Android radno okruženje
Tipično korišćenje
DRM i MediaCodec sprega
CAS
Android TV i zaštita podataka
2017 PNRS 55
Multimedijalni podsistem
AndroidTV i zaštita podataka
2017 PNRS 56
Android TV
Zaštita upotrebom TEE
DRM
Video Key Keybox
2017 PNRS 57
Android TV
CAS i Android TV
2017 PNRS 58
Android TV
Zajedno
Key processing
Encrypted
Premium
Media
TV Stream
Stream
2017 PNRS 59
Kraj
Pitanja?
2017 PNRS 60
Literatura
2017 PNRS 61