Tutoriál pre digitálne podpisovanie
zdrojových súborov HTML
(alebo, ako podpisovať zdrojové súbory HTML spôsobom "neviditeľným" pre spracujúcu aplikáciu)

Pagina disponibile anche in
- italiano -
(di TJL73)
Page also available in
- english -
(by Carlo Luciano Bianco)
Stránka je dostupná aj v
- slovenčine -
(preložil )
Page également disponible en
- français -
(par Rinux)

    Disclaimer    

Cieľom tohto tutoriálu je popísať možný postup pripojenia digitálneho podpisu OpenPGP k webovej stránke, tak aby nebolo narušené jej spracovanie prehliadačom.

PREDSLOV: V tomto dokumente je termín "OpenPGP" nesprávne používaný tak ako keby to bol názov softvéru, ale nie je to tak: tento termín označuje akýkoľvek softvér, ktorý je kompatibilný so štandardom OpenPGP, ako je napr., GnuPG a PGP.

Nasledujúci postup platí iba pre statický HTML kód (vrátane JavaScriptu, CSS a akejkoľvek inej veci interpretovanej "na strane klienta").
[Rád zdôrazňujem, že termín "DHTML" znamená "stránka s dynamickým obsahom", zatiaľ čo jej HTML zdroj je statický. To čo nasleduje môže byť použité aj na tento druh stránok.]
Dynamické zdrojové súbory, generované jazykmi na "strane servera" (ako sú napr. ASP, CGI, PERL, PHP), nie sú kompatibilné s tu popisovanou technikou, pretože sú generované zakaždým dynamicky, webovým serverom. Digitálny podpis vytvorený vlastnoručne autorom teda nie je možný: na základe definície, autor môže podpísať iba statický kód (tj. staticky uložený na webovom serveri). Je možné implementovať automatické podpisovanie dynamického kódu generovaného serverom, nainštalovaním vhodného skriptu na samotnom serveri. Toto znamená, že kľúč, používaný na vytvorenie podpisu, sa musí nachádzať na nedôveryhodnom mieste a, teda, takému podpisu nemožno dôverovať ako podpisu vytvorenému vlastnoručne samotným autorom.

Táto metóda nie je v žiadnom prípade náhradou za SSL/TLS, napr. preto, že neumožňuje zašifrované spojenia a je iba jednosmerná "server -> klient". Avšak, kvôli faktu, že ju nie je potrebné implementovať na "strane servera", je táto metóda veľmi užitočná vo všetkých situáciách v ktorých webový server nie je pod priamou kontrolou webdizajnéra, keď SSL/TLS nemôže byť použité (najbežnejším príkladom je niekto kto chce podpísať osobnú stránku nachádzajúcu sa na serveri poskytujúcom webhosting zdarma ako je tento, ktorý zdarma poskytuje Altervista.org).
V mnohých situáciách, táto metóda predstavuje jediný spôsob ako overiť webovú stránku HTML.




 Tvorba podpísaného HTML kódu 

Aby sme mohli zreprodukovať to čo sa deje v tomto dokumente, je potrebné vložiť dva značky začiatku a konca komentára, respektíve na začiatok a na koniec HTML kódu, ktoý chceme podpísať, nasledujúcim spôsobom:

 -->
<HTML>
 [Text alebo kód HTML, ktorý bude podpísaný]
</HTML>
 <!--

Treba si všimnúť (a, ak ste si to ešte nevšimli, všimnite si to teraz), že pred uzatvárajúcou značkou komentára ("-->"), je prázdne miesto.

 -->
<HTML>
 [Text alebo kód HTML, ktorý bude podpísaný]
</HTML>
 <!--

Toto je potrebné aby sme sa vyhli tomu, že by bolo, počas tvorby digitálneho podpisu OpenPGP, pridané "- " (pomlčka a medzera) na začiatok toho riadku (podľa špecifikácií OpenPGP), vytvoriac tak "- -->".
Treba si všimnúť, že prítomnosť toho "- " nebude mať žiaden vedľajší účinok na spracovanie, ale jeho neprítomnosť bude znamenať čistejší HTML kód.

