Zabezpečenie Súborov PDF
Total Page:16
File Type:pdf, Size:1020Kb
Masarykova univerzita Fakulta}w¡¢£¤¥¦§¨ informatiky !"#$%&'()+,-./012345<yA| Zabezpečenie súborov PDF Bakalárska práca Martin Sárkány Brno, jar 2015 Prehlásenie Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Martin Sárkány Vedúci práce: RNDr. Andriy Stetsko, Ph.D. ii Poďakovanie Týmto chcem poďakovať RNDr. Andriymu Stetskovi, Ph.D. za odborné vedenie bakalárskej práce, cenné rady a čas, ktorý mi venoval. iii Zhrnutie Prvým z dvoch cieľov tejto bakalárskej práce je opis formátu PDF vzhľa- dom na podporu šifrovania, dešifrovania, podpisovania a overovania podpisu. Druhým cieľom je vytvorenie prehľadu existujúcich nástro- jov podporujúcich zabezpečenie dokumentov PDF a výber vhodného nástroja pre tlačiarenské riešenie Y Soft SafeQ na základe ich skúmania. iv Kľúčové slová PDF, Portable Document Format, zabezpečenie, šifrovanie, podpisovanie v Obsah 1 Úvod ................................ 2 2 Formát PDF ........................... 3 2.1 Syntax ............................ 3 2.2 Filtre ............................. 5 2.3 Zmena obsahu dokumentu ................. 5 3 Šifrovanie dokumentov PDF ................... 7 4 Digitálne podpisovanie dokumentov PDF . 12 5 Analýza nástrojov ........................ 15 5.1 Všeobecná analýza ..................... 15 5.2 Analýza z hľadiska funkcionality . 22 5.2.1 Šifrovanie . 23 5.2.2 Dešifrovanie . 23 5.2.3 Podpisovanie . 25 5.2.4 Overovanie podpisu . 27 6 Testovanie ............................. 28 6.1 Rýchlosť nástrojov ..................... 28 6.2 Pamäťová náročnosť nástrojov . 29 6.3 Vyhodnotenie ........................ 30 7 Modifikácia nástroja JSignPdf . 32 8 Záver ............................... 34 Literatúra ............................... 34 A Grafy nameraných hodnôt .................... 40 1 1 Úvod Formát PDF (Portable Document Format) [1] je jedným z celosvetovo najpoužívanejších formátov. Využíva sa prevažne na reprezentáciu texto- vých dokumentov, ale je možné v ňom uchovať aj rôzny multimediálny obsah. Vďaka jeho vlastnostiam si našiel uplatnenie prevažne v sieťo- vej komunikácii, ktorá je spojená s množstvom rizík. Preto môže byť vyžadované zabezpečenie integrity, dôvernosti, nepopierateľnosti alebo autentickosti. Jednou z možností ich dosiahnutia je použitie bezpečnost- ných prvkov založených na symetrickej alebo asymetrickej kryptografii, ktoré tento formát priamo podporuje. Užívateľ si môže vybrať jednu zo štandardných funkcií alebo, ak mu úroveň zabezpečenia, ktorú po- skytujú, nevyhovuje, definovať vlastné metódy. Cieľom tejto práce je tieto mechanizmy popísať, pripraviť prehľad existujúcich nástrojov s otvoreným zdrojovým kódom, ktoré ich podpo- rujú a otestovať vybrané nástroje na bežnom počítači. V nasledujúcej kapitole je charakterizovaný formát PDF a jeho štruktúra. Spôsoby šifrovania a dešifrovania sú uvedené v kapitole 3, podpisovanie a overovanie podpisu opisuje kapitola 4. Zvyšok práce sa venuje analýze nástrojov, ich testovaniu a modifikácii jedného z nich. Analýza sa skladá z dvoch častí. Prvá časť rieši všeobecné vlastnosti, ako programovacie jazyky, v ktorých boli nástroje napísané, úroveň dokumentácie, možnosti technickej podpory a podobne. Druhá časť je zameraná na funkcionalitu poskytovanú nástrojmi, vzťahujúcu sa na zabezpečenie dokumentov. Testovanie obsahuje dve hlavné časti, ktoré uvádzajú výsledky merania rýchlosti a pamäťovej náročnosti. Na jeho konci sú na základe výsledkov testovania vybrané najvhodnejšie nástroje. Hlavnými kritériami pri výbere vhodných nástrojov boli: programovací jazyk, rýchlosť, spotreba pamäte a podporované algoritmy. 2 2 Formát PDF PDF bol pôvodne proprietárny formát vlastnený spoločnosťou Adobe Systems, dnes existuje ako otvorený štandard vydaný organizáciou International Organization for Standardization pod označením ISO 32000-1:2008, ktorý je totožný s verziou 1.7. Tento štandard sa ne- mení, namiesto toho vznikajú nové rozšírenia. Je založený na jazyku PostScript, z ktorého boli niektoré prvky odstránené a niektoré boli, naopak, pridané. Okrem toho podporuje mnoho funkcií, ako napríklad možnosť kompresie, nastavenie úrovne priehľadnosti, textové vyhľadáva- nie, záložky, poznámky a ďalšie. Jednou z jeho výhod je taktiež možnosť prednostného stiahnutia dát potrebných pre zobrazenie požadovanej strany a až následne zbytku dokumentu. Hlavným cieľom pri jeho vývoji bolo rovnaké zobrazenie dokumentu nezávisle od použitého aplikačného softvéru, operačného systému či hardvéru. 2.1 Syntax Celý dokument je tvorený množinou objektov, objekt môže byť tvorený ďalšími objektmi. Existuje niekoľko typov objektov: 1. Pravdivostné – pravdivostné hodnoty uložené pomocou kľúčových slov true a false. 2. Číselné – existujú 2 typy: celé a desatinné čísla. Presnosť čísel závisí od vnútornej reprezentácie použitej na počítači. Čísla môžu obsahovať znamienko. 3. Reťazce – existujú 2 typy: (a) Znakové – ľubovoľný počet znakov uzatvorených zátvorkami, napríklad (Toto je znakový reťazec.). (b) Hexadecimálne – ľubovoľný počet hexadecimálnych číslic uzatvorených ostrými zátvorkami, napríklad <5F896A3EC4>. 4. Menné – ľubovoľná unikátna postupnosť znakov začínajúca zna- kom /, napríklad /TotoJeNázov. 3 2. Formát PDF 5. Polia – jednorozmerná postupnosť prvkov ohraničená hranatými zátvorkami. Na rozdiel od väčšiny programovacích jazykov môže obsahovať objekty rôzneho typu, napríklad [78 /meno 21.43 (reťazec znakov)]. 6. Slovníkové – hlavný stavebný blok dokumentu PDF, tabuľka obsahujúca záznamy tvorené dvojicami kľúč – hodnota. Kľúč musí byť názov. Slovník sa začína dvojicou znakov « a končí znakmi ». Príklad: « /Key1 (reťazec) /Key2 /NameObject /Key3 4.25 » 7. Dátové prúdy – postupnosť bajtov neobmedzenej dĺžky. Na roz- diel od reťazcov sú vhodné na ukladanie väčšieho množstva dát. Začínajú kľúčovým slovom stream a končia kľúčovým slovom end- stream. Pred prúdom sa vždy nachádza slovník definujúci jeho použitie. Príklad: « /Length 22 » stream nula alebo viac bajtov endstream 8. null – má typ a hodnotu, ktoré sa nezhodujú so žiadnymi inými typmi a hodnotami. Objekty môžu byť priame alebo nepriame. Nepriamy objekt vzniká z priameho pridelením unikátneho identifikátora, pomocou ktorého sa naň dá odkazovať z ľubovoľnej časti dokumentu. Tento identifikátor pozostáva z: 1. Číslo objektu - kladné celé číslo identifikujúce objekt. 2. Číslo generácie - nezáporné celé číslo udávajúce verziu objektu. V novovytvorenom súbore PDF majú všetky nepriame objekty generačné číslo rovné 0. S každou aktualizáciou sa zvyšuje o 1. Všetky objekty neobsahujúce tento identifikátor sú priame. 4 2. Formát PDF Dokument PDF má štyri časti: hlavička, telo, tabuľka krížových referencií a záverečná sekcia. Hlavička sa skladá z piatich znakov a identifikuje verziu, v ktorej bol súbor napísaný (%PDF-1.0 - %PDF-1.7). Telo obsahuje postupnosť objektov, ktoré tvoria obsah dokumentu. Ta- buľka krížových referencií obsahuje informácie o umiestnení nepriamych objektov v súbore, aby k nim bolo možné pristupovať priamo, bez nut- nosti čítania celého dokumentu. Záverečná sekcia umožňuje prehliadaču rýchlo nájsť tabuľku krížových referencií a určité objekty. Od verzie 1.5 môže byť tabuľka krížových referencií spolu so záverečnou sekciou uložená v jednom dátovom prúde. Dokument PDF môže byť uložený ako textový alebo binárny súbor. 2.2 Filtre Na dátové prúdy je pri vytváraní alebo modifikácii dokumentov možné použiť rôzne kódovanie. Príkladom takéhoto kódovania je napríklad pou- žitie komprimačných algoritmov. Aby bolo možné takéto prúdy správne interpretovať, musí byť pri nich uvedený spôsob, ako ich dekódovať. Preto každý prúd, na ktorý bolo použité kódovanie, musí obsahovať názov filtra použitého na dekódovanie. Ak je ich použitých viac, musia byť uvedené v poradí, v akom majú byť aplikované. Niektoré filtre vyža- dujú parametre použité pri dekódovaní. Slovník prúdu vtedy obsahuje slovník DecodeParams, v ktorom sú uložené. 2.3 Zmena obsahu dokumentu Na rozdiel od väčšiny formátov, dokument uložený vo formáte PDF môže byť upravený bez nutnosti prepísania celého súboru, čo je efektívne najmä pri malých zmenách vo veľkom dokumente. Táto forma zmeny obsahu dokumentu sa nazýva inkrementálna aktualizácia. Navyše je z takto upraveného dokumentu možné získať aj jeho pôvodnú podobu. Spôsob úpravy dokumentu je nasledujúci: za záverečnú sekciu pôvodného dokumentu sa pridajú zmeny vykonané v tele dokumentu nasledované novou tabuľkou krížových referencií. Tá obsahuje len objekty, na ktorých bola vykonaná zmena, čiže boli pridané, nahradené, upravené alebo odstránené. Na koniec dokumentu sa pridá nová záverečná sekcia, ktorá okrem štandardných záznamov obsahuje aj odkaz na záverečnú sekciu 5 2. Formát PDF pôvodného dokumentu. Ak bola takáto zmena dokumentu vykonaná viackrát, odkazuje vždy na predchádzajúcu. Pri čítaní dokumentu sú staršie verzie objektov ignorované. Princíp inkrementálnej aktualizácie je znázornený na nasledujúcom obrázku. Obr. 2.1: Inkrementálna aktualizácia, prevzaté z [2] 6 3 Šifrovanie dokumentov PDF Súbor PDF môže byť šifrovaný, čím sa chráni jeho obsah pred neau- torizovaným prístupom. Informácie týkajúce sa šifrovania sú uchované v slovníku šifrovania, ktorý je uložený v zázname Encrypt v slovníku záverečnej sekcie. Pokiaľ sa tam tento záznam nenachádza, prehliadač považuje dokument za nezašifrovaný. Všetky objekty v slovníku šifrova- nia musia byť priame. Šifrovanie