API A ZABEZPEČENÍ
Application programming interface (API)
Rozhraní pro programování aplikací
sbírka procedur, funkcí či tříd nějaké knihovny, programu nebo jádra OS
definuje interface mezi zdrojovým kódem a knihovnami
využívá se po přeložení programu do binární podoby a během jeho běhu
respektují zvyklosti jazyka
API nezávislá na programovacím jazyku
nezávisí na jazyku, dostupné přes RPC
umožňuje již zkompilovanému souboru fungovat beze změn na systémech s kompatibilním ABI
API závislá na programovacím jazyku
jak se funkce knihovny mají volat ze zdrojového kódu programu
ABI (Application binary interface)
programátor používá namísto toho, aby je sám naprogramoval
mechanismus, jak z jednoho programu volat funkci umístěnou na vzdáleném systému
Obvykle multiplatformní rozhraní
API – příklady
Grafická API
OpenGL, DirectX standardizována, programátor je může v programu využít
API operačních systémů
způsob vykonání záleží na počítači, na grafické kartě, případně může být vykreslování kompletně softwarově emulováno nějakou programovou knihovnou (např. Mesa)
POSIX Windows API (.NET Framework API)
Další
Advanced SCSI Programming Interface (ASPI) BIOS call interface Java Platform APIs IE API, Google Maps API YouTube API PlayStation 2 API …
API operačních systémů
API operačních systémů
v současné době jsou nejrozšířenější dva standardy aplikačního programátorského rozhraní (API) OS
POSIX (IEEE)
Portable Operating System Interface, vychází ze systémů UNIX přenositelné rozhraní pro operační systémy
standardizované jako IEEE 1003 a ISO/IEC 9945
určuje, jak mají POSIX-konformní systémy vypadat, co mají umět, co se jak dělá apod.
Windows API (pův. Win32)
Microsoft, pro komunikaci programů se systémem, pro definici vláken a plánování komunikují všechny programy Windows
nezávisle na použitém programovacím jazyce
Komponenty Windows API
Základní služby
Pokročilé služby
práce s registrem, vypnutí/restart, správa služeb a uživatelských účtů
Grafické uživatelské rozhraní (GUI)
přístup k nezbytným zdrojům poskytnutým systémem Windows
funkce pro výstup grafického obsahu
Uživatelské Rozhraní
Knihovna běžných dialogových oken
Knihovna běžných prvků (Common Control Library)
pokročilejší prvky – stavové řádky, toolbary a záložky
Windows Shell
poskytuje aplikacím standardní dialogová okna
přístup k funkcím poskytovaných shellem
Síťové služby
přístup k sítím
Komponenty Windows API
Základní služby
poskytuje přístup k nezbytným zdrojům poskytnutým systémem
Pokročilé služby
API pro práci s registrem, vypnutí/restart systému (nebo zrušení), spuštění/zastavení/vytvoření služeb systému Windows a správu uživatelských účtů
souborový systém, periferie, procesy a vlákna, přístup do registrů a ošetření chyb 16b Windows: kernel.exe, krnl286.exe, krnl386.exe 32b Windows: kernel32.dll, advapi32.dll
advapi32.dll
Grafické uživatelské rozhraní (GUI)
funkce pro výstup grafického obsahu na monitory, tiskárny a jiná výstupní zařízení
16b Windows: gdi.exe 32b Windows: gdi32.dll
Komponenty Windows API – GUI
Uživatelské Rozhraní
funkce pro tvorbu a řízení počítačových oken a dalších základních prvků (tlačítka a posuvníky), zpracovává vstup z klávesnice a myši apod.
Knihovna běžných dialogových oken
poskytuje aplikacím standardní dialogová okna
16b Windows: user.exe 32b Windows: user32.dll Windows XP+: comctl32.dll (společně s Common Control Library)
pro otevření a ukládání souborů, volbu barvy a fontů, apod. 16b Windows: commdlg.dll 32b Windows: comdlg32.dll
Knihovna běžných prvků (Common Control Library)
poskytuje aplikaci přístup k pokročilejším prvkům operačního systému
jako stavový řádek, zobrazení průběhu výpočtu, toolbary a záložky 16b Windows: commctrl.dll 32b Windows: comctl32.dll
Komponenty Windows API
Windows Shell
umožňuje aplikacím přístup k funkcím poskytovaných shellem Windows
16b Windows: shell.dll Windows 95: shell32.dll 32b Windows: shlwapi.dll
patří do kategorie Uživatelské Rozhraní
Síťové služby
poskytuje přístup k počítačovým sítím
zahrnuje také NetBIOS, Winsock, NetDDE, RPC a mnoho dalších funkcí
Nadstavbové knihovny Windows API
umožňují aplikacím pracovat abstraktnějším způsobem
Microsoft Foundation Class Library (MFC)
nadstavba Windows API pro třídy v C++ usnadňuje objektově orientované programování
Active Template Library (ATL)
rozšíření pro ATL, zamýšlena jako odlehčená alternativa k MFC
Další nadstavby vyvinuté jinými firmami (např. Borland)
šablonově orientovaná nadstavba pro COM
Windows Template Library (WTL)
zabaluje části API do ucelených C++ tříd
Object Windows Library (OWL), později Visual Component Library (VCL) konkurence k MFC a poskytuje podobnou objektově orientovanou nadstavbu.
Většina aplikačních frameworků pro Windows
je (alespoň částečně) nadstavbou nad Windows API .NET Framework, Java, ostatní programovací jazyky pod Windows
obsahují nadstavbové knihovny (nebo jimi jsou)
DirectX
Sada knihoven pro umožnění přímého ovládání moderního hardwaru
nástroje pro tvorbu počítačových her, multimediálních aplikací, GUI (Aero)
součást systému od Windows 95 OSR2 skládá se z několika částí (rozdělených podle účelu):
DirectX Graphics
DirectDraw
Direct3D
3D vykreslování
DirectInput
2D rastrová grafika
podpora vstupních zařízení (myši, joysticky, gamepady …)
DirectPlay
podpora hry více hráčů po síti
od verze 8
DirectX
DirectSound (dříve též spolu s DirectMusic označováno souhrnným názvem DirectX Audio)
DirectMusic
podpora pro tvorbu multimediálních efektů, kodeků apod.
DirectSetup
podpora přehrávání a zpracování hudby
DirectX Media Objects
podpora přehrávání a záznamu zvuků
jednoduchý nástroj umožňující instalaci knihovny DirectX na počítač
DirectX Media
DirectAnimation DirectShow podpora multimediálních aplikací, přehrávání a zpracování videa a zvuku (streaming)
DirectShow
Součást DirectX Media Multimediální framework a API pro operace s multimediálními soubory a streamy
nástupce Video for Windows (Win 95)
Media Player, VidCap, VidEdit, BitEdit, PalEdit, WaveEdit
obsaženo ve Windows Media Playeru přesunuto z DirectX do Microsoft Platform SDK; dnes nahrazováno Media Foundation (Vista)
Přehrávání videa – filtry
Video Renderer
VMR – Video Mixing Renderer 7 (Win XP)
obraz vykreslen s pomocí DirectDraw směšování streamů a grafiky (možnost vykreslovat grafiku a text přes video), podpora "windowless mode„
VMR-9 – místo DirectDraw Direct3D
součást DirectX 9
Media Foundation
Multimediální framework pro Windows Vista
náhrada DirectShow i VfW, podpora DRM kvalita přehrávání videa a audia, HDTV, ochrana obsahu a DRM integruje DirectX Video Acceleration (DXVA)
EVR – Enhanced Video Renderer
směšování až 16 simultánních streamů informace o průhlednosti každého pixelu v referenčním streamu specifikované z-order
Podpora formátů
iDCT, kompenzace pohybu, deinterlacing, korekce barev na GPU
standardní WMA, WMV, MP3; rozšiřitelné, nepodporováno MIDI
Podpora aplikací
Windows Protected Media Path (PMP) Windows Media Player ve Windows Vista a Windows 7
může být použito i DirectShow nebo Windows Media Format SDK
DirectX Video Acceleration (DXVA) 2.0 ve Windows Vista
OpenGL
Open Graphics Library
průmyslový standard specifikující API pro tvorbu aplikací počítačové grafiky
konsorcium ARB (Architecture Review Board)
SGI, Microsoft, nVidia, ATI, …
Použití
prakticky všechny počítačové platformy
používá se při tvorbě počítačových her, CAD programů, aplikací virtuální reality, vědeckotechnické vizualizace apod.
na kterých je možno vykreslovat grafiku
Implementace
vestavění v grafickém hardwaru
akcelerované grafické karty nebo celé grafické subsystémy
softwarové implementace
umožňují používat OpenGL i na hardwaru, který ho nepodporuje např. open source knihovna Mesa 3D z lic. důvodů není implementace OpenGL, ale implementace API blízké OpenGL
OpenGL – struktura
vykreslování do obrazového rámce (framebufferu)
základních primitiv v několika různých režimech
veškerá činnost OpenGL se řídí vydáváním příkazů pomocí volání funkcí a procedur
OpenGL definuje cca 250
nepoužívá se objektově orientované programování jednotlivá primitiva jsou definována pomocí vrcholů
body, úsečky, mnohoúhelníky a obdélníky
každý z nich definuje bod, koncový bod hrany nebo vrchol mnohoúhelníku každý vrchol má přiřazena data (souřadnice, barva, normála a texturovací souřadnice)
Architektura klient-server
program (klient) vydává příkazy, které grafický adaptér (server) vykonává je možné, aby program fyzicky běžel na jiném počítači a příkazy se předávaly prostřednictvím sítě
OpenGL
Nezávislost na operačním systému, grafických ovladačích a správcích oken
neobsahuje funkce pro práci s okny (otevírání, zrušení, změnu velikosti), pro vytváření GUI ani pro zpracování událostí lze zajistit voláním funkcí příslušného správce oken nebo použít některou z nadstaveb
vlastní primitivní datové typy
GLUT – OpenGL Utility Toolkit např. GLbyte, GLint , GLdouble
Podpora programovacích jazyků
hlavičkový soubor pro C a C++
deklarovány datové typy, konstanty a funkce tvořící vlastní rozhraní podobné soubory s deklaracemi pro další programovací jazyky
Fortran, Object Pascal , Java většinou automaticky vytvářeny z hlavičkových souborů C
OpenGL
Stavový automat
během zadávání příkazů lze měnit vlastnosti jednotlivých primitiv nebo celé scény
barva, průhlednost; volba způsobu vykreslování, transformace
nastavení zůstane zachováno, dokud ho nezměníme
menší počet parametrů, jedním příkazem lze globálně změnit způsob vykreslení celé scény
například volbu drátového zobrazení nebo pomocí vyplněných polygonů
Vykreslování scény
provádí se procedurálně
voláním funkcí OpenGL je rastrový obrázek
uložen je ve framebufferu
každému pixelu přiřazena barva, hloubka, alfa složka příp. další z framebufferu lze získat barevnou informaci a tu možné zobrazit
OpenGL
http://www.root.cz/serialy/graficka-knihovna-opengl/
OpenGL – grafická primitiva
Základní geometrické prvky
Funkce pro proudové vykreslování některých primitiv
lze vykreslit např. polyčáru (line loop), pruh trojúhelníků (triangle strip), pruh čtyřúhelníků (quad strip) nebo trs trojúhelníků (triangle fan)
Transformace vrcholů primitiv
bod, úsečka, trojúhelník, čtyřúhelník, plošný konvexní polygon, bitmapa (jednobarevný rastrový obraz) a pixmapa (barevný rastrový obraz)
otočení, změna měřítka, posun, perspektivní projekce lze jednoduše vytvořit animace
Osvětlení nebo pokrytí texturou
vykreslovaná primitiva mohou být osvětlena nebo pokryta texturou možnost přidání dalších efektů (mlha …)
GLUT
OpenGL Utility Toolkit
slouží k vytváření přenositelných grafických aplikací používajících pro vykreslování grafickou knihovnu OpenGL Definuje a implementuje aplikační rozhraní pro tvorbu oken a jednoduchého grafického uživatelského rozhraní
přičemž je systémově nezávislá, tj. pro práci s okny se na všech systémech používají vždy stejné funkce se stejnými parametry
přidány funkce pro vykreslování bitmapového a vektorového písma v několika základních řezech
Nezávislost na OS i jazyku
používají se pouze základní datové typy jazyka C
Příklad kódu #include
// hlavickovy soubor funkci GLUT
int main(int argc, char **argv) { glutInit(&argc, argv); // inicializace knihovny GLUT glutCreateWindow("Priklad na OpenGL cislo 1"); // vytvoreni okna pro kresleni glutReshapeWindow(400, 400); // zmena velikosti okna glutPositionWindow(100, 100); // pozice leveho horniho rohu okna
// registrace funkci glutDisplayFunc(onDisplay); // pri prekreslovani okna glutReshapeFunc(onResize); // pri zmene velikosti okna glutKeyboardFunc(onKeyboard); // pri stlaceni klavesy glutMainLoop(); // nekonecna smycka, kde se volaji zaregistrovane funkce return 0; // navratova hodnota }
http://www.root.cz/serialy/graficka-knihovna-opengl/
Příklad kódu //--------------------------------------------------------------------// Nastaveni souradneho systemu v zavislosti na velikosti okna //--------------------------------------------------------------------void onResize(int w, int h) // w a h nova velikost okna { glViewport(0, 0, w, h); // viditelna oblast pres cele okno glMatrixMode(GL_PROJECTION); // zacatek modifikace projekcni matice glLoadIdentity(); // vymazani projekcni matice (identita) glOrtho(0, w, 0, h, -1, 1); // mapovani abstraktnich souradnic do souradnic okna } //--------------------------------------------------------------------// Tato funkce je volana pri stlaceni ASCII klavesy //--------------------------------------------------------------------void onKeyboard(unsigned char key, int x, int y) { if (key==27) exit(0); // pokud ESC, konec programu }
http://www.root.cz/serialy/graficka-knihovna-opengl/
Příklad kódu //--------------------------------------------------------------------// Tato funkce je volana pri kazdem prekresleni okna //--------------------------------------------------------------------void onDisplay(void) { glClearColor(0., 0., 0., 0.); // nastaveni mazaci barvy na cernou glClear(GL_COLOR_BUFFER_BIT); // vymazani bitovych rovin barvoveho bufferu glColor3f(0.0f, 1.0f, 0.0f); // nastaveni zelene barvy pro kresleni glBegin(GL_TRIANGLES); // zacnou se vykreslovat trojuhelniky glVertex2i(200, 50); // souradnice prvniho vrcholu glVertex2i( 50, 250); // souradnice druheho vrcholu glVertex2i(350, 250); // souradnice tretiho vrcholu glEnd(); // konec vykreslovani trojuhelniku glFlush(); // provedeni a vykresleni zmen }
http://www.root.cz/serialy/graficka-knihovna-opengl/
GLUT
http://www.root.cz/clanky/glut-9-vykreslovani-trojrozmernych-teles/
ZABEZPEČENÍ AUDIOVIZUÁLNÍCH DAT
Zabezpečení audiovizuálních dat
Vývojová řešení pro distribuci a zabezpečení
Microsoft (Windows media SDK, Direct show SDK) Real.com (RealSystem iQ) Apple Mac (Quick time streaming server)
Řešení Microsoft
od Windows Media (Player) 7.1 účinná ochrana autorských práv
vztahující se na nabízené audiovizuální snímky umožňuje vést registr všech autorizovaných uživatelů umožňuje zpoplatnění poskytnutí audiovizuálních digitálních dat jako služby
Správce práv (Windows Media Rights Manager – WMRM)
umožňuje autorovi nebo vlastníku práv doručovat klientům hudbu, video a jiná média v komprimované a kryptované podobě Windows Media Packager – WMP
komprimační nástroj
Windows Media License Manager
licenční správce
DRM (Digital Right Managment)
DRM (Digital Right Managment)
metody, jejichž účelem je kontrolovat či omezovat používání obsahu digitálních médií
DRM aplikace
umožňuje komprimovat a kryptovat mediální soubory pomocí klíče uživatel pro přehrání pomocí standardního Windows Media Playeru potřebuje licenci, jejíž obsahem je klíč
uložen separátně
DRM kódování
soubor je uložen v kódovaném formátu
klíč jedinečný na každém PC
zaslán zašifrovaně pro konkrétní počítač
zjištění klíče by vyžadovalo několik dní pracující superpočítač možnost měnit klíč každý den
Kódovaný obsah
Přehrávání obsahu chráněného DRM
přehrání na starší verzi přehrávače
přehrávač vždy kontroluje, zda má uživatel licenci k přehrání
když nemá platnou licenci, je přesměrován na stránku s registrací poskytovatel může zprostředkování licence zpoplatnit
po registraci (případně zaplacení) může uživatel přehrávat pokud je u licence specifikována doba platnosti
přehrávač se automaticky snaží připojit a stáhnout upgrade
po uplynutí této doby již není možné znovu přehrát
uživatel může audiovizuální soubor volně šířit
ale každý další se musí zaregistrovat a získat novou licenci
Potenciální narušitelé zabezpečení
Naivní narušitel
nesnaží se aktivně prolomit kopíruje soubory a instaluje přehrávače, které DRM obcházejí
Zkušený narušitel
má znalosti, ale nemá komerční motivaci prolomit DRM systém
zabezpečení musí znemožnit
zabezpečení musí zvýšit složitost a nákladnost prolomení
Profesionální narušitel
komerčně motivován k prolomení DRM systému
může najímat další narušitele může používat metody a aplikace zpětného inženýrství
zabezpečení musí snížit počet narušitelných míst na minimum a snížit možnosti komerčního zneužití
přehrávače založené na Windows Media Format SDK musí být certifikovány firmou Microsoft
Způsoby zabezpečení
Metody Windows Media Right Manager
stornování, individualizace, Secure Audio Path schéma ochrany a distribuce
http://www.elektrorevue.cz/clanky/02028/index.html
Způsoby zabezpečení
Stornování
proces, během kterého se identifikuje certifikát přehrávače v případě narušené aplikace správce práv neposkytne soubor přehrávači
stornovací seznam na serveru – zavedeny všechny narušené aplikace
http://www.elektrorevue.cz/clanky/02028/index.html
Způsoby zabezpečení
Individualizace proces, který vytváří jedinečnou instanci softwaru řízení práv
ten je pak vždy odlišný na různých počítačích
narušení zabezpečení DRM je pouze pro jednu instanci a ne globální
unikátní soubor DLL, který je strukturálně zmatený, aby nebyl běžným způsobem čitelný http://www.elektrorevue.cz/clanky/02028/index.html
Způsoby zabezpečení
Zabezpečená zvuková cesta
zajišťuje, aby nešlo kopírovat data již přenesená na klienta, ale dosud nereprodukovaná pomocí zvukové karty zabezpečený kanál mezi přehrávačem a jádrem OS
k signálu je během přenosu uvnitř PC přidán šum certifikované výstupní zařízení odstraní licence může zablokovat digitální výstup zvukové karty
http://www.elektrorevue.cz/clanky/02028/index.html