POZNÁMKA: Ak je na vaších stránkach, kvôli akémukoľvek dôvodu, pomlčka "-" ako prvé písmeno na riadku, bude potrebné pridať označenie komentára v prvom stĺpci. Takto OpenPGP nepridá "pomlčku a medzeru" na začiatok riadka pri vytváraní podpisu.
Výsledný kód potom bude: "<!-- -->-". Toto nebude mať žiaden vedľajší efekt na spracovanie kódu ale znemožní modifikáciu kódu zo strany OpenPGP.

Teraz, môžeme vybrať celý HTML kód stránky (vrátane "konca riadka" na konci dokumentu):

 -->
<HTML>
 [Text alebo kód HTML, ktorý bude podpísaný]
</HTML>
 <!--
 

a nechať OpenPGP aby pre neho vytvorilo "podpis priamo v texte".

POZNÁMKA: Ak používate nástroje ako PGP alebo GPGshell, musíte vypnúť vlastnosť "zarovnávania slov", pretože by to mohlo modifikovať váš HTML kód tak, že by sa stal nečitateľným pre váš webový prehliadač.


Po podpísaní, môžete HTML kód podpísaný priamo v texte vložiť späť do vášho obľúbeného HTML editora:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 -->
<HTML>
 [Podpísaný text alebo HTML kód]
</HTML>
 <!--

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Komentár: Zdrojový HTML kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

a pridajte dve značky komentára na začiatok a na koniec zdrojového kódu:

 <!--

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 -->
<HTML>
 [Podpísaný text alebo HTML kód]
</HTML>
 <!--

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Komentár: Zdrojový HTML kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 -->

Teraz, máme HTML kód s touto štruktúrou:

 <!--

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 -->
<HTML>
 [Podpísaný text alebo HTML kód]
</HTML>
 <!--

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Komentár: Zdrojový HTML kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 -->


Zelený zvýraznený text bude váš prehliadač považovať za komentár a teda bude počas spracovania dokumentu ignorovaný. Žltú zvýraznenú časť, tj. pôvodný HTML kód, bude potom prehliadač interperetovať presne tak ako keby tam podpis OpenPGP vôbec nebol.

Na tejto stránke, môžete vidieť výsledok toho HTML kódu (samozrejme, toto je iba jednoduchý príklad, potom podpis nebude overiteľný. Aby ste videli skutočný príklad stránky podpísanej touto technikou, môžete sa pozrieť na moju stránku X-Face alebo na stránku s mojimi kľúčmi OpenPGP).

POZNÁMKA: Kód musí bať podpísaný znova po každej aktualizácii stránky, alebo podpis už viac nebude platný.


Samozrejme, že prítomnosť digitálneho podpisu je neviditeľná pre prehliadač, a teda by bolo vhodné pridať, na spodnú časť stránky, poznámku oznamujúcu jeho prítomnosť spolu s odkazom na tutoriál vysvetľujúci o čom to je.
Vytvoril som logo, ktoré môže byť voľne používané na označenie prítomnosti digitálneho podpisu OpenPGP:   OpenPGP Digitally Signed HTML
Také logo je dostupné v dvoch rôznych grafických formátoch a malo by byť vložené na spodnú časť každej stránky, ktorá obsahuje digitálny podpis OpenPGP.
Ak sa rozhodnete použiť túto techniku autentifikácie vo vaších webových stránkach, zdvorilo vás žiadam aby ste vložili toto logo, podľa týchto jednoduchých pravidiel. Pre mňa to bude skutočne česť.




 Overenie podpísaného HTML kódu 

Teraz prejdime k overeniu stránky podpísanej s použitím OpenPGP.

Postup overenia kódu HTML je veľmi jednoduchý.
Musíte si iba zobraziť HTML kód stránky (každý prehliadač umožňuje takúto operáciu; je zvyčajne prístupná cez príslušné menu po kliknutím na stránku pravým tlačidlom myši) a overiť ho s použitím OpenPGP.
Ak digitálny podpis stránky bude overený, bude to znamenať, že stránka nebola zmenená. Ak namiesto toho, kód NEBUDE overený, bude to znamenať, že so stránkou bolo sa manipulovalo (alebo, v každom prípade, že sa už viac nezhoduje s pôvodnou stránkou, ktorá bola podpísaná).

Poznámka pre používateľov zobrazovacieho jadra Gecko

