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 programátor používá namísto toho, aby je sám naprogramoval definuje interface mezi zdrojovým kódem a knihovnami jak se funkce knihovny mají volat ze zdrojového kódu programu ABI (Application binary interface) využívá se po přeložení programu do binární podoby a během jeho běhu umožňuje již zkompilovanému souboru fungovat beze změn na systémech s kompatibilním ABI API závislá na programovacím jazyku respektují zvyklosti jazyka API nezávislá na programovacím jazyku nezávisí na jazyku, dostupné přes RPC 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 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) API operačních systémů Další POSIX Windows API (.NET Framework API) 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 přístup k nezbytným zdrojům poskytnutým systémem Windows Pokročilé služby práce s registrem, vypnutí/restart, správa služeb a uživatelských účtů Grafické uživatelské rozhraní (GUI) funkce pro výstup grafického obsahu Uživatelské Rozhraní Knihovna běžných dialogových oken poskytuje aplikacím standardní dialogová okna Knihovna běžných prvků (Common Control Library) pokročilejší prvky stavové řádky, toolbary a záložky Windows Shell 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 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 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ů 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. 16b Windows: user.exe 32b Windows: user32.dll Windows XP+: comctl32.dll (společně s Common Control Library) Knihovna běžných dialogových oken poskytuje aplikacím standardní dialogová okna 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í zabaluje části API do ucelených C++ tříd Active Template Library (ATL) šablonově orientovaná nadstavba pro COM Windows Template Library (WTL) rozšíření pro ATL, zamýšlena jako odlehčená alternativa k MFC Další nadstavby vyvinuté jinými firmami (např. Borland) 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 2D rastrová grafika Direct3D 3D vykreslování DirectInput 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) podpora přehrávání a záznamu zvuků DirectMusic podpora přehrávání a zpracování hudby DirectX Media Objects podpora pro tvorbu multimediálních efektů, kodeků apod. DirectSetup 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 obraz vykreslen s pomocí DirectDraw VMR Video Mixing Renderer 7 (Win XP) 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) idct, kompenzace pohybu, deinterlacing, korekce barev na GPU 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ů 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 používá se při tvorbě počítačových her, CAD programů, aplikací virtuální reality, vědeckotechnické vizualizace apod. konsorcium ARB (Architecture Review Board) SGI, Microsoft, nvidia, ATI, Použití prakticky všechny počítačové platformy 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 body, úsečky, mnohoúhelníky a obdélníky 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ů 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 GLUT OpenGL Utility Toolkit vlastní primitivní datové typy 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 bod, úsečka, trojúhelník, čtyřúhelník, plošný konvexní polygon, bitmapa (jednobarevný rastrový obraz) a pixmapa (barevný rastrový obraz) 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 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 <GL/glut.h> // 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(); glortho(0, w, 0, h, -1, 1); // vymazani projekcni matice (identita) // 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č se automaticky snaží připojit a stáhnout upgrade 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 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í zabezpečení musí znemožnit Zkušený narušitel má znalosti, ale nemá komerční motivaci prolomit DRM systém 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