home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 April / Chip_2003-04_cd1.bin / tema / krypta / articles.php@ID=165 < prev    next >
Text File  |  2003-02-02  |  17KB  |  359 lines

  1. <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.  <title>Krypta.cz - The knapsack algorithm</title>
  5.  <link rel="StyleSheet" href="server/main.css" type="text/css">
  6.  <link rel="SHORTCUT ICON" href="server/favicon.ico">
  7.  <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  8.  <meta http-equiv="Cache-control" content="no-cache">
  9.  <meta http-equiv="Pragma" content="no-cache">
  10.  <meta http-equiv="Expires" content="0">
  11.  <meta name="robots" content="ALL,FOLLOW">
  12.  <meta http-equiv="Content-language" content="cs">
  13.  <meta name="description" content="Internetov² bezpeΦnostnφ portßl, zab²vajφcφ se kryptografiφ (Üifrovßnφm), ochranou dat, internetovou bezepeΦnostφ a poΦφtaΦov²mi viry">
  14.  <meta name="keywords" content="Üifrovßnφ cryptography pgp des aes rsa dss digital signatures pki linux free bezpeΦnost ochrana hacking cracking virus worm">
  15.  <meta name="copyright" content="Copyright (C) 2000-2002 Krypta.cz - <a href=mailto:michal.till@krypta.cz>Michal Till</a> a <a href=mailto:jan.kulveit@krypta.cz>Jan Kulveit</a>.">
  16.  <!-- No caching for this document.Trying to write to art165.html. ?> -->
  17.  
  18.  <!-- output.php -->
  19.  
  20.   <script language="JavaScript">
  21.   <!-- 
  22. //    if(top != self) { window.top.location.href=document.location; }  -->
  23.   </script>
  24.  
  25.  
  26. <!-- NAVRCHOLU.cz -->
  27. <script language="JavaScript" type="text/javascript">
  28. <!--
  29. pxDepth = screen.pixelDepth;
  30. if (!(pxDepth > 0))
  31.     pxDepth = screen.colorDepth;
  32. if (!(pxDepth > 0))
  33.     pxDepth = 0; 
  34. document.write("<img style=\"position:absolute; top:0px; left: 0px;\" src=\"../hit.navrcholu.cz/hit@id=00039669;n=1;screenx=" + screen.width + ";screeny=" + screen.height + ";cdepth=" + pxDepth + ";ref=" + escape(top.document.referrer) + "\" width=\"1\" height=\"1\" alt=\"\">");
  35. // -->
  36. </script>
  37. <noscript>
  38. <img style="position:absolute; top:0px; left: 0px;" src="../hit.navrcholu.cz/hit@id=00039669;n=1" width="1" height="1" alt="" border="0">
  39. </noscript>
  40. <!-- NAVRCHOLU.cz - konec -->
  41.  
  42. <STYLE Type=text/css>
  43.     BODY                { font-size:110%; background-color: #ffffff; color: #000000; margin: 0px;   background-image: url(images/backgr.gif); }
  44.  
  45.  
  46.  
  47.     .Copyright        { color: #000000; }
  48.     .Copyright A    { color: #000000; }
  49. </STYLE>
  50. </head>
  51. <SCRIPT>
  52. </SCRIPT><SCRIPT Src=charts.php@version=1621></SCRIPT><SCRIPT>
  53.  // Nalezeno  1 polozek. 
  54. var SectionTitles=new Array( "The knapsack algorithm" , "    Zadßnφ" , "    Nenφ nad praktickou ukßzku" );
  55. var SectionURLs=new Array( "165" , "165#Title1" , "165#Title2" );
  56.  
  57. var BrothersNames = new Array("Asymetrickß kryptografie","Zßklady kryptografie : digitßlnφ podpis","Zßklady kryptografie : certifikace klφΦe","Zßklady kryptografie : d∙v∞ryhodnost a platnost","Zßklady kryptografie : vßÜ tajn² klφΦ","Public Key Infrastructure","The knapsack algorithm","Asymetrickß kryptografie v teorii a praxi","Vφce ne₧ dogitßlnφ podpis","Vφce ne₧ digitßlnφ podpis!","");
  58. var BrothersIDs = new Array("9","13","18","20","22","144","165","171","223","224","");
  59. //=====INFO======
  60. ItemName='Article165';
  61.  
  62. InIFrame='No';
  63. TableNum=2; 
  64. ItemID=165; 
  65. ArticleType='4'; 
  66. Action='articles'
  67. ItemTitle='The knapsack algorithm';
  68. ItemComment='The knapsack algorithm';
  69. TabName='Articles'
  70. Parent1Title='Asymetrickß kryptografie' ;
  71. Parent2Title='Kryptografie' ;
  72. Parent1ID='6' ;
  73. Parent2ID='4' ;
  74. ParentTitle='Asymetrickß kryptografie' ;
  75. AuthorName='Michal Till' ;
  76. AuthorDesc='' ;
  77. AuthorEMail='Michal.Till_40Seznam.cz' ;
  78. AuthorID='1' ;
  79. ItemDate='18.3.2002';
  80. Views='284' ;
  81. Average='2.40' ;
  82. Grade='2.4' ;
  83. NumVotes='5' ;
  84. SourceName='' ;
  85. SourceURL='' ;
  86. SourceLink='' ;
  87. Ref1URL='' ;
  88. Ref2URL='' ;
  89. Ref3URL='' ;
  90. Ref4URL='' ;
  91. Ref5URL='' ;
  92. Ref1Link='' ;
  93. Ref2Link='' ;
  94. Ref3Link='' ;
  95. Ref4Link='' ;
  96. Ref5Link='' ;
  97. Ref1Desc='' ;
  98. Ref2Desc='' ;
  99. Ref3Desc='' ;
  100. Ref4Desc='' ;
  101. Ref5Desc='' ;
  102. Possible=1 ;
  103. Answer1='' ;
  104. Answer2='' ;
  105. Answer3='' ;
  106. Answer4='' ;
  107. Answer5='' ;
  108. Num1='';
  109. Num2='';
  110. Num3='';
  111. Num4='';
  112. Num5='';
  113. Type= ''; //def
  114. WebName='Krypta.cz';
  115. //====ENDINFO======
  116.  
  117. </SCRIPT>
  118.  
  119. <BODY>
  120. </SCRIPT>
  121. <SCRIPT Language=JavaScript Src="server/startfeatures.php@Rand=ddd "> </SCRIPT><SCRIPT Language=JavaScript Src="server/features.php"> </SCRIPT><!-- Rozdeleni na sloupce -->
  122.  
  123. <TABLE cellspacing="0" cellpadding="0" border="0" width="100%">
  124. <tr>
  125.  
  126. <!-- Levy sloupec -->
  127.  
  128.  
  129.  
  130. <td  width="161" align="center" valign="top">
  131.  
  132. <img src=space.gif height=1 width=161>
  133. <SCRIPT SRC=server/left_js.php@version=1621></SCRIPT></td>
  134.  
  135. <!-- /Levy sloupec -->
  136.  
  137. <!-- Mezera 1-->
  138. <td width=13 bgcolor="#006792" ><img src="images/spacer.gif" width="13" height="1" border="0" alt=""></td>
  139. <!-- /Mezera 1-->
  140.  
  141. <!-- Mezera 2 -->
  142. <td width=1 bgcolor=#1063A5><img src="images/spacer.gif" width="1" height="1" border="0" alt=""></td>
  143. <!-- /Mezera 2-->
  144.  
  145. <!-- Mezera 3 -->
  146. <td width=10><img src="images/spacer.gif" width="10" height="1" border="0" alt=""></td>
  147. <!-- /Mezera 3-->
  148.  
  149.  
  150. <!-- Prostredni sloupec -->
  151. <td align="center" valign="top">
  152.  
  153. <!-- Hlavicka -->
  154. <!-- Horni lista s reklamou -->
  155.  
  156. <TABLE cellspacing="0" cellpadding="0" border="0" width="100%" class="hrlista">
  157. <tr>
  158.  
  159. <!-- Logo-->
  160. <td VAlign=Top>
  161. <a href="default.htm"><img src="images/logo.gif"  style="z-index:100;" vspace=0 cwidth="222" cheight="48" border="0" alt="Krypta.cz - Magazφn o informaΦnφ bezpeΦnosti"></a>
  162. </td>
  163. <!-- /Logo -->
  164.  
  165. <td align=center>
  166. </td></tr></table>
  167. <!-- /Horni lista s reklamou-->
  168. <!-- /Hlavicka -->
  169.  
  170. <TABLE Width=100% Border=0><TD><SCRIPT>
  171. </SCRIPT><SCRIPT>
  172. ArticleHead('The knapsack algorithm', 'Michal Till', 'Michal.Till_40Seznam.cz', '18.3.2002', '05:08:05', 'Popis');
  173. Intro('Tzv. batohov² algoritmus (zalo₧en na batohovΘm problΘmu) je jeden z prvnφch pokus∙ jak se vyrovnat s hlavnφ nev²hodou symetrickΘ kryptografie û s nutnostφ bezpeΦnΘho p°enosu Üifrovacφho klφΦe p°edtφm, ne₧ se vlastnφ Üifra pou₧ije. MatematickΘ schΘma, na kterΘm systΘm stojφ, pat°φ do kategorie tzv. NP-complete (non-polynomial, tedy kompletn∞ nepolynomißlnφch) problΘm∙. ╪eÜenφ takov²chto ·loh nenφ zatφm znßmΘ v polynomißlnφm, n²br₧ pouze v exponencißlnφm Φase. VÜechny takovΘto problΘmy jsou na sebe navzßjem p°evoditelnΘ. Pokrok v °eÜenφ jednoho z nich se tedy promφtne na vÜech ostatnφch.');
  174. ArticleBanner_smallres('margin-bottom:10px;margin-top:-3px;');
  175. </SCRIPT>
  176. <DIV Class=Article><SCRIPT>
  177. AuthorData();
  178. if (Type != 'Pure') if ((ArticleType!=19) && (ArticleType!=20)) ShowSections();
  179. ArticleBanner_bigres('margin-top:12px;margin-bottom:-3px;');
  180. </SCRIPT><FONT Size=2><DIV Align=Justify Class=Paragraph>
  181.     V∞tÜina Üifrovacφch algoritm∙, kterΘ jsou na batohu zalo₧eny, byly ovÜem ji₧ dßvno ·pln∞ rozbity, nicmΘn∞ dodnes, nehled∞ na jejich zajφmavost, velmi dob°e demonstrujφ principy a zßkladnφ algebru asymetrickΘ kryptografie.
  182. </DIV></FONT></b></i>
  183. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  184.     Samotn² problΘm ale vy°eÜen nebyl. Zßdrhel je toti₧ v tom, ₧e navr₧enΘ kryptografickΘ schΘma neodpovφdalo matematickΘmu problΘmu ·pln∞. Privßtnφ klφΦ, jak se po zkoumßnφ zjistilo, je mo₧nΘ mo₧nΘ vypoΦφtat z klφΦe ve°ejnΘho i bez °eÜenφ p°φsluÜnΘ obtφ₧nΘ ·lohy, tj. batohu v danΘ konfiguraci (viz dßle). ProblΘm °eÜenφ batohu nebyl prost∞ s problΘmem v²poΦtu tajnΘho klφΦe ekvivalentnφ. Kdyby Üifrovacφ algoritmus byl p°esnou logickou kopiφ batohu, byl by dodnes bezpeΦn² minimßln∞ tak bezpeΦn², jak t∞₧kΘ je °eÜenφ jakΘhokoliv NP-complete problΘmu. 
  185. </DIV></FONT></b></i>
  186. <A Name="Title1"><FONT Size=3><DIV Class=Headline>Zadßnφ</DIV></font>
  187. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  188.     Batohov² problΘm mß nßsledujφcφ jednoduchΘ zadßnφ. Mßme k dispozici mno₧inu v∞cφ, ka₧dou o urΦitΘ kladnΘ hmotnosti. NaÜφm ·kolem je vybrat takovou podmno₧inu, aby jejφ celkovß "hmotnost" byla rovna n∞jakΘ hodnot∞ <SPAN Class=CODE>w</SPAN>. 
  189. </DIV></FONT></b></i>
  190. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  191.     Jak se ·loha m∙₧e jevit na prvnφ pohled jednoduchß, ve skuteΦnosti Φas pot°ebn² k °eÜenφ nar∙stß exponencißln∞ s celkov²m poΦtem p°edm∞t∙. Nenφ znßm postup, jak dojφt k ·sp∞ÜnΘmu °eÜenφ v polynomißlnφm Φase a mnoho lidφ v∞°φ, ₧e v n∞m na deterministickΘm Turningov∞ stroji nenφ °eÜitelnß. To je velmi dobr² model dneÜnφch poΦφtaΦ∙ (na nedeterministickΘm stroji ·loha °eÜitelnß je, nicmΘn∞ v tomto p°φpad∞ se p°ipouÜtφ mo₧nost paralelnφho v²poΦtu "v∞tvφ" backtrackingu). 
  192. </DIV></FONT></b></i>
  193. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  194.     NicmΘn∞ existujφ batohy, jejich₧ °eÜenφ je trivißlnφ. Je to v p°φpad∞, ₧e hmotnost ka₧dΘ polo₧ky nenφ ni₧Üφ, ne₧ hmotnost polo₧ek p°edchßzejφcφch dohromady. Takov²to batoh naz²vßme superrostoucφ (superincreasing).
  195. </DIV></FONT></b></i>
  196. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  197.     P°i v²poΦtu °eÜenφ budeme postupovat nßsledovn∞. Nejprve vezmeme nejt∞₧Üφ objekt. Pokud je jeho hmotnost menÜφ ne₧ celkovß po₧adovanß hmotnost <SPAN Class=CODE>w</SPAN>, za°adφme jej do ôpou₧it²chö v∞cφ a od <SPAN Class=CODE>w</SPAN> odeΦteme jeho hmotnost. Pokud ne, nechßme jej b²t a pokraΦujeme dßle. Pokud jsme po prozkouÜenφ vÜech v∞cφ nedosßhli cht∞nΘ hmotnosti (tj. kdy₧ <SPAN Class=CODE>w != 0</SPAN>), nemß ·loha s tφmto zadßnφm °eÜenφ.
  198. </DIV></FONT></b></i>
  199. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  200.     Mßme tedy k dispozici lehkou a t∞₧kou variantu problΘmu. K jeho p°etvo°enφ na Üifrovacφ algoritmus s ve°ejn²m (a soukrom²m) klφΦem pot°ebujeme jeÜt∞ dv∞ v∞ci. Jednak musφme vymyslet, jak budeme vlastnφ data Üifrovat (tj. jak bude vypadat matematickß funkce, kterß p°evßdφ s ·Φastφ klφΦe otev°en² text na text zaÜifrovan²) a jak budeme konvertovat batoh "lehk²" na batoh "t∞₧k²". Merkle a Hellman navrhli nßsledujφcφ metodu.
  201. </DIV></FONT></b></i>
  202. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  203.     Konverze z tajnΘho klφΦe, tj. ze superrostoucφho batohu, na klφΦ ve°ejn², tj. na normßlnφ obtφ₧n∞ °eÜiteln² batoh) bude probφhat nßsledujφcφm zp∙sobem. Zvolφme modulo <SPAN Class=CODE>m</SPAN>, co₧ bude Φφslo v∞tÜφ ne₧ celkov² souΦet hodnot ("hmotnost") <SPAN Class=CODE>w</SPAN>.
  204. </DIV></FONT></b></i>
  205. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  206.     Dßle zvolφme druhΘ Φφslo <SPAN Class=CODE>n</SPAN> tak, ₧e <SPAN Class=CODE>(n,m)=1</SPAN>, jin²mi slovy v a m nemajφ ₧ßdnΘho spoleΦnΘho d∞litele, jsou nesoud∞lnß (v anglickΘ literatu°e takΘ Φasto oznaΦovßno jako relative prime).
  207. Vynßsobφme ka₧dou hodnotu prvku mno₧iny Φφslem <SPAN Class=CODE>n (mod m)</SPAN>. N∞kterΘ zdroje na tomto mφst∞ jeÜt∞ udßvajφ vhodnost (pseudo-) nßhodnΘ permutace v²sledku, kterß hraje d∙le₧itou roli p°i luÜt∞nφ tΘto Üifry. Zde jsem ji pro zjednoduÜenφ vypustil.
  208. </DIV></FONT></b></i>
  209. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  210.     K zaÜifrovßnφ jednoho bitu pou₧ijeme 1, pokud jsme p°φsluÜn² objekt do batohu zahrnuli a 0 pokud ne. 
  211. </DIV></FONT></b></i>
  212. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  213.     P°φjemce vynßsobφ hodnoty zaÜifrovanΘho textu <SPAN Class=CODE>z<SUP>-1</SUP> mod m</SPAN>, co₧ p°edstavuje inverzi n mod m a pou₧ije vznikl² superrostoucφ batoh k deÜifrovßnφ zprßvy. Pokud tedy platφ, ₧e <SPAN Class=CODE>a*z</SPAN> je kongruentnφ s <SPAN Class=CODE>1 (mod m)</SPAN>, snadno ukß₧eme, ₧e <SPAN Class=CODE>(a*n mod m)*z mod m = a</SPAN>. Tohoto vztahu budeme vyu₧φvat p°i vzßjemnΘm p°epoΦφtßvßnφ (tj. vlastn∞ Üifrovßnφ a deÜifrovßnφ) z normßlnφho batohu do superrostoucφho a naopak.
  214. </DIV></FONT></b></i>
  215. <A Name="Title2"><FONT Size=3><DIV Class=Headline>Nenφ nad praktickou ukßzku</DIV></font>
  216. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  217.     Nßzorn² p°φklad je v₧dy nad vÜφ teorii, uva₧me tedy batoh <SPAN Class=CODE>[3,4,9,19,38,77]</SPAN>. Zvolφme modul <SPAN Class=CODE>m</SPAN>, v∞tÜφ ne₧ souΦet vÜech polo₧ek batohu, nap°φklad 155. Jako s <SPAN Class=CODE>m</SPAN> nesoud∞lnΘ <SPAN Class=CODE>n</SPAN> zvolφme t°eba 27. Nynφ vypoΦφtßme hodnoty obtφ₧n∞ °eÜitelnΘho batohu.
  218. </DIV></FONT></b></i>
  219. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  220.     <SPAN Class=CODE>
  221. 3*27 mod 155 = 81<br>
  222. 4*27 mod 155 = 108<br>
  223. 9*27 mod 155 = 88<br>
  224. 19*27 mod 155 = 48<br>
  225. 38*27 mod 155 = 96<br>
  226. 77*27 mod 155 = 64<br>
  227. </SPAN>
  228. </DIV></FONT></b></i>
  229. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  230.     Budeme tedy Üifrovat s ve°ejn²m klφΦem <SPAN Class=CODE>[81,108,88,48,96,64]</SPAN>. Zprßvu <SPAN Class=CODE>100110001101010001</SPAN> si nejprve rozd∞lφme do jednotliv²ch blok∙, v tomto p°φpad∞ po Üesti bitech (naÜe sada "v∞cφ" mß Üest hodnot).
  231. </DIV></FONT></b></i>
  232. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  233.     <SPAN Class=CODE>100110 001101 010001</SPAN>
  234. </DIV></FONT></b></i>
  235. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  236.     Podφvßme-li se na prvnφ blok, nalezneme hodnoty 1 na prvnφm, ΦtvrtΘm a pßtΘm mφst∞. To odpovφdß Φφsl∙m 81, 48 a 96 ve ve°ejnΘm batohu, zaÜifrovan² text tedy bude 81+48+96=225. Obdobn∞
  237. </DIV></FONT></b></i>
  238. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  239.     <SPAN Class=CODE>001101</SPAN> odpovφdß 88+48+64=200<br>
  240. a<br>
  241. <SPAN Class=CODE>010001</SPAN> odpovφdß 108+64=172.<br>
  242. </DIV></FONT></b></i>
  243. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  244.     V²sledn² zaÜifrovan² text je tedy <SPAN Class=CODE>[255,200,172]</SPAN>. Pro deÜifrovßnφ musφme znßt inverzi <SPAN Class=CODE>n mod m</SPAN>. Jak u₧ bylo °eΦeno, je to takovß hodnota <SPAN Class=CODE>n*z</SPAN>, pro kterou platφ <SPAN Class=CODE>n*z = = 1  (mod m)</SPAN> (= = zde p°edstavuje kongruenci). S pomocφ tohoto Φφsla jednoduÜe pro ka₧d² blok spoΦφtßme <SPAN Class=CODE>b*z (mod m)</SPAN>. V naÜem p°φpad∞ <SPAN Class=CODE>z=23</SPAN>.
  245. </DIV></FONT></b></i>
  246. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  247.     <SPAN Class=CODE>
  248. 225*23 mod 155 = 60  = 3+19+38 = 100110<br>
  249. 200*23 mod 155 = 105 = 9+19+77 = 001101<br>
  250. 172*23 mod 155 = 81  = 4+77    = 010001<br>
  251. </SPAN>
  252. </DIV></FONT></b></i>
  253. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  254.     Dostali jsme v²slednou hodnotu <SPAN Class=CODE>100110001101010001</SPAN>, kterß odpovφdß p∙vodnφ zprßv∞.
  255. </DIV></FONT></b></i>
  256. <FONT Size=2><DIV Align=Justify Class=Paragraph>
  257.     Pozd∞ji bylo batohovΘ schΘma äobohacenoô o mo₧nost digißlnφho podpisu dokument∙, obdobn∞ jak je tomu mo₧nΘ  jako nap°φklad u algoritmu RSA. O prolomenφ tohoto schΘmatu si m∙₧ete p°eΦφst nap°φklad na strßnce <a href=../www.cs.wm.edu/~hallyn/public_key/break.html> http://www.cs.wm.edu/~hallyn/public_key/break.html</a> (z tohoto webu byl p°evzat p°φklad). Pozd∞ji byl tento algoritmus zkouÜen jako iteraΦnφ. ╪φkß se, ₧e se Ralph Merkle vsadil o tisφc dolar∙, ₧e nikdo nerozluÜtφ zprßvu 40ti-nßsobn∞ zaÜifrovanou. Prohrßl. 
  258. </DIV></FONT></b></i>
  259. </DIV>
  260. <SCRIPT>
  261. TextEnd('')
  262. </SCRIPT><OL Class=None Type=Disc></OL><SCRIPT>
  263. nie('<br>');AdditionalTablesBegin();
  264.  
  265. CommentsBegin('The knapsack algorithm',0);
  266. NoComments()
  267. CommentsEnd();
  268. </SCRIPT><SCRIPT>
  269. ArticleEnd()
  270. </SCRIPT></TABLE>
  271. <!-- /Prostredni sloupec -->
  272.  
  273.  
  274. <!-- Mezera 3 -->
  275.  
  276. <td width=5><img src="images/spacer.gif" width="5" height="1" border="0" alt=""></td>
  277. <!-- /Mezera 3-->
  278.  
  279. <!-- Mezera 2 -->
  280. <td width=1 bgcolor=#1063A5><img src="images/spacer.gif" width="1" height="1" border="0" alt=""></td>
  281. <!-- /Mezera 2-->
  282.  
  283. <!-- Mezera 1-->
  284. <td width=13 bgcolor="#006792" ><img src="images/spacer.gif" width="13" height="1" border="0" alt=""></td>
  285. <!-- /Mezera 1-->
  286.  
  287. <!-- Pravy sloupec -->
  288. <td bgcolor=#006792 width="0" align="center" valign="top">
  289. <SCRIPT SRC=server/right_js.php@version=1621></SCRIPT><br>
  290. </td>
  291. <!-- /Pravy sloupec -->
  292.  
  293.  
  294. </tr>
  295.  
  296. <!-- Bilo -->
  297. <tr>
  298. <td bgcolor=#000000><img src=space.gif height=1 width=1></td>
  299. <td bgcolor=#000000></td>
  300. <td bgcolor=#000000></td>
  301. <td bgcolor=#FFFFFF></td>
  302. <td bgcolor=#FFFFFF></td>
  303. <td bgcolor=#FFFFFF></td>
  304. <td colspan=5 bgcolor=#000000></td>
  305. </tr>
  306. <tr  bgcolor=#FFFFFF>
  307. <td><img src=space.gif height=20 width=1></td>
  308. <td></td>
  309. <td></td>
  310. <td></td>
  311. <td></td>
  312. <td></td>
  313. <td colspan=5></td>
  314. </tr>
  315. <!-- /Bilo-->
  316.  
  317.  
  318.  
  319. </table>
  320. <!-- /Rozdeleni na sloupce -->
  321.  
  322. <SCRIPT>
  323.     Exec(ToExecute);
  324.     ToExecute="";
  325. </SCRIPT>
  326.  
  327. <!-- Dolni lista -->
  328.  
  329.  
  330. <!-- Paticka -->
  331. <TABLE cellspacing="0" cellpadding="0" border="0" width="100%" bgcolor=#ffffff>
  332. <TR><td colspan=5 align="center" bgcolor=#000000><img src=space.gif height=1 width=1></td></TR>
  333. <TR bgcolor=#f0f0f0>
  334. <td align="center">
  335. <IMG Src=images/logo2.gif hspace=10 vspace=5>
  336. </td>
  337. <td>
  338. <DIV Style="margin-top:4px;margin-bottom:4px;" Class=Copyright><FONT Face=Arial Size=1>
  339.  
  340. <b><u>Krypta.cz</u></b> -  Magazφn o informaΦnφ bezpeΦnosti.<br>
  341. Copyright (C) 2000-2002 Krypta.cz - <a href=mailto:michal.till@krypta.cz>Michal Till</a> a <a href=mailto:jan.kulveit@krypta.cz>Jan Kulveit</a>. VÜechna prßva vyhrazena. <br>
  342. Tento server dodr₧uje prßvnφ p°edpisy o ochran∞ osobnφch ·daj∙, vΦetn∞ standardu P3P (<a href=server/policy.xml>policy</a>). </FONT></DIV>
  343. </td>
  344. <td>
  345. <IMG Src=geronimo.gif hspace=10 vspace=5>
  346. </td>
  347. <td>
  348. <DIV Style="margin-top:4px;margin-bottom:4px;" Class=Copyright><FONT Face=Arial Size=1>
  349. RedakΦnφ systΘm Geronimo<br>
  350. Copyright (C) 2001-2002 <a href=mailto:michal.till@krypta.cz>Michal Till</a>
  351. </FONT></DIV>
  352. </td>
  353. </td></tr></table>
  354. <!-- Paticka -->
  355.  
  356. <!-- /Dolni lista -->
  357.  
  358. </body>
  359. </html>