Mozilla v1.7.8 a FireFox v2.0.0.14 (a, myslím, že všetky prehliadače ktoré používajú jadro Gecko) nezobrazujú správne zdrojové súbory podpísané touto technikou pretože, keď je kód zobrazený príkazom prehliadača "Zobraziť zdrojový kód stránky" a je skopírovaný do schránky, sú doňho náhodne pridané nejaké prázdne riadky. Tieto modifikácie žiadnym spôsobom neprekážajú spracovaniu HTML prehliadačom ale spôsobujú, že akýkoľvek podpis stránky pomocou OpenPGP sa stane neplatným. Ostatné prehliadače, ako sú Opera a Internet Explorer, namiesto toho správne kopírujú pôvodný zdrojový kód HTML do schránky, takže digitálny podpis môže byť správne overený.
Existuje už hlásenie o tejto chybe na Bugzille. Môžete sledovať vývoj tohoto hlásenia o chybe a, možno, pridať svoj hlas pre chybu aby ste zvýšili jej "prioritu".

Pre možné obídenie tejto chyby, používatelia jadra Gecko môžu uložiť stránku do lokálneho súboru, z okna "Zobraziť zdrojový kód stránky" alebo priamo z prehliadača, s použitím klávesovej skratky Ctrl+S alebo príslušnej položky v menu "Súbor".
Uloženie kódu z okna "Zobraziť zdrojový kód stránky" by nemalo spôsobiť žiaden problém. Ak namiesto toho chcete stránku uložiť priamo z prehliadača, uistite sa, že v dialógovom okne "Uložiť stránku ako..." vyberiete "Iba HTML", aby ste sa vyhli akýmkoľvek modifikáciám v texte odkazov na objekty uložené lokálne (napr. obrázky).
Po uložení zdrojového kódu HTML do lokálneho súboru, ho bude možné zobraziť v akomkoľvek editore a overiť digitálny podpis OpenPGP.
Nepoznám správanie iných prehliadačov okrem tých, ktoré som testoval: (Opera, Mozilla, FireFox a Internet Explorer).
Akékoľvek hlásenie o tom si budem, samozrejme, veľmi ceniť.




 Vytvorenie podpísanej časti dokumentu 

Samozrejme, je možné použiť celý vyššie opísaný postup aj na jednotlivé časti stránky.

Možno stránka, ktorá obsahuje dôležité informácie, ktoré majú byť overené, musí byť preložená do niekoľkých jazykov. Ak takéto informácie nemusia byť preložené, (ako napr. kontrolný súčet niekoľkých distribúcií), bude dobré podpísať iba tieto časti, ponechajúc otvorenú možnosť preložiť všetky zostávajúce časti stránky bez porušenia podpisu pripojeného pôvodným autorom.

Toto môže byť príklad zdrojového kódu vysvetľujúci túto myšlienku:

<HTML>
<HEAD>
<TITLE>Priklad</TITLE>
</HEAD>
<BODY>
[Text alebo HTML kód na preklad alebo, ktorý môže byť modifikovaný]
 <!--

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 -->
<TABLE>
 [Podpísaný text alebo HTML kód]
</TABLE>
 <!--

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Komentár: Zdrojový HTML kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 -->
[Text alebo HTML kód na preklad alebo, ktorý môže byť modifikovaný]
</BODY>
</HTML>


V tomto príklade sú červenou farbou zvýraznené tie časti, ktoré môžu byť prekladané alebo modifikované, bez porušenia podpisu.

Zelenou farbou sú zvýraznené tie časti textu, ktoré obsahujú digitálny podpis (a ktoré bude prehliadač ignorovať). Teda nemôžu byť modifikované.

Časti zvýraznené žltou farbou sú digitálne podpísané pôvodným autorom. Tieto časti, rovnako ako zelené, nesmú byť modifikované alebo pôvodný podpis prestane byť platný.

Príklad tejto aplikácie zo skutočného života je k dispozícii na tejto stránke. Ak by podpisy pripojené k tej stránke vytvoril Werner Koch, a nie ja, mohli by ste si byť istí, bez akýchkoľvek pochybností, o platnosti tých kontrolných súčtov, bez toho aby ste museli na sieti hľadať ďalšie informácie (ako sa namiesto toho navrhuje na pôvodnej stránke).


VAROVANIE: Tieto dve stránky, podpísané mnou, nachádzajúce sa na mojej webovej stránke, NEMAJÚ akúkoľvek platnosť iba vysvetľujúcu.


