Intro('Takov²to jednoduch² algoritmus b²vß nejΦast∞ji aplikovßn v Φist∞ amatΘrsk²ch programech, kde je po₧adavek bezpeΦnosti dat Φasto pouze formalitou.');
Nejd°φve si musφme ujasnit, co to vlastn∞ ten XOR je. XOR je jedna z logick²ch operacφ. Stejn∞ jako nap°φklad sΦφtßnφ je operacφ s Φφsly, XOR a dalÜφ jsou operace s logick²mi hodnotami TRUE (Pravda) a FALSE (nepravda), symbolicky 1 a 0 (v tomto po°adφ). "PoΦφtßnφ" se XORem je definovßno nßsledovn∞:
0 xor 0 = 0, 1 xor 1 = 0, 1 xor 0 = 1 xor 0 = 1 , tedy slovn∞ vyjßd°eno v²sledek je TRUE prßv∞ kdy₧ prßv∞ jeden z "Φφsel" je TRUE. D∙le₧itß v∞c je, ₧e platφ
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
(a xor b) xor b = a,
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
tedy Φφslo dvakrßt zaxorovanΘ stejnou hodnotou dß zp∞t p∙vodnφ hodnotu. Stejn∞ dob°e jako m∙₧eme xorovat nuly a jedniΦky, m∙₧eme mezi sebou xorovat jakßkoliv Φφsla mezi sebou : v²sledkem prost∞ bude Φφslo, kterΘ bude mφt na n-tΘm mφst∞ Φφslici zφskanou jako xor n-tΘ Φφslice z prvnφho Φφsla a n-tΘ Φφslice z druhΘho mφsta, vÜe samoz°ejm∞ v dvojkovΘ soustav∞ (tj. vÜechno je vyjßd°eno pomocφ nul a jedniΦek). MenÜφ Φφslo p°itom samoz°ejm∞ doplnφme zleva nulami, abychom m∞li co xorovat.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
V²Üe uveden² vztah mß za nßsledek p°φjemnou vlastnost : nenφ ₧ßdn² rozdφl mezi algoritmem Üifrovacφm a deÜifrovacφm, oba vezmou zdroj a zaxorujou ho heslem. Nebudeme samoz°ejm∞ cel² soubor xorovat jednou hodnotou (to by bylo moc jednoduchΘ deÜifrovat), vytvo°φme si heslo kterΘ budeme opakovat, tedy nap°φklad pokud mßme t°φmφstnΘ heslo zaxorujeme prvnφ znak textu prvnφm znakem hesla, druh² druh²m t°etφ t°etφm, Φtvrt² znak textu op∞t prvnφm znakem hesla, pßt² druh²m, a tak dßle postupn∞ vÜechny znaky.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Pro laika se zdß vÜechno naprosto v po°ßdku a bezpeΦn∞ zaÜifrovanΘ. Äe je tato Üifra d∞ravß jak ementßl a tφm pßdem nepou₧itelnß, si ukß₧eme. StaΦφ toti₧, abychom znali alespo≥ zlomek originßlu a s pomocφ poΦφtaΦe mßme vyhrßno. M∙₧e to b²t cokoliv: oslovenφ podpis, WWW Φi e-mailovß adresa, jmΘno, telefonnφ Φφslo, cokoliv z toho. M∙₧ou nastat dv∞ mo₧nosti: bu∩ vφme p°esn∞ kde se toto slovo nachßzφ nebo ne. V prvnφm p°φpad∞ mßme naprosto vyhrßno, budeme postupovat nßsledovn∞: ze zaÜifrovanΘ zprßvy izolujeme ty bity, o kter²ch vφm, co v originßle vyjad°ujφ. Nynφ vy°eÜφme rovnici a xor x = b,
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
kde a je znßmß Φßst originßlu, b je kus zaÜifrovanΘho textu, my hledßme x, co₧ je heslo.
Äe x = a xor b je jasnΘ jednak z v²Üe uvedenΘ tabulky, pop°φpad∞ si to m∙₧eme ov∞°it.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Mß platit a xor (a xor b) = b.
Jeliko₧ platφ a xor b = b xor a platφ takΘ
(a xor b) xor a = b, tedy (b xor a) xor a = b a podle v²Üe uvedenΘho vztahu b = b pro jakßkoliv a,b. Pokud znßme dostateΦn² poΦet bit∙ originßlu, mßme heslo ·plnΘ. Pokud jsme nßhodou znali mΘn∞ bit∙ ne₧ bylo heslo (co₧ poznßme nejlΘpe tak, ₧e deÜifrovanß zprßva nedßvß smysl), musφme se pokusit bu∩ uhodnout zbytek hesla, nebo domyslet si z deÜifrovanΘ Φßsti zprßvy jeÜt∞ kus a op∞t pou₧φt p°edchßzejφcφ zp∙sob. Tφm mßme spoΦφtanΘ heslo a m∙₧eme deÜifrovat celou zprßvu.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Pokud bychom nßhodou nev∞d∞li, kde p°esn∞ znßmΘ slovo je (pouze vφme, ₧e tam n∞kde je), nenφ nic snazÜφho, ne₧ postupn∞ p°edpoklßdat ₧e se toto slovo vyskytuje na vÜech mφstech zprßvy. Zabere nßm to sice daleko vφce Φasu, ovÜem d∙le₧itΘ je, ₧e Φasovß nßroΦnost roste lineßrn∞ a ne exponencißln∞. A navφc, od Φeho mßme poΦφtaΦ, aby vÜechny mo₧nosti b∞hem sekundy vyzkouÜel.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
JeÜt∞ si na chvφli p°edstavte, ₧e mßte dva dokumenty, zaÜifrovanΘ touto Üifrou se stejn²m heslem, kterΘ neznßte. Dßle vφte, ₧e na urΦitΘm mφst∞ v jednom i v druhΘm textu jsou data urΦitΘ konstantnφ dΘlky. Nap°φklad vφte, ₧e na 5. a₧ 10. bytu textu jsou dv∞ r∙znß jmΘna. P°esto₧e tyto jmΘna neznßte, m∙₧ete je mezi sebou prohodit, k velikΘ nelibosti adresßta. Jeliko₧ jsou oba na stejnΘm mφst∞ zaÜifrovanß stejn²m heslem, adresßt v∙bec nic nepoznß. Navφc tyto dv∞ slova nemusφ b²t ani ve dvou r∙zn²ch zprßvßch, m∙₧ou b²t klidn∞ v jednΘ, Φφm₧ je navφc zaruΦeno, ₧e jsou zaÜifrovanΘ stejn²m heslem. Nem∙₧ou b²t sice najednou na stejnΘm mφst∞, ale to v∙bec nevadφ, staΦφ kdy₧ n-t² znak (Φφslice) prvnφho a n-t² druhΘho jsou zaxorovßny stejn²m Φφslem. Pokud by se nap°φklad jednalo o bankovnφ transakci, kde by byl uveden zdrojov² a cφlov² ·Φet, mohlo by pou₧itφ tΘto zdßnliv∞ bezpeΦnΘ Üifry zp∙sobit bance velmi velkΘ ztrßty.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
</DIV></FONT></b></i>
</DIV>
<SCRIPT>
TextEnd('')
</SCRIPT><OL Class=None Type=Disc></OL><SCRIPT>
nie('<br>');AdditionalTablesBegin();
CommentsBegin('XOR?',5);
Comment('1',' <IMG Src=images/sub.gif valign=top> XOR anebo CΘzar ? Jsou ob∞ tyto Üifry stejn∞ ÜpatnΘ ?','Petr Kurka','11');