Samozrejme, že dokument môže obsahovať rôzne časti podpísané rôznymi autormi, čo dovoľuje napr. mať podpis(y) pôvodného(ých) autora(ov) na niektorých častiach textu alebo kódu a podpis celej stránky pripojený prekladateľom. Toto umožňuje hniezdovanie podpisov, ponechajúc ich všetky platné, každý na jeho vlastnej úrovni, ako je to v nasledujúcom príklade:


 ,---------[ Podpis prekladateľa "P" ]-------------.
 |                                                 | 
 |  Časť textu, ktorú preložil "P"                 |
 |                                                 |
 |                                                 |
 |  ,--------[ Podpis autora "A" ]--------------.  |
 |  |                                           |  |
 |  |   Text napísaný a podpísaný autorom "A"   |  |
 |  |                                           |  |
 |  `-------------------------------------------'  |
 |                                                 |
 |  Ďalšia časť textu, ktorú preložil "P"          |
 |                                                 |
 |                                                 |
 |  ,--------[ Podpis autora "B" ]--------------.  |
 |  |                                           |  |
 |  |   Text napísaný a podpísaný autorom "B"   |  |
 |  |                                           |  |
 |  `-------------------------------------------'  |
 |                                                 |
 |  ,--------[ Podpis autora "C" ]--------------.  |
 |  |                                           |  |
 |  |   Text napísaný a podpísaný autorom "C"   |  |
 |  |                                           |  |
 |  `-------------------------------------------'  |
 |                                                 |
 |  ,-----[ Ďalší podpis autora "B" ]-----------.  |
 |  |                                           |  |
 |  |   Text napísaný a podpísaný autorom "B"   |  |
 |  |                                           |  |
 |  `-------------------------------------------'  |
 |                                                 |
 |  Ďalšia časť textu, ktorú preložil "P"          |
 |                                                 |
 |                                                 |
 |  ,-----[ Ďalší podpis autora "A" ]-----------.  |
 |  |                                           |  |
 |  |   Text napísaný a podpísaný autorom "A"   |  |
 |  |                                           |  |
 |  `-------------------------------------------'  |
 |                                                 |
 |  Ďalšia časť textu, ktorú preložil "P"          |
 |                                                 |
 `-------------------------------------------------'


V schéme naľavo možno vidieť, že zmenou jednej z častí nachádzajúcich sa v malých rámčekoch sa zruší platnosť podpisov prekladateľa aj príslušného autora (samozrejme, pokiaľ zmena nebola urobená pred pridaním podpisu prekladateľa).

Ak sa namiesto toho zmení jedna z častí mimo malých rámčekov, tak sa zneplatní iba podpis prekladateľa, ale podpisy rôznych autorov zostanú stále platné.

Ak namiesto toho chce pôvodný autor potvrdiť aj preklad, môže podpísať stránku po prekladateľovi, ako v nasledujúcej schéme:


 ,----------[ Druhý podpis autora "A" ]------------------.
 |                                                       |
 |  ,--------[ Podpis prekladateľa "P" ]--------------.  |
 |  |                                                 |  | 
 |  |  Časť textu preložená "P"                       |  |
 |  |                                                 |  |
 |  |                                                 |  |
 |  |  ,--------[ Podpis autora "A" ]--------------.  |  |
 |  |  |                                           |  |  |
 |  |  |   Text napísaný a podpísaný autorom "A"   |  |  |
 |  |  |                                           |  |  |
 |  |  `-------------------------------------------'  |  |
 |  |                                                 |  |
 |  |  Ďalšia časť textu, ktorú preložil "P"          |  |
 |  |                                                 |  |
 |  `-------------------------------------------------'  |
 |                                                       |
 `-------------------------------------------------------'


Tu, autor "A", vytvoril a podpísal text (alebo HTML kód).

Potom, prekladateľ "P" preložil časti textu do svojho jazyka, podpíšuc ich svojím vlastným kľúčom.

Nakoniec, pôvodný autor "A" podpísal znova, svojím vlastným kľúčom, celú stránku, potvrdiac tiež preklad, ktorý urobil "P" (bez akejkoľvek ďalšej zmeny HTML kódu).




 Potvrdenie externých objektov (v prípade skutočnej paranoje) 

Možno existuje potreba potvrdiť aj objekty vložené do HTML stránky. Myslím tým, hlavne, obrázky.
V tomto prípade môžete vypočítať kontrolný súčet takýchto objektov (MD5 alebo SHA1) a napísať tento kontrolný súčet do podpísanej časti komentárov.
Toto, oproti jednotnému "Oddelenému podpisu vo formáte ASCII" každého objektu, dovoľuje znížiť potrebný priestor, udržiavajúc takú istú silu pre potvrdenie. Nakoniec, digitálny podpis je jednoducho iba potvrdením hashu objektu, a toto je presne to čo robíme.
Samozrejme, nie všetky obrázky budú potrebovať potvrdenie... iba tie, ktoré sú skutočne dôležité pre overenie stránky budú autentifikované. To znamená, že napr. všetky dekorácie, animácie a pozadia (pokiaľ nie sú skutočne dôležité pre obsah stránky) nebude treba potvrdzovať ich kontrolnými súčtami.

Pozrime sa na praktický príklad takejto techniky.

Toto je podpisovaný HTML kód:

 -->

<HTML>
<HEAD>
<TITLE>
Priklad autentifikacie obrazkov</TITLE>
</HEAD>
<BODY BACKGROUND="
Pozadie.gif">

<DIV>
 [Podpísaný text alebo HTML kód]
 
 <IMG SRC="Obrazok1.jpg">
 <IMG SRC="Obrazok2.gif">
 
 <IMG SRC="Maly_Ramcek.gif">
 
 <IMG SRC="Obrazok3.jpg">
 <IMG SRC="Obrazok4.png">
 
 [Podpísaný text alebo HTML kód]
</DIV>

</BODY>
</HTML>

 <!--

Kontrolné súčty obrázkov:

Názov súboru | Veľkosť      | Kontrolný súčet MD5
-------------+--------------+------------------------------------
Obrazok1.jpg | 46338 bajtov | E2EE9822 BFF5407D 696B573E FB2989C0 
Obrazok2.gif | 17379 bajtov | F1AD8852 6150B054 4DF46226 2B7D6BD4
Obrazok3.jpg | 40762 bajtov | 8A4F262F E336F854 077714E7 ABF3C911
Obrazok4.png | 18065 bajtov | F06A61F2 6808B01A B9EEF949 F1577264


V tomto príklade som HTML kód označil rôznymi farbami:
 modrou  značky,
 zelenou  správne vymedzené komentáre,
 čiernou  text zobrazený parserom,
 oranžovou  súbory pre potvrdenie,
 fialovou  tie na ktorých nám nezáleží,
 sivou  to čo by bolo komentárom ale ešte nebolo správne vymedzené.

Toto umožňuje vidieť "na prvý pohľad" rôzne časti kódu, ktorý analyzujeme.

To čo nasleduje, namiesto toho, je HTML kód po pripojení digitálneho podpisu:

 <!--

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 -->

<HTML>
<HEAD>
<TITLE>
Priklad autentifikacie obrazkov</TITLE>
</HEAD>
<BODY BACKGROUND="
pozadie.gif">

<DIV>
 [Podpísaný text alebo HTML kód]
 
 <IMG SRC="Obrazok1.jpg">
 <IMG SRC="Obrazok2.gif">
 
 <IMG SRC="Maly_Ramcek.gif">
 
 <IMG SRC="Obrazok3.jpg">
 <IMG SRC="Obrazok4.png">
 
 [Podpísaný text alebo HTML kód]
</DIV>

</BODY>
</HTML>

 <!--

Kontrolné súčty obrázkov:

Názov súboru | Veľkosť      | Kontrolný súčet MD5
-------------+--------------+------------------------------------
Obrazok1.jpg | 46338 bajtov | E2EE9822 BFF5407D 696B573E FB2989C0 
Obrazok2.gif | 17379 bajtov | F1AD8852 6150B054 4DF46226 2B7D6BD4
Obrazok3.jpg | 40762 bajtov | 8A4F262F E336F854 077714E7 ABF3C911
Obrazok4.png | 18065 bajtov | F06A61F2 6808B01A B9EEF949 F1577264

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Komentár: Zdrojový HTML kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 -->


Štruktúra tabuľky (alebo zoznamu potvrdených súborov, ak nerád používate tabuľky), je iba príkladom ale, na to aby bola užitočná, mala by obsahovať aspoň meno objektu (s cestou a príponou, pre identifikáciu formátu súboru), jeho veľkosť v bajtoch a jeho kontrolný súčet (uvádzajúc hashovací algoritmus, ktorý bol použitý na jeho výpočet).

Toto predpokladá, že ak aj len jedna hodnota typu, veľkosti alebo kontrolného súčtu bola zmenená (pre vyskúšanie ospravedlnenia zmeny alebo modifikácie obrázku), podpis stránky sa stane neplatným.

Teda, ak podpísaná časť HTML kódu, zdroj stránky, bola autentifikovaná po overení podpisu, boli by sme si istí, že takéto kontrolné súčty, korešponujúce so súčasnými obrázkami (alebo inými objektami), sú platné.
Teda, postačí vypočítať kontrolný súčet obrázka, ktorý chceme overiť, zabezpečiť to jeho veľkosťou a typom, aby sme získali istotu, že obrázok nebol modifikovaný.

Všetko vyššie spomenuté, hovoriac o "objektoch", môže byť použité, okrem obrázkov, tiež na CSS a iné pripojené súbory ako sú napr. flash animácie, textové súbory a mnoho ďalšieho.

Avšak, je dôležité, že takéto objekty sú pod priamou kontrolou podpisujúceho autora pretože, v opačnom prípade, modifikácia skutočným vlastníkom by spôsobila stratu platnosti kontrolných súčtov.

Namiesto toho, pre ostatné druhy súborov, ako sú komprimované archívy alebo spustiteľné súbory, ktoré môžu byť stiahnuté z webovej stránky, je lepšie napísať kontrolný súčet tradičným spôsobom, takže tí čo si ich stiahnu môžu overiť ich neporušenosť klasickým spôsobom.
Ďalšou dobrou metódou je pridať k súborom "Oddelený podpis".


Alternatívna metóda

Možná alternatívna technika je vložiť kontrolný súčet priamo do odkazu na objekt. Týmto spôsobom bude každý kontrolný súčet priamo spojený s príslušným objektom.

Nasleduje príklad tejto techniky:

 <IMG SRC="Obrazok1.jpg" CHKSUM="46338;MD5;E2EE9822BFF5407D696B573EFB2989C0">
 <IMG SRC="Obrazok2.gif" CHKSUM="17379;MD5;F1AD88526150B0544DF462262B7D6BD4">
 
 <IMG SRC="Maly_Ramcek.gif">
 
 <IMG SRC="Obrazok3.jpg" CHKSUM="40762;SHA1;C9E92C38CB325186E749A0FD5C27678827724E5F"> 
 <IMG SRC="Obrazok4.png" CHKSUM="18065;MD5;F06A61F26808B01AB9EEF949F1577264">

V prvom riadku príkladu (kvôli zreteľnosti), boli zvýraznené:  žltou  značka,  červenou  veľkosť objektu v bajtoch,  zelenou  použitý hashovací algoritmus,  modrou  kontrolný súčet objektu, vypočítaný týmto algoritmom.

Samozrejme, táto technika vytvára značku ("CHKSUM") ktorá je neplatná pre spracujúcu aplikáciu. To znamená, že žiaden prehliadač nebude interpretovať takúto značku, ktorá teda zostane neviditeľná. Na druhej strane, takýto HTML zdroj by mohol byť považovaný za neplatný pri overovaní cez "W3C Validator".

Avšak, týmto spôsobom môže byť možné aby samotný prehliadač (pomocou zabudovanej funkcie alebo zásuvného modulu, ako napr. Enigmail) priamo bol schopný overiť platnosť objektu, vypočítaním jeho kontrolného súčtu.

Potom, ak bude platnosť tejto stránky potvrdená a tieto značky overené, bude náš cieľ dosiahnutý.




Podpisovanie častí JavaScriptového kódu

Keďže JavaScript, ako HTML, je kód ktorý sa vykonáva na strane klienta, je tiež možné podpísať časti JavaScriptového kódu, "vložené" v zdrojovom kóde HTML alebo "odkazované" v externom súbore .js.
Naša HTML stránka už obsahuje všetky "vložené" JavaScriptové časti, takže sú už podpísané spolu s celou stránkou.

Na druhej strane, bude potrebné explicitne podpísať JavaScriptový kód nachádzajúci sa v akomkoľvek externom súbore .js.
Pre podpísanie takéhoto externého kódu bude potrebné vytvoriť v každom .js súbore niektoré "zakomentovaqné" časti pre vloženie podpisu, ako sme už urobili s HTML kódom.

V nasledujúcom príklade vidíme ako podpísať časť JavaScriptového kódu:

 */

var List = new Array (
"Element 1","Element 2","Element 3","Element 4","Element 5"
)

 /*

Ako ste si už mohli všimnúť, značky "konca komentára" (" */ ") sa nachádzajú na začiatku JavaScriptového kódu a "začiatku komentára" (" /* ") na konci. Všetko čo potrebujete urobiť je vybrať obsah .js súboru, ktorý sa má podpísať, pre jeho podpísanie a pridať tieto dva oddeľovače komentárov pred a za podpísanú časť, ako v nasledujúcom:

 /*

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 */

var List = new Array (
"Element 1","Element 2","Element 3","Element 4","Element 5"
)

 /*

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Comment: Zdrojový JavaScript kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 */

Zelené riadky, ako v prípade HTML kódu, bude interpreter JavaScriptu ignorovať, kým žltá časť sa bude brať do úvahy:

 /*

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 */


var List = new Array (
"Element 1","Element 2","Element 3","Element 4","Element 5"
)


 /*

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Comment: Zdrojový JavaScript kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 */

Aj v tomto prípade môžeme pridať kontrolné súčty objektov ktoré sa týkajú JavaScriptového kódu, ako je to v nasledujúcom príklade:

 /*

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 */


var List = new Array ( // Checksum: "Algo;Size;Digest"
"Element 1",           // Checksum: "SHA1;1234;E1EC203D81C37D201D18BB8D9AEE50E37DB6E21A"
"Element 2",           // Checksum: "SHA1;5678;BB8D9AEE50E37DBE1EC203D8E21A01D181C37D26"
"Element 3",           // Checksum: "SHA1;9012;C203D8137D26BB8D9AEE50E37DBCE1EE21A01D18"
"Element 4",           // Checksum: "SHA1;3456;6E21A01D18BB8EE50E37DB1EC203D81C37D2D9AE"
"Element 5"            // Checksum: "SHA1;7890;1A01D18BB8E1ECD26E2D9AEE50E37DB203D81C37"
)


 /*

-----BEGIN PGP SIGNATURE-----
Version: OpenPGP
Comment: Zdrojový JavaScript kód podpísaný priamo do textu

xX0XXXXXxXxxXxxxXxX0xXXXXx0XXX0XXxxXxxXxxx0XXXXXxX+X0XxX0XXxXxxx
X0XXXxXxxxXXXxx0XXxxxxX=
=xXxX
-----END PGP SIGNATURE-----

 */

V skutočnosti, všetko čo sa objaví za symbolom "zakomentovaný riadok" (" // ") bude interpreter JavaScriptu ignorovať, a použije sa to iba na overenie príslušných objektov (ako sa to už deje v prípade HTML kódu).

Pre overenie podpísaného JavaScriptového kódu, preto, bude stačiť otvoriť .js súbor a overiť podpis.

Last change: 


Obsah tejto stránky je k dispozícii na voľné používanie a distribúciu,
ako je to opísané v licencii Creative Commons Public License v3.0, ale jej vlastníctvo zostáva exkluzívne majetkom TJL73.

Ak chcete používať (tiež iba časť) tohto tutoriálu v svojich dokumentoch, musíte citovať zdroj.
Dúfam, že čoskoro bude nasledovať veľa ďalších lokalizovaných verzií tejto stránky.
Komentáre, návrhy, a hlásenia chýb sú samozrejme vítané.

Vďaka Theoreticalovi za to, že silne žiadal a dostal takúto stránku a Carlovi Lucianovi Biancovi, Rinuxovi,
Lapovi Luchinimu, Stefanovi Winzozzovi, Martinovi Lukáčovi, Vincenzovi Realovi za pokojné testovanie tohto šialenstva.

The translators are the only responsibles for the content of the translated texts.
I, TJL73, am just hosting their translations, without assuming any responsibility
on the content of such non-Italian versions of the page.


Invalid 3WC HMTL code Invalid 3WC CCS code Made with Notepad 100% recycled bytes Best viewed by Any Browser Creative Commons Public License v3.0 "HD ready" Web Site "USB 3.0 compliant" Web Site NO Facebook, pls!