OBSAH   ZOZNAM POMÔCOK


Francúzsky spisovateľ Jules Verne žil v rokoch 1828 až 1905 a napísal vyše 60 dobrodružných románov, ktoré si obľúbilo už mnoho generácií nielen mládeže, ale aj dospelých. Verneho knihy sú už vyše sto rokov stále dobre známe, obľúbené, vydávané a čítané, stali sa predmetom zberateľstva, priaznivci jeho románov sa združujú do klubov. Verneho diela sú aj na internete, napríklad:
   https://www.digibooks.sk/show.php?id=233
   http://ld.johanesville.net/verne

Príťažlivej tajomnosti šifrovania a tajných zpráv, ktoré sú detstvu a mladosti vlastné, neodolal ani Jules Verne.
Šifrovanie priamo a veľmi konkrétne použil vo svojich románoch:
   Matej Šándor nový gróf Monte Christo (1885) - je tam mriežková (transpozičná) šifra
   800 míľ po Amazonke čiže Tajomstvo pralesa čiže Jangada (1881) - je tam substitučná šifra.

Verne ukázal spôsoby šifrovania, ktoré boli v jeho dobe známe práve tak, ako aj spôsoby "prelomenia" týchto šifier, ktoré vo svojich románoch tiež ukazuje.
Spôsoby šifrovania aj lúštenia šifier, ktoré Verne popisuje, sú verejne známe vyše 100 rokov, teda nie sú to žiadne tajnosti. Nie je to ani žiadna veda, je to jednoduché, len sa nepomýliť. Pozrime sa, ako Jules Verne šifroval pred vyše sto rokmi, vyskúšajme si to v tejto interaktívnej besede. Stačí nám papier, tužka, a hlavne: rozum do hrsti - a ak to zvládneme, potom môžeme porozmýšľať, ako si to zjednodušiť či zdokonaliť.

Tieto študijné texty a pomôcky sú podporou a doplnkom k interaktívnym besedám "Šifrujeme s Julesom Vernom" uskutočneným vo verejnej knižnici v Trenčíne a v Gymnáziu v Dubnici nad Váhom v roku 2016; neskôr boli rozširované.


OBSAH:
   
Úvod
   Substitúcia
      Podstata odolnosti substitučného šifrovania
   Transpozícia
   Kľúč
   Charakter zprávy
   Heslo
   Spoľahlivosť a programy
     Konkrétny a praktický príklad šifrovania substitúciou

   POKROČILEJŠIE ŠIFROVANIE
   NÁROČNEJŠIE ŠIFROVANIE
   KOMPLEXNEJŠIE ŠIFROVANIE
   KOMFORTNEJŠIE ŠIFROVANIE
      Odkaz@.html
   VYTVÁRANIE KĽÚČA
      Kombinovanie kľúčov
      Kombinovanie opakovaných kľúčov
      Voľba dĺžky opakovaných kľúčov pri ich kombinovaní
      Konštruovanie kľúčov
      Postupné pripočítavanie
      Samotná dĺžka kľúča nepostačuje
      Násobenie v tvorbe kľúča
      Spojenie programu so zprávou
   PRAKTICKÉ ŠIFROVANIE DOKUMENTOV

   BLOKOVÉ ŠIFROVANIE
      Transformácia reťazca (hash)
      Štandartizovaná šifra AES-256

   Ako šifroval odboj 1940
   Úvaha


ZOZNAM POMÔCOK: zobraziť zoznam
Programy na šifrovanie:
   01-Šifra Beaufort (1) - 26 znakov = len medzinárodná abeceda
   02-Šifra Beaufort (2) - 36 znakov = mezinárodná abeceda + číslice
   02V-Šifra Vigenere - 26 znakov = len medzinárodná abeceda; zašifrovanie a odšifrovanie sa robí každé samostatným postupom
   03-Šifra Beaufort (3) - s vlastnou sadou znakov (predvolená a...z-0...9)
   03p-Šifra Beaufort (3) s pevnou sadou znakov: a...z_0...9
   06-Modulárna príprava kľúčov a šifra Beaufort (3) - úprava a kombinácia 3 kľúčov v rôznych moduloch; šifrovanie Beaufort (3) s pevnou sadou znakov: a0b1c2d3e4f5g6h7i8j9k_lmnopqrstuvwxyz
   11-Komfortnejšia príprava kľúča a šifra Beaufort (3) - výber znakov (z predvoleného (ale pozmeniteľného) reťazca 1.000.000 znakov do Kľúča 1, jeho kombinácia s Kľúčom 2 a s Kľúčom 3; šifrovanie Beaufort (3) s pevnou sadou znakov: ab0cd1ef2gh3ij4kl5mn6op7qr8st9uv_wxyz, jediné okno pre text otvorený aj zašifrovaný
   Odkaz@ - veľmi jednoduchá stránka: zapísať dohodnutý kľúč, stlačiť tlačidlo a čítať rozšifrovaný odkaz
   14-Kombinácia kľúčov - program len pre prípravu veľmi dlhého výsledného kľúča kombináciou až deviatich základných kľúčov ich spočítaním postupne po jednotlivých písmenách a cyklovaním, k čomu sa samočinne ku každému písmenu výsledného kľúča pripočítavajú všetky(!) predošlé (už vytvorené) písmená výsledného kľúča; šifrovanie tu nie je (na to je vyššie dostatok iných programov), avšak s výhodou sa môže použiť aj na tvorbu dlhých nezapamätateľných hesiel pomocou niekoľkých dobre zapamätateľných slov.
   16-Šifra Beaufort s mnohorakým kombinovaním až 9 kľúčov = súčet kľúčov s predlžovaním+všetky(!) predošlé písmená -> posun a skok (program JS16); dĺžka konečného kľúča sa samočinne vytvára zhodne s dĺžkou textu.
   18-Písmeno (znak) prevedie do "ALT" + číslo.
   20-Kontrolné súčty MD5 a SHA-1.
   22-šifra AES-256
   25-Plné šifrovanie bežných dokumentov (UTF-8), 5 kľúčov, posun a skok, skrývanie kľúčov.


Programy pomocné:
    Frekvenčná analýza
    08-Odstránenie diakritiky (slovenskej aj českej)
    10-Odstránenie diakritiky (Sk+Cz) + interpunkcie + medzier
    09-Text odzadu
   21-Písanie azbukou
   24-Výpis kalendára 2018

Obrázky:
   Šifrovacia tabuľka so sadou riadkov, v každom tá riadku je tá istá abeceda, len inak posunutá.
   Šifrovacia tabuľka Porta na jednoduchšie, ale menej odolné šifrovanie.
   Pomôcka pre návrh šifrovacej mriežky
   Šifrovacia mriežka - príklad vyhotovenia
   Šifrovací kotúč

Reťazce znakov:
   Chaos(01) z 26 znakov medzinárodnej abecedy spolu 10.000 znakov
   Chaos(02) z 26 znakov medzinárodnej abecedy spolu 11.111 znakov
   Chaos(03) z 26 znakov medzinárodnej abecedy spolu 21.249 znakov
   Chaos(04) z 26 znakov medzinárodnej abecedy spolu 25.299 znakov
   Chaos(05) z 26 znakov medzinárodnej abecedy spolu 38.496 znakov
   Chaos(06) z 26 znakov medzinárodnej abecedy spolu 120.551 znakov
   Chaos(07) z 26 znakov medzinárodnej abecedy spolu 1 033 312 znakov
   Chaos(08) "voda kalná"     reťazec nedefinovanej dĺžky (okolo 300.000 znakov)
   Chaos(09) milión znakov medzinárodnej abecedy    reťazec z milióna znakov, nie sú tam žiadne zdvojené znaky
   10 = "Trigo"     = trigramy organizované = všetky možné trigramy (skupiny troch písmen) znakov medzinárodnej abecedy, usporiadné podľa abecedy! = žiaden chaos, žiadna náhodnosť (počet písmen teda musí byť 3x(26x26x26)x3 = 158.184)
   11 = "voda pramenitá"    reťazec pozostávajúci z troch rôznych za sebou idúcich náhodne usporiadaných postupností všetkých možných trigramov (skupín troch písmen) medzinárodnej abecedy (počet písmen teda musí byť 3x(26x26x26)x3 = 158.184)
   12 = "voda prečistená"    reťazec pozostávajúci z troch rôznych za sebou idúcich náhodne usporiadaných postupností všetkých možných trigramov (skupín troch písmen) medzinárodnej abecedy, z ktorého sú vynechané všetky monotónne trigramy (skupiny troch rovnakých písmen), takže rovnaké písmená sa za sebou vyskytujú najviac dvakrát (vynechaných písmen je čo do množstva málo nad poldruha promile)
   21 = Biblia, slovensky, len text, bez členenia je to vyše 3 MB
   22 = Biblia, slovensky, len text ASCII = písmená bez dĺžňov a mäkkčeňov, ale zachované sú interpunkčné znamienka a medzery, je to vyše 3 MB
   23 = Biblia, slovensky, len znaky ASCII = písmená bez dĺžňov a mäkkčeňov, tiež bez interpunkčných znamienok a bez medzier, je to vyše 3 MB
   24 = Biblia, slovensky, znaky ASCII ale v opačnom poradí (odzadu písané), písmená bez dĺžňov a mäkkčeňov, tiež bez interpunkčných znamienok a bez medzier, je to vyše 3 MB

Príklady:
   konkrétny a praktický príklad šifrovania substitúciou

(Koniec zoznamu pomôcok)





Úvod

Táto stránka a jej pripojené aj odkazované súčasti obsahujú zábavné šifrovanie bez akýchkoľvek záruk, obsah nemusí byť v úplnosti preskúšaný (chyby sú možné), podstatou je spôsob popísaný už Julesom Vernom pred vyše sto rokmi.

Kto potrebuje teóriu, alebo históriu či prehľad rôznych druhov šifrovania, pozrie si to inde. Tu v zásade nejde o šifrovanie elektronických dát (napr. digitálnych fotografií, a pod.), ale o šifrovanie napísaných zpráv. Šifrujeme zprávu, aby bola nezrozumiteľná každému okrem určených osôb. Šifrovanie = zašifrovanie + odšifrovanie. Spôsobov šifrovania je mnoho. Tu sú použité len niektoré - čo najúčinnejšie, čo najjednoduchšie, čo najlepšie zapamätateľné a reprodukovateľné, čo najmenej náročné na pomôcky. Šifrujeme zprávu, teda najmä text.

Pre toto šifrovanie nie je potrebné pripojenie na internet.

Toto šifrovanie je symetrické (súmerné) = odšifruje sa opačným postupom ako sa zašifrovalo. (Asymetrické šifrovanie tu nie je, robí sa pomocou počítača.)
Toto šifrovanie je prúdové (nie blokové) = šifruje sa od začiatku ku koncu jeden znak za druhým bez zmeny ich poradia, každý znak samostatne.
Toto šifrovanie je vždy možné robiť ručne (papier, tužka, hlava), ale môžu (nemusia) sa použiť mechanické pomôcky, prípadne aj počítač.
Tu nejde o rozlúštenie cudzích šifier. Tu ide o dobré zašifrovanie vlastných zpráv, aby ich (ideálne) nemohli rozlúštiť nepovolaní. Použijeme to na naše skautské hry, ale aj v občianskom živote, napríklad na heslá; dnes už šifruje každý, aj gógle, tak prečo nie aj my.

Šifrujeme tak, že znaky tvoriace zprávu nahradíme inými tak, aby to nebolo čitateľné (napr. korbdpg) = substitúcia (náhrada).
Šifrujeme tiež tak, že znaky tvoriace zprávu poprehadzujeme tak, aby to nebolo čitateľné (napr. bleich = chlieb) = transpozícia (premiestnenie).
Ak sa nepoužije aj substitúcia aj transpozícia (teda ak je použitá len jedna z nich), je šifrovanie menej odolné proti (nežiadúcemu) rozlúšteniu. Toto obzvlášť platí pri použití krátkeho kľúča, a ešte viac, ak je kľúčom slovo.
Substitúcia je v popredí šifrovania a ak sa použije dlhý chaotický kľúč, niekedy býva substitúcia použitá samotná.
Na šifrovanie zprávy treba spôsob (metódu) a utajený kľúč.
Spôsob nemusí byť nutne utajený. Spôsob šifrovania obvykle nemeníme. Pre úspešné odšifrovanie je nevyhnutné použiť presne ten istý spôsob šifrovania a presne tú istú sadu znakov, ktorými bola zpráva zašifrovaná!
Kľúč musí byť utajený. Opakované použitie toho istého kľúča znižuje odolnosť šifrovania voči (nežiadúcemu) rozlúšteniu.

Nestačí prečítať si a povedať "aha, to už viem" - treba prax: opakovane zašifrovávať aj odšifrovávať. To, čo som neurobil, neviem.

Použité názvoslovie si nerobí nárok na jedinečnosť ani na rýdzo odbornú správnosť.

Pre lepšie porozumenie uveďme hneď spočiatku, že kľúč, heslo a kód sú tri rozdielne veci:
     Kľúč je utajený rad znakov (reťazec), obvykle písmen, prípadne aj číslic, ktorý sa priamo použije v procese šifrovania (=zašifrovania aj odšifrovania).
     Heslo je utajený rad znakov (reťazec), obvykle písmen a číslic, ktorým sa potvrdzuje oprávnený prístup (obvykle k službám alebo zariadeniam), obvykle sa heslo používa opakovane, ale nepoužíva sa priamo v procese šifrovania.
     Kód alebo Kódovanie je (obojstranne) jednoznačný konkrétny a neutajovaný (verejný) spôsob prevodu čísel (v dvojkovej alebo inej sústave) na znaky (a naopak: znakov na čísla), ktorý sa používa v oblasti počítačov (historicky sa používal aj v telegrafii (Morse kód), a pod.)  Kód sa v inej súvislosti rozumie tiež obsah počítačového programu (postupnosť príkazov).

Číslice sú znaky, ktorými zapisujeme čísla.
Znaková sada = sada znakov = (abeceda).




Substitúcia (náhrada znakov)
- jej slabinou je neskryté poradie znakov, z čoho pri nedodržaní tu uvedených zásad možno usudzovať na obsah až do takej miery, že (najmä ak je kľúč kratší než zpráva, použitý opakovane a netvoria ho náhodé znaky) sa šifra niekedy dá rozlúštiť. Výhodou substitúcie je, že pozmeňuje charakteristiky jazyka, najmä častosť (frekvenciu) výskytu jednotlivých písmen.
Pri substitúcii sa obvykle ako základ používa abeceda (vo všeobecnosti sada znakov), ktorá môže mať poradie znakov (písmen) obvyklé (="zrovnaná abeceda") alebo rozhádzané (obvykle podľa nejakého kľúča; zvláštnym prípadom je "reciproká abeceda" = znaky v obrátenom poradí). Tu používame len zrovnanú medzinárodnú abecedu. Pre odolnosť substitučnej šifry je oveľa dôležitejší kvalitný kľúč než poradie písmen v použitej abecede.

Podstatou substitúcie je náhrada každého jednoho znaku (písmena) iným znakom (písmenom), ale nie stále tým istým; náhradu určuje kľúč. Kľúč určuje, o koľko miest v poradí je náhradné písmeno posunuté voči pôvodnému (=aditívne šifrovanie). Môžeme to vnímať napr. ako pripočítanie (alebo odpočítanie) poradových čísel znakov. (Boli by možné aj iné operácie modulárnej aritmetiky nad poradovými číslami písmen abecedy.) Pre odolnosť substitučnej šifry nie je podstatné, čo od čoho (kľúč, text) pripočítame alebo odpočítame, ale podľa toho sa od seba odlišujú niektoré spôsoby šifrovania (Beaufort, Vigenere). Zvláštnym prípadom substitúcie je taký spôsob (Beaufort), že pre zašifrovanie aj odšifrovanie sa použije presne rovnaký postup (teda nie opačný).

Ak označíme:
   A = otvorený text (tiež "OT" alebo "T", zrozumiteľný text, vstupuje do zašifrovania)
   K = kľúč (pre zašifrovanie aj pre odšifrovanie, tiež "C")  Pozor!-nie "heslo"-to je čosi iné-pozrieť nižšie.
   Z = zašifrovaný text (tiež "V" = výsledok, výstup zo zašifrovania, teda šifrový text, tiež "ŠT")
potom princíp jednotlivých spôsobov šifrovania je:
   Beaufort: K - A = Z  (rovnaký postup na zašifrovanie aj na odšifrovanie)
   Vigenere: A + K = Z  (odšifrovanie opačným postupom: A = Z - K )
   Beaufort - varianta: A - K = Z  (odšifrovanie opačným postupom: A = Z + K )

Počítačom zašifrovať alebo odšifrovať substitúciou je možné samočinne s použitím niektorého počítačového programu, ktorý podľa zadaného kľúča posúva jednotlivé znaky otvoreného textu (t. j. písmená abecedy a prípadne použité iné znaky). Jestvuje mnoho programov na šifrovanie.
Tu nižšie sú dostupné niektoré šifrovacie programy, ktoré pre svoju činnosť potrebujú len internetový prehliadač (internet však môže byť odpojený!), teda ani nie sú závislé na operačnom systéme, sú už v svojom princípe "multiplatformné"; sú napísané v programovacom jazyku Java script a "bežia" len vo vašom počítači na (internetovej) stránke htm či html. Ešte raz zdôrazňujem: nie je potrebné pripojenie na internet, teda ak si príslušnú internetovú (htm či html) stránku stiahnete do vášho počítača (obvykle je to možné súčasným stlačením kláves "Ctrl" a "S", ponúkne sa jej uloženie - záleží na vašom použitom internetovom prehliadači).
Tieto šifrovacie programy sa líšia spôsobom šifrovania (Beaufort, Vigenere = vysvetlené vyššie) a sadou použiteľných znakov, ktorá je na začiatku uvedená; tiež je tam vysvetlená podstata použitého šifrovania a postup šifrovania spolu s použitou šifrovacou tabuľkou tak, aby použité samočinné šifrovanie bolo možné v prípade potreby urobiť aj ručne s rovnakým výsledkom.
Programy sa líšia tiež tým, že v niektorých je pre šifrovanie vložených znakov potrebné ťuknúť na tlačidlo, v iných tlačidla niet a šifrovanie prebieha priebežne hneď po vložení znakov; programy sa tiež líšia spôsobom naprogramovania, to všetko však pre použitie programu nie je podstatné.

   01-Šifra Beaufort, 26 znakov = len medzinárodná abeceda

   02-Šifra Beaufort, 36 znakov = mezinárodná abeceda + číslice

   02V-Šifra Vigenere, 26 znakov = len medzinárodná abeceda zašifrovanie a odšifrovanie sa robí každé samostatným postupom



Ručne zašifrovať alebo odšifrovať substitúciou je možné s použitím niektorej z týchto pomôcok:
   Šifrovacia tabuľka so sadou riadkov, v každom tá riadku je tá istá abeceda, len inak posunutá
   Šifrovacia tabuľka Porta na jednoduchšie, ale menej odolné šifrovanie


Podstata odolnosti substitučného šifrovania s použitím ideálne dokonalého kľúča (dlhý ako zpráva, náhodné znaky) spočíva v tom, že poskytuje ľubovoľné množstvo možností odšifrovania a teda aj variant otvoreného textu, pričom niet podkladu pre rozhodnutie, ktorá varianta je tá správna.
Ukážeme to na príkladoch nižšie; použijeme šifru Beaufort 26 znakov (K=A+Z). Ukážeme, že zašifrovaný text môže skrývať ľubovoľný text, podľa toho, aký je zvolený kľúč. Keďže nemáme kritérium, podľa ktorého by sme určili, ktorá z možností otvoreného textu je správna, uvidíme, že hlavným problémom pre "nepriateľa" nie je rozlúštiť šifru, ale z veľkého počtu možností rozlúštenia určiť tú správnu možnosť, napríklad:

Zašifrovaný text:
   aopnrvmhkubpdkgfmxlsjhakmbz
môže napríklad skrývať zprávu:
   vsetkojeprezradeneujdidousa
(ak je kľúč  vgtgbjvlzlfoukjjzbfbmpdygtz )

ale:
ten istý zašifrovaný text:
   aopnrvmhkubpdkgfmxlsjhakmbz
tiež môže ukrývať celkom inú zprávu:
   vyhralsommilionpridzapijeme
(ak je kľúč  vmwergevwgjalytudforjwitqnd )

alebo v tom istom zašifrovanom texte
môže byť ukrytá ľubovoľná iná zpráva,
ak sa použije iný kľúč...

Dokonca zašifrovaný text môže vyzerať ako otvorený:
   horelalipkahorelapodnoupana
z čoho pri použití kľúča:
   kcjxlldwbnemsbxarxrpvdibopt
dostávame celkom iný (skutočný) otvorený text:
   dostalsomdefektpridmipomoct

Z uvedeného vidíme okrem iného, že aj keď písmená kľúča trebárs nie sú dokonale náhodne vybraté, predsa to v tomto prípade "nepriateľovi" pri lúštení nepomôže, pretože nebude mať podľa čoho rozhodnúť, ktorý kľúč je ten jediný správny zo všetkých, ktorý dáva ten správny otvorený text (a ostatné možné otvorené texty nie sú tie správne).


Transpozícia (premiestnenie znakov)
sama osebe nie príliš ukrýva obsah zprávy, pretože neraz z použitých znakov, bárs poprehadzovaných, možno usúdiť na obsah zprávy, najmä z číslic.
Okrem toho málo zakrýva charakteristiky jazyka.
Transpozícia sa obvykle robí pomocou tabuľky zostavenej na základe dohodnutého hesla.

Transpozíciu možno urobiť aj šifrovacou mriežkou.
   Pomôcka pre návrh šifrovacej mriežky je tu.
   Šifrovacia mriežka - príklad vyhotovenia mriežky 6x6 - jeden štvorček je pre jeden znak; bledosivé okraje dookola v šírke jednoho štvorčeka sú použité iba pre lepšiu mechanickú pevnosť papierovej mriežky a nie sú podmienkou; bodka hore je pomôcka pre orientáciu mriežky, lebo mriežka sa otáča postupne do 4 polôh. Mriežku možno použiť dvomi spôsobmi: buď vpisovaním, alebo čítaním písmen.


Kľúč
Kľúč musí byť utajený. Opakované použitie toho istého kľúča znižuje odolnosť šifrovania voči (nežiadúcemu) rozlúšteniu. Najmä na kľúč použitý pri substitúcii sú vysoké nároky:
- kľúč nesmie byť kratší než zpráva
- poradie znakov kľúča musí byť úplne náhodné (nepredvídateľné) z čoho vyplýva, že aj početnosť výskytu jednotlivých znakov v kľúči bude rovnaká, a nepriamo tiež, že sada znakov použitých v kľúči musí zodpovedať spôsobu šifrovania a teda aj znakovej sade otvoreného textu (obvykle to znamená, že obidve sady sú zhodné)
- kľúč musí byť utajený všetkým okrem oprávnených používateľov
- kľúč musí byť oprávneným používateľom k dispozícii len na čas, kedy s ním pracujú - to znamená, že (1) zatiaľ nepoužité kľúče musia byť ochránené aj pred ich prečítaním, a (2) všetky vyhotovenia použitých kľúčov treba po ich použití (aj u odosielateľa aj u príjemcu) ihneď zničiť (zničiť ako kľúč, čo nie nutne znamená napr. vytrhnúť stránku z knihy a spáliť ju a popol rozmrviť - mohlo by postačovať zničiť adresu kľúča, čo napríklad môže byť identifikácia knihy a strany; v prípade elektronického nosiča znaky (reťazec) kľúča prepísať ľubovoľnými inými znakmi, potom prípadne aj vymazať (samotné vymazanie nestačí)).

Ak kľúč výnimočne nie je taký dlhý ako šifrovaný text, musí sa kľúč predĺžiť na dĺžku šifrovaného textu, čo sa obvykle robí najjednoduchšie: viacnásobným opakovaním kľúča (sú možné aj iné, zložitejšie spôsoby). Počtom opakovaní (krátkeho) kľúča však klesá odolnosť šifrovania proti (nežiadúcemu) rozlúšteniu. Ideálny kľúč obsahuje náhodne vybraté znaky, lebo ak z predošlej časti kľúča možno usudzovať na jeho nasledujúcu časť, znižuje to odolnosť šifrovania proti (nežiadúcemu) rozlúšteniu (takže kľúč nesmie obsahovať zrozumiteľné slovo).

Kľúče sa dajú vytvárať generátorom náhodných znakov; ťažkosti sú s ich utajením, dopravou, uschovaním, zničením po použití.
Je možný aj iný spôsob: dlhé a quasináhodné kľúče je možné odvodzovať od bežných, ľubovoľne dlhých otvorených textov, z bežných zdrojov (kníh, časopisov, ... - či už papierových, alebo elektronických) na ktorých sa dohodne, s pomocou dohodnutých pravidiel (napríklad: ktorá kniha, ktorá strana, ako vyberať - napr. brať z textu každé druhé (alebo tretie, štvrté, ... tridsiate...) písmeno). Toto je možné naviac prešifrovať (trebárs aj kratším, príp. aj jednoduchším) druhým (prípadne aj tretím, štvrtým...) kľúčom (ktorý je prípadne možné aj zapamätať alebo skryte poznačiť). Na to je obzvlášť výhodné použiť samočinné šifrovanie (program). Pri takomto spôsobe sa kľúč vytvorí bezprostredne pred jeho použitím dohodnutým spôsobom s dohodnutými premenlivými parametrami, pre ktorých utajenie platia pochopiteľne tie isté zásady ako pre kľúč; výhodou je ich menšia veľkosť a tým menšia nápadnosť s lepšou možnosťou utajenia.
Platí, že zrozumiteľné zašifrované nezrozumiteľným (kľúčom) je nezrozumiteľné - toto je s výhodou možné použiť pre vytváranie kľúčov.
Jestvuje aj množstvo spôsobov na predlžovanie krátkeho kľúča, nie je ťažké si nejaký vymyslieť (napr. opakovanie, opakovanie čiastočné, opakovanie so zmenou dĺžky, opakovanie s posunom, pripočítanie, autokláv OT, ...).
Zvláštnym prípadom je vytvorenie kľúča dlhého ako zpráva, zo samotného textu zprávy prešifrovaním (nie nutne veľmi dlhým) (quasi)náhodným kľúčom, čo však vyžaduje zvláštny spôsob odšifrovania, ktorým sa tu teraz nejdeme zaoberať.
Pre vytvorenie kľúča sú taktiež možné (v časti o substitúcii už vyššie spomenuté) iné matematické operácie, to však je už tiež nad rámec tohoto textu.
Pravdaže, toto všetko má do (ideálnej) náhodnosti znakov ďaleko, ale znemožňuje to slovníkový útok a iné pokusy o rozlúštenie to sťažuje až prakticky znemožňuje, ako je prakticky ukázané príkladmi uvedenými vyššie na konci textu o substitúcii.

Na zistenie početnosti (častosti) výskytu jednotlivých znakov medzinárodnej abecedy v ľubovoľnom texte, teda aj v kľúči, možno použiť tento počítačový program:
    Frekvenčná analýza

Na rôzne šifrovacie pokusy alebo na odvodenie vlastného kľúča možno napríklad použiť aj tieto chaotické reťazce znakov - iste, ideálna náhodnosť tam v postupnosti asi nie je, rozdelenie znakov však je pomerne vyrovnané, nie je tam významnejšia zákonitosť:
   Chaos(01) z 26 znakov medzinárodnej abecedy spolu 10.000 znakov
   Chaos(02) z 26 znakov medzinárodnej abecedy spolu 11.111 znakov
   Chaos(03) z 26 znakov medzinárodnej abecedy spolu 21.249 znakov
   Chaos(04) z 26 znakov medzinárodnej abecedy spolu 25.299 znakov
   Chaos(05) z 26 znakov medzinárodnej abecedy spolu 38.496 znakov
   Chaos(06) z 26 znakov medzinárodnej abecedy spolu 120.551 znakov
   Chaos(07) z 26 znakov medzinárodnej abecedy spolu 1 033 312 znakov

alebo:
   08 = "voda kalná"   reťazec nedefinovanej dĺžky (okolo 300.000 znakov)
   09 = Milión znakov medzinárodnej abecedy - verzia 09    reťazec z milióna znakov, nie sú tam žiadne zdvojené znaky (monotónne bigramy)
   10 = "Trigo"     = trigramy organizované = všetky možné trigramy (skupiny troch písmen) znakov medzinárodnej abecedy, usporiadné podľa abecedy! = žiaden chaos, žiadna náhodnosť (počet písmen teda musí byť 3x(26x26x26)x3 = 158.184)
   11 = "voda pramenitá"    reťazec pozostávajúci z troch rôznych za sebou idúcich náhodne usporiadaných (=poprehadzovaných) postupností všetkých možných trigramov (skupín troch písmen) medzinárodnej abecedy (počet písmen teda musí byť 3x(26x26x26)x3 = 158.184)
   12 = "voda prečistená"    reťazec pozostávajúci z troch rôznych za sebou idúcich náhodne usporiadaných postupností všetkých možných trigramov (skupín troch písmen) medzinárodnej abecedy, z ktorého sú vynechané všetky monotónne trigramy (skupiny troch rovnakých písmen), takže rovnaké písmená sa za sebou vyskytujú najviac dvakrát (vynechaných písmen je čo do množstva málo nad poldruha promile)




Charakter zprávy
Zpráva je text. Ak šifrujeme len jej písmená - čo s ostatným?
Veľké či malé písmená sa dovtípime - ani telegrafia (Morseova abeceda) ich nerozlišovala, a dorozumenie fungovalo.
Bodka za vetou - možno použiť slovo "stop".
Medzery medzi slovami: buď vynechať (text bude neprerušovaný) alebo medzeru nahradiť písmenom čo najmenej používaným - napríklad "x". Ak chcem mať "x" výnimočne v texte, napíšem ho pre rozlíšenie dvakrát za sebou, napr. "texxt".
Číslice: buď vypísať slovom, alebo použiť spôsob používaný kedysi (-40r.) vo výpočtovej technike = ako znak písmenovo-číslicovej zmeny použiť písmeno čo najmenej používané - napríklad "Q" (nepárny výskyt je zmena z písmen na číslice, následný párny výskyt je zmena z číslic na písmená), a písmená použité medzi nepárnym a párnym "Q" interpretovať ako číslice vyjadrujúce ich poradové číslo v práve používanej abecede - napríklad 2016 by sme takto zapísali "QBJAFQ". Ak chcem mať "Q" výnimočne v texte, napíšem ho pre rozlíšenie dvakrát za sebou, napr. "qquasimodo".

Pre užívateľa subjektívne azda najviac vnímanou vlastnosťou textu (okrem písmen) sú medzery medzi slovami, až potom diakritika (dĺžne, mäkkčene, ...) a ostatná interpunkcia (bodky, čiarky) ako aj odlíšenie veľkosti písmen. Tieto vlastnosti textu sú pre počítačové spracovanie podstatné, pretože počítač v svojom najhlbšom základe spracúva a ukladá len dva stavy, ktoré sa interpretujú ako dvojkové číslice, ktorými zapisuje čísla vyjadriteľné v ľubovoľnej číselnej sústave (najčastejšie dvojkovej, osmičkovej, desiatkovej, šesťnástkovej), a tie potom užívateľovi interpretuje, v prípade textu cez použité kódovanie (=prevod medzi číslami a znakmi) ako znaky textu. Používa sa však viacero kódovaní, obvykle sa nelíšia v znakoch medzinárodnej abecedy, ale často sa líšia v znakoch iných. Pre našu jazykovú oblasť sú to najmä kódovania CP 852, Win1250, UTF-8, ISO 8859-2.
S počítačovým kódovaním prišla aj nejednoznačnosť niektorých znakov, ktorú najlepšie vysvetlíme na príklade znaku "vodorovná čiarka", ktorý bol na klávesnici mechanického písacieho stroja jediný a každý mu dobre rozumel. S počítačovým kódovaním znakov prišlo na svet (z istého pohľadu nešťastné) zmnoženie znaku vodorovnej čiarky v jeho slovných "obmenách": pomlčka, rozdeľovník, spojovník, mínus,... (naviac ešte podobná podčiarka), z ktorých každá si presadila svoj vlastný kód, teda sa z nich stali odlišné znaky, hoci stále to zostáva len vodorovná čiarka...
Podobne je to aj s úvodzovkami: okrem "našich" (hornej a dolnej) sú tu americké (obidve len horné), navyše francúzske aj ruské (šipkové), prípadne tiež anglické (každá má len jednu čiarku). Ani bodky nie sú na tom lepšie: okrem tradičnej bodky a dvojbodky, počítače už majú naviac prinajmenej trojbodku.
Aby komplexnosť veci bola čitateľovi ešte viac priblížená, uveďme ešte, že číslice sa cez použité kódovanie niekedy síce interpretujú ako znaky, ale v iných prípadoch aj ako príkazy (typicky LF + CR, a iné ...) alebo môžu mať prázdny význam, a toto všetko sa čitateľovi nezobrazuje ako znak, teda to priamo nevidí, takže by sa to v zašifrovanom texte ani nemuselo preniesť (záleží od spôsobu prenosu).
Ďalšia okolnosť je, že rôzne programy podľa svojho určenia spracúvajú znaky nie celkom rovnako, obvykle inak spracujú znak "písmeno", ale inak znak "medzera", a podobne (nehovoriac o už zmienených príkazoch).
Spomenuté odlišné kódovanie a odlišné spracovanie znakov vnáša do celého procesu šifrovania rôznosti, ktoré z princípu nemožno spracovať rovnako.
Keďže pri klasickom súmernom prúdovom šifrovaní posúvame znaky, mohlo by sa stať, že pri použití celej sady niektorého z obvyklých kódovaní by sa niektoré písmeno zašifrovalo do niečoho, čo by bolo pre čitateľa prinajmenej čudné (napríklad čierny štvorček), nejednoznačné (nevhodne zameniteľné) alebo dokonca neviditeľné. Takto zašifrovaná zpráva by sa pri prenose mohla ľahko skresliť a tým sa stať príjemcovi nerozlúštiteľnou.
Nezabudnime tiež, že v rôznych rečových oblastiach sa často používa iná znaková sada, teda aj cudzojazyčná klávesnica počítača nemusí umožniť napísanie niektorých znakov nám obvyklých.

Východiskom z ťažkostí v našom (klasickom, teda aj ručnom) šifrovaní je použitie obmedzenej znakovej sady - len medzinárodnej (latinkou písanej) abecedy, prípadne rozšírenej o číslice, a to aj za cenu zníženia pohodlia pri čítaní (vynechanie medzier medzi písmenami, ...). Na tom sú založené aj programy dostupné z tejto stránky.
Inou možnosťou je šifrovať znaky (písmená, ...) do čísel, čo však už je nad rámec tejto stránky.

Ak je zpráva príliš krátka, síce to sťažuje jej rozlúštenie, ale z dĺžky krátkej zprávy niekedy možno usudzovať na jej obsah.
Tiež sú citlivé začiatky a konce zpráv, kde možno usudzovať na určitý opakovaný obsah (napr. oslovenie, datum, označenie odosielateľa).
V obidvoch prípadoch (ale aj v iných fázach a prvkoch šifrovania) je namieste použiť "klamače" - pridané písmená ktoré nenesú informačný obsah (tzv. "soľ"), pričom treba v konkrétnom prípade jednoznačne určiť identifikáciu klamačov - buď budú mať pevné miesto a dĺžku alebo budú zrejmé z toho, že budú bezvýznamné a ohraničené dohodnutými znakmi, napríklad "YYRSTZYY".
Ďalšia možnosť ukrytia začiatku a konca zprávy je transpozícia (premiestnenie znakov) - pozrieť vyššie.

Akákoľvek pravidelnosť (teda aj opakovanie) v kľúči alebo aj v texte(!) v zásade znižuje odolnosť proti rozlúšteniu.


Heslo
Heslo nie je kľúč.
Kľúč sa priamo používa v šifrovacom postupe a ideálne sa použije len raz na zašifrovanie a raz na odšifrovanie, potom sa všetky vyhotovenia kľúča zničia.
Heslom sa potvrdzuje oprávnený prístup (obvykle k službám alebo zariadeniam), obvykle sa heslo používa opakovane, ale nepoužíva sa priamo v šifrovacom postupe. Požiadavky na heslo:
- veľa kombinácií - ich počet závisí na súčine (počet znakov hesla x počet znakov v použitej znakovej sade), často sa udáva požiadavka na dĺžku hesla medzi 12 až 24 znakov čo najširšej znakovej sady, ale:
- heslo sa musí dať napísať na "ľubovoľnej" klávesnici,
- heslo nesmie obsahovať známe slovo,
- znenie hesla sa nedá ľahko zapamätať (nemusí sa týkať utajenej pamäťovej pomôcky).

Šifrovanie sa dá použiť aj na vytváranie rady hesiel (napr. k rôznym internetovým službám) tak, že heslá sa vytvoria z neskrývaných zdrojov zašifrovaním každého tým istým utajeným univerzálnym kľúčom, ktorý sa zapamätá (buď priamo, alebo zapamätaným postupom z ľahko zapamätateľného textu). Pre heslá primerane platia zásady pre kľúče.

Príklad vytvorenia hesla zašifrovaním z utajeného univerzálneho kľúča a (nie nutne utajovaného) kľúčového slova:
Chcem vytvoriť prístupové heslo do schránky elektronickej pošty "snehulienka@centrum.sk". S výhodou použijem názov schránky "snehulienka" ako kľúčové slovo, ktoré neskrývam. To, čo skrývam len v mojej hlave, je univerzálna kľúčová veta: "Mor ho detvo môjho rodu kto kradmou rukou siahne na tvoju slobodu" a postup, ktorým z tej vety ktorej vyberiem písmená - napríklad posledné písmeno každého slova, čím vytvorím univerzálny (v tomto prípade opakovane používaný) kľúč: "rooououueauu". Z univerzálneho kľúča sa však uplatní toľko písmen, koľko má kľúčové slovo - teda buď sa skráti (ako v tomto príklade), alebo sa zopakuje. Heslo vznikne z textu "snehulienka" substitučným zašifrovaním (podľa tejto stránky) s použitím univerzálneho kľúča "rooououueauu", teda heslo je "zbkhadmqrqu".
V prípade potreby možno upraviť dĺžku alebo skladbu hesla, napr. na koniec ešte pridám (zopakujem) prvé písmeno, aby som zvýšil dĺžku na 12 znakov, teda "zbkhadmqrquz". Ak sa vyžadujú malé aj veľké písmená, napríklad každý nepárny znak (alebo každú samohlásku, ...a pod.) napíšem ako veľké písmeno, teda bude "ZbKhAdMqRqUz". Ak sa požadujú (aj) číslice, napríklad posledné tri znaky nahradím ich poradovým číslom v medzinárodnej abecede, teda heslo bude "ZbKhAdMqR172126".
V prípade potreby(!) možno aj ďalej rôzne odvodzovať, ale obvykle je lepšie zbytočne nekomplikovať; napríklad ak zo spomenutého poradového čísla použijem ciferný súčet, heslo by bolo "ZbKhAdMqR838"; tiež možno nahrádzať doplnkami, alebo nahrádzať reciprokou hodnotou, a pod... ale načo? - čím viac zásad na zapamätanie, tým väčšie riziko omylu či zabudnutia, takže nepreháňať nad rozumnú mieru (každý môže mať inú).


Spoľahlivosť a programy
Pri vlastnom ručnom zašifrovaní aj odšifrovaní (bez počítača), najmä pri dodržaní zásad pre kľúče, sa nemusí objaviť otázka prípadného úniku zpráv "zadnými dvierkami". Táto pochybnosť je však vždy plne namieste pri počítačovom šifrovaní, otázka však je, kto každý má od "zadných dvierok" kľúč; výnimky, pri ktorých azda pochybovať netreba, sú:
1. keď si môžeme a vieme preskúmať zdrojový kód počítačového programu, a urobíme to s uspokojivým výsledkom, alebo
2. keď dĺžka ovoreného textu a dĺžka naším kľúčom zašifrovaného textu sú zhodné, pretože logika symetrického šifrovania hovorí, že (aspoň v prípade nekomprimovaných zpráv, čo z princípu budú zprávy nie dlhé) tu nie je miesto pre zadné dvierka, alebo
3. keď počítač (trvale - lebo dataloggery a keyloggery) nie je nikde datove pripojený (žiaden internet) ani inak pripojiteľný (EMG tienenie).

Pre naše hravé šifrovanie by mohlo postačovať: preskúmať zdrojový kód použitého programu, uistiť sa o zhodnej dĺžke otvoreného aj zašifrovaného textu, mať počítač (ideálne trvale) nepripojený na internet (napríklad druhý, trvale odpojený starší počítač) a nepoužívať nedôveryhodné operačné systémy (určite nie Win 10, radšej ani Win 8 ani 7, ba ani neskoršími úpravami pozmenené XP; najlepšie azda niektorý z linuxov; táto otázka operačného systému môže ísť bokom v prípade počítača trvale! odpojeného od internetu).

Dnes všetci šifrujú, len taký fukot, hlavne gógel, nuž zašifrujme si aj my - nikdy nie je neskoro mať šťastné detstvo, a chalani pri svojich hrách vždy radi širovali. V dvoch verneovkách našej mladosti sme sa naučili (ručnú) transpozičnú mriežkovú šifru (Matej Šándor - druhý gróf Monte Christo) aj (ručnú) substitučnú šifru typu Vigenere (800 míľ po Amazonke (Torres)). Spomínam, že aj bulharský detektív Avakum Zachov v knihe Polnočné dobrodružstvo od Andreja Guľaškiho šifruje s použitím kľúča, ktorého nositeľom je nenápadná váza. Na internete je veľa stránok venovaných šifrovaniu, napríklad aj od veterána šifrovej služby pána Janečku, on je aj autor poučnej knihy Odhalená tajemství šifrovacích klíču minulosti.
Pre vážne zašifrovanie zprávy kľúčom kratším než zpráva je po substitučnej šifre potrebné ešte prešifrovanie transpozičnou šifrou (poprehadzuje písmená) - takéto (ručné) šifrovanie (substitúcia + transpozícia) používal odboj počas druhej svetovej vojny (pozrieť nižšie - je tam príklad).

Na internete je viacero stránok so samočinným šifrovaním, tiež pozoruhodné množstvo (aj bezplatných) počítačových šifrovacích programov. Mnohé z programov šifrujú blokovo a asymetricky - to je spôsob, ktorý vykonávať ručne nie je mysliteľné. K tým programom používajúcim symetrické šifrovanie podľa mojej vedomosti nie je známy (ručný) presný (reprodukovateľný) postup - to bráni ich preskúmateľnosti aj prípadnej náhrade (či už ručnej, alebo naprogramovanej) pre prípad vzdialenejšej budúcnosti, keď by v dôsledku vývoja počítačov sa staršie programy stali nepoužiteľnými, a tým by boli stratené nimi zašifrované texty.

Kto by chcel siahnúť po inom programe, odporúčam do pozornosti:

Textový editor T602, dnes už nepoužívaný program, ktorého niektoré neskoršie verzie (... v.3.00 +) majú aj funkciu šifrovania, i keď čiastočne skrytú: prístup je v bežiacom "t602.exe" takto: Menu(F10) - Súbor - Manažér - F4(=šifruj); toto šifrovanie je obmedzené dĺžkou: zakóduje súbor dlhý max. 32770 byte - ak je dlhší, zvyšok súboru zostane nezašifrovaný; heslo sa nedá zadať dlhšie než 39 znakov - pozor, ak sa zadáva dlhšie, už sa len prepisuje posledný znak, čo ale vidno; zašifrovaný súbor má rovnakú dĺžku ako nezašifrovaný; nerozlišuje zašifrovanie a odšifrovanie = rovnaký proces. Ak by tento program niekto chcel použiť a nefungoval by v niektorom operačnom systéme, je možné skúsiť spustiť ho v prostredí simulačného programu DOSbox, ktorý je voľne dostupný na internete.

Komprimačný program, napríklad "RAR" od Eugena Rošala (Евгений Лазаревич Рошал) od r. 1993. Viaceré komprimačné programy umožňujú prístup obmedziť heslom či šifrovaním užívateľovým kľúčom. V prípade RAR sú to verzie od RAR v.2.9 a WinRAR v.3.00 - uvádza sa originálna reťazová bloková šifra, neskôr AES 128, potom 256 bit). Je to program, kde sa dĺžka voči pôvodnému textu mení, takže sa nedá usudzovať na prípadnú neexistenciu zadných dvierok. Pravdaže, vždy možno očakávať, že program má zadné dvierka, ale ak zvážime, že prípadný kľúč k nim mohol byť pôvodne v Čeľjabinsku a my sme malé ryby, nemusí to niekedy vadiť; druhá vec je, že neskôr Rošal osobne a aj jeho program sa dostali do západnej cudziny...

Oba zmienené programy, T602 aj RAR, sú peknou ukážkou obmedzenej časovej platnosti počítačových šifrovacích programov, pretože niektoré staršie verzie nefungujú pod novšími operačnými systémami; niečo sa dá vyriešiť spustením programov v "DOSbox", čím však o niečo klesne pohodlie pri používaní tých programov.

Jeden z najviac uznávaných a dlhšie nadšencami vyvíjaných voľných (asymetrických) šifrovacích programov (True crypt) pred časom bez prijateľného vysvetlenia náhle zmizol z internetu a namiesto všetkých jeho dovtedajších verzií sa zrazu objavila len jeho jediná nová náhrada; veci znalých to vedie k presvedčeniu, že azda bol posledný čo nemal "zadné vrátka", a zostávajúce dostupné ich majú všetky. (Viac vyhľadať na internete, napr. na stránkach http://truecrypt.ch, http://andryou.com/truecrypt/docs/index.php, tiež údajná náhrada "VeraCrypt".)

Starostlivo zvažovať treba zabezpečenie spoľahlivej časovej dostupnosti zašifrovaného obsahu, do čoho patrí aj posúdenie časovej použiteľnosti prípadne použitých počítačových programov, a možnosti ich prípadnej náhrady na základe 100% znalosti a samostatného úspešného overenia nimi používaných postupov.

Spoľahlivé uloženie a spoľahlivá doprava zašifrovaných zpráv sú samostatnou otázkou, ktorá už je mimo cieľa tohoto textu. Uveďme však aspoň jednoduchú možnosť, ak chceme aspoň jednoducho skryť existenciu zašifrovaného textu, je možné ho umiestniť do niektorého formátu, ktorý môže mať obsah chránený (čo i jednoduchým) heslom, to sú napríklad formáty *.pdf, tiež komprimačné formáty napr. *.zip, *.rar.


Tu je konkrétny a praktický Príklad šifrovania substitúciou




POKROČILEJŠIE ŠIFROVANIE
Prax pokročilejšieho šifrovania



Nadväzujeme na predošlú časť "Šifrovanie".
V nej sme úplne vysvetlili a ukázali základné spôsoby praktického ručného šifrovania. Tiež sme poskytli jednoduché ale postačujúce počítačové programy, ktoré ručné substitučné šifrovanie mechanizujú, majú otvorenú a preskúmateľnú krátku postupnosť pomerne dobre zrozumiteľných príkazov bez zadných dvierok a sú použiteľné v prostredí internetového prehliadača, nezávisle na operačnom systéme počítača a nepotrebujú pripojenie na internet.
Uvedené šifrovanie v zásade nahrádza jeden znak iným znakom, pričom sada použiteľných znakov je obmedzená na písmená medzinárodnej abecedy, prípadne aj číslice. Konštatovali sme niektoré úskalia, ktoré sa môžu vynoriť, ak použijeme aj ďalšie znaky.

Pre užívateľa subjektívne azda najviac vnímanou vlastnosťou textu (okrem písmen) sú medzery medzi slovami, až potom diakritika (dĺžne, mäkkčene, ...) a interpunkcia (bodky, čiarky) ako aj odlíšenie veľkosti písmen.
Tieto vlastnosti textu sú pre počítačové spracovanie podstatné, pretože počítač v svojom najhlbšom základe spracúva a ukladá len dva stavy (0, 1) a tie sa interpretujú ako dvojkové číslice, ktorými zapisuje čísla vyjadriteľné v ľubovoľnej číselnej sústave (najčastejšie dvojkovej, osmičkovej, desiatkovej, šesťnástkovej), a tie potom v prípade textu interpretuje užívateľovi ako znaky textu, a to cez použité kódovanie, čo je zaužívaný a široko používaný prevod čísel na znaky (a naopak).

Úskalie prvé.
Keďže pri klasickom súmernom prúdovom substitučnom šifrovaní posúvame znaky, mohlo by sa stať, že pri použití celej sady znakov niektorého z obvyklých kódovaní by sa niektoré písmeno zašifrovalo do niečoho, čo by bolo pre čitateľa prinajmenej čudné (napríklad čierny štvorček), alebo dokonca neviditeľné. Takto zašifrovaná zpráva by sa pri prenose mohla ľahko skresliť a tým sa stať príjemcovi nerozlúštiteľnou.
Totiž vo všeobecnosti sa používa viacero kódovaní znakov, obvykle sa našťastie nelíšia v znakoch medzinárodnej abecedy, ale často sa žiaľ líšia v znakoch iných. Aby komplexnosť veci bola čitateľovi ešte viac priblížená, uveďme ešte, že čísla sa cez použité konkrétne kódovanie niekedy síce interpretujú ako nám známe znaky, ale niektoré nie sú ani nám známe písmená, ani číslice, ale neznáme znaky, ba až jednoduché obrázky, ktoré čítať je prinajmenej rozpačité až nemožné, iné čísla sa interpretujú ako príkazy (typicky EOL, CR, EOF, ...) alebo môžu mať prázdny význam, a toto všetko sa čitateľovi v počítači nezobrazuje ako známy znak, ba v niektorých prípadoch to ani priamo nevidí, takže by sa to v zašifrovanom texte ani nemuselo preniesť (záleží od spôsobu prenosu).
Pre lepšie pochopenie uvedených tvrdení si čitateľ môže prezrieť rozmanité druhy kódovania, sú voľne dostupné na internete.
Toto sa týka substitučného šifrovania s použitím niektorého zaužívaného kódovania, a to aj ručne, aj na počítači.
Nezabudnime tiež, že v rôznych rečových oblastiach sa často používa iná znaková sada, teda aj klávesnica počítača v zahraničí nemusí umožniť napísanie niektorých znakov nám obvyklých. Toto sme už viac vysvetlili vyššie, v časti Charakter zprávy.

Úskalie druhé.
Ďalšia okolnosť je, že rôzne počítačové programy, ktoré spracúvajú text, podľa svojho určenia spracúvajú znaky nie celkom rovnako, obvykle inak spracujú znak "písmeno", ale inak znak "medzera", a podobne (nehovoriac o už zmienených príkazoch).
Na dokreslenie uveďme, že samotný koniec riadku v takýchto programoch môže byť aj "tvrdý aj "mäkký", pričom "tvrdý" sa zapisuje dvomi znakmi "EOL" a "CR", niekedy len jedným z nich, ba navyše spôsob "odriadkovania" sa v jednom a tom istom programe môže meniť.


Spomenuté úskalia (odlišné kódovania a odlišné spracovanie znakov) vnášajú do celého procesu šifrovania rôznosti, ktoré z princípu nemožno spracovať rovnako.
Uvedené platí pre počítačové programy, ktoré spracúvajú text, teda aj internetové prehliadače. Keďže naše programy sú v nich prevádzkované, platí táto okolnosť aj pre ne; to je dôvod, prečo v týchto našich programoch nemožno použiť úplnú sadu znakov (napríklad ani UTF-8, ktorá je pre internet predvolená), pretože program síce funguje, ale zašifrovanú zprávu už nemožno odšifrovať do pôvodného čitateľného stavu (to je odskúšané).

Jedným východiskom z uvedených ťažkostí v našom (klasickom, teda aj ručnom) šifrovaní je použitie obmedzenej sady znakov - len medzinárodnej abecedy, prípadne rozšírenej o číslice (teda nie zaužívaného kódovania), a to aj za cenu zníženia pohodlia pri čítaní (vynechanie medzier medzi písmenami, ...), tak ako to je v predošlej časti "Šifrovanie" a na tom sú založené aj programy dostupné tam na uvedenej stránke.

Ďalším východiskom z uvedených ťažkostí je použiť vlastnú znakovú sadu, pričom je namieste mať na mysli vyššie uvedené úskalia. V prípade použitia vlastnej sady znakovej pre zašifrovanie je pre odšifrovanie nevyhnutnou podmienkou jej presná znalosť.
Ručné šifrovanie s vlastnou sadou znakov je možné spôsobom vysvetleným na predošlej stránke "Šifrovanie" vrátane popisov pri jednotlivých programoch, šifrovacia tabuľka bude obdobná, ale bude obsahovať vlastnú sadu znakov.
Počítačové šifrovanie s vlastnou sadou znakov je možné tu nižšie dostupným šifrovacím programom:
   03-Šifra Beaufort s vlastnou sadou znakov - tu je predvolená malá medzinárodná abeceda doplnená číslicami a jediným ďalším znakom - pomlčkou, ktorá je jedným z možných oddeľovačov slov a je zároveň dobre viditeľná (na rozdiel od medzery) a prenositeľná; je to jedna z možností znakovej sady, ktorú si ale môžete ľubovoľne zmeniť (aj skrátiť, predĺžiť...).

Iným východiskom z uvedených ťažkostí je šifrovať znaky zprávy (písmená, ...) do čísel. Na to však treba použiť programy, ktoré nespracúvajú interpretované znaky (to sú všetky naše programy používané v prostredí internetového prehliadača) ale spracúvajú priamo číslelné kódy. To sú však celkom iné programy, ktoré sú spomenuté v predošlej časti "Šifrovanie".



NÁROČNEJŠIE ŠIFROVANIE
Prax náročnejšieho šifrovania



Nadväzujeme na predošlú časť "Pokročilejšie šifrovanie". V nej sme ukázali úskalia, na ktoré môžeme naraziť, ak chceme šifrovať pohodlne čitateľný text. Tam sme poskytli program, v ktorom je možné definovať vlastnú sadu znakov (abecedu), čo záujemcovi umožní zvoliť si individuálne prijateľný kompromis medzi pohodlným textom a istotou šifrovania (môže si napr. pridať diakritiku, interpunkciu, rozlíšiť veľkosť písmen). Pri tomto spôsobe počítačového šifrovania (=spracovanie textu, najmä javascript na html stránke) nemožno použiť medzery medzi slovami, ani tvorenie odstavcov ("Enter"); ručne by to síce v zásade išlo, ale použitie medzery (keďže je neviditeľná) by mohlo zapríčiniť ťažkosti pri prenose.
Zmienený program s možnosťou definovania vlastnej znakovej sady (abecedy) sa pre praktické použitie asi príliš neujme, je skôr vhodný na získanie vlastných skúseností s predkladanými tvrdeniami.
V tejto časti postytneme náročnejšie riešenie - program so šifrovaním Beaufort, v ktorom sa pri zašifrovaní vkladá slovenský text, program text upraví aj zašifruje, a po odšifrovaní dostaneme zjednodušený, ale plynule čitateľný text. Vlastnosti programu:
- vkladaný otvorený text musí byť v slovenskom jazyku, ale nesmie obsahovať "koniec riadku" (="Enter"),
- program odstráni slovenskú diakritiku a veľké písmená prevedie na malé,
- interpunkciu (čiarky, bodky, a pod.) nahradí podčiarkami, tiež
- medzery medzi slovami nahradí podčiarkami, a
- niektoré zvláštne znaky (%, §) tiež nahradí podčiarkami,
tým všetkým text prevedie do znakovej sady uvedenej nižšie, potom text zašifruje.
Kľúč sa v programe neupravuje, musí obsahovať znaky zo znakovej sady uvedenej nižšie.
Použitá znaková sada je:
   abcdefghijklmnopqrstuvwxyz_0123456789
Vyskúšajte si - to je najlepšie.
Keďže, ako sme už predtým vysvetlili, ponechanie medzier nie je dobré, ale bez nich je text zle čitateľný, je otázka, čím medzery nahradiť. V prvom príklade šifrovania sme ich nahradili malým písmenom, ktoré sa takmer nepoužíva ("x"), čo však čitateľnosti textu príliš nepomáha. Bolo by treba drobnejší ale neprehliadnuteľný znak. V medzinárodnej abecede takého niet a rozširovanie znakovej sady treba čo najviac obmedziť. Prichádzajú do úvahy podčiarka a pomlčka. Programy spracúvajú podčiarku ako iné znaky, čo je pre šifrovanie žiadúce; pomlčku spracúvajú inak, často za ňu pridávajú mäkký koniec riadku, čo môže priniesť komplikácie. Preto je tu zvolená podčiarka, hoci pomlčka by bola azda inak vhodnejšia pre vzhľad textu.
V prípade iného náhľadu na náhradu medzery je poľahky možné náhradný znak zmeniť, takéto drobné zmeny v zdrojovom kóde programu sú nenáročné a čo len trochu zbehlý užívateľ si ich môže vyskúšať urobiť aj sám.
   Program(03) je tu.



KOMPLEXNEJŠIE ŠIFROVANIE
Prax komplexnejšieho šifrovania


Viac možností týkajúcich sa kľúča.
Program je usporiadaný do modulov, z ktorých každý sa používa samostatne. V jednotlivých moduloch sú tieto možnosti úpravy kľúča:
  • AA = Odstránenie zdvojených znakov
  • A = Výber písmen z textu s voleným počiatočným posunutím a volenou dĺžkou skokov
  • B = Orezanie reťazca písmen
  • C = Kombinovanie kľúčov: základný kľúč sa kombinuje s jedným alebo dvomi ďalšími kľúčmi (spôsob: Vigenere)
  • D = Šifrovanie Beaufort (= zašifrovanie, tiež odšifrovanie) s použitím abecedy 26znakov + číslice + podčiarka
Vysvetlivky sú v programe v textoch, ale treba si ich otvoriť (= ťuknúť na "zobraziť ďalší text") - s ich znalosťou a predchádzajúcim preštudovaním a precvičením predošlých častí interaktívnej besedy "Šifrujeme s Julesom Vernom" by každému malo byť všetko jasné.
Program(06) je tu


KOMFORTNEJŠIE ŠIFROVANIE
Prax komfortnejšieho šifrovania



V predošlom sme poskytli, ukázali a vysvetlili viacero konkrétnych možností šifrovania textu a predovšetkým rôzne spôsoby prípravy kľúča. Program v časti "Komplexnejšie šifrovanie" umožňuje z jednotlivých modulov programu zostaviť si veľa vlastných možností konkrétneho šifrovacieho postupu.

Pre opakované časté použitie to však môže byť nepohodlné tým, že treba kombinovať jednotlivé moduly a prechádzať od jednoho k druhému, prenášajúc medziúdaje medzi modulmi pomocou schránky (Zwischenablage, clipboard, klávesy "Ctrl"+"C" (=kopírovať) a potom "Ctrl"+"V" (=vložiť)). Preto môže byť užitočné, po naučení jednoduchých základov html jazyka a javascriptu, z programov (najmä (ale nie výlučne) z programu Komplexnejšie šifrovanie) vybrať si časti (moduly) a skombinovať ich do vlastnej, dobre premyslenej, konkrétnej a nemennej pohodlne použiteľnej zostavy s pevnou postupnosťou krokov, ktorá splňuje zamýšľaný cieľ, najmä čo sa týka prípravy kľúča, pretože v tom sa ukazuje dosť veľký rozsah možností, a z nich si vybrať spôsob jediný, v konkrétnych parametroch použitia majúci tak obrovské množstvo možností, aby používateľ vnímal záruku neprelomenia svojho šifrovania.

Jedna z takýchto možných zostáv šifrovania podľa voľby autora je v programe na ďalšej samostatnej šifrovacej stránke: Program(11) je tu. Kľúč sa tu vytvára spôsobom, ktorý je kompromisom medzi (na jednej strane) jednorazovým (neopakovaným) kľúčom z náhodných znakov, ktorý nie je kratší než zpráva, a (na druhej strane) potrebou splniť tieto požiadavky pohodlnejším spôsobom. Výsledný kľúč sa vytvára (už vyššie uvedenou) kombináciou troch kľúčov (Kľúč 1, Kľúč 2, Kľúč 3). Vysvetlivky sú v programe v textoch, ale treba si ich otvoriť (= ťuknúť na "zobraziť ďalší text") - s ich znalosťou a predchádzajúcim preštudovaním a precvičením predošlých častí interaktívnej besedy "Šifrujeme s Julesom Vernom" by každému malo byť všetko jasné.

ODKAZ@.html
je ďalšou možnosťou individuálnej a do krajnosti dovedenej zvláštnej šifrovacej zostavy na internetovej stránke "html". Stránka Odkaz@.html je tu.  a je v nej už vložený odkaz ako príklad; kľúč pre jeho otvorenie sú prvé písmená slov Štúrovho hesla: "Veľa tvoriť, málo troviť a učiť sa" - teda je to šesť písmen - vyskúšajte, ale pozor! - pre vážne použitie je kľúč príliš krátky voči dĺžke zprávy!, ale pre pohodlie pri vyskúšaní bol zvolený krátky. Táto stránka je odvodená od šifrovacej stránky Komfortnejšie šifrovanie(11) jej zjednodušením a konkretizáciou.
Šifrovacia internetová stránka Odkaz@.html má tieto vlastnosti:
  • nesúmerné použitie: jednoduchosť pre príjemcu je dosiahnutá nutnosťou vložiť zašifrovaný text do zdrojového html kódu stránky Odkaz@.html u odosielateľa odkazu,
  • obsahuje jedno malé okno na vloženie kľúča (pre lepšie pochopenie nezasväteného príjemcu odkazu je tam aj neprimerané, ale navyknuté slovo "heslo"), a:
  • obsahuje jedno väčšie okno pre odkaz (zašifrovaný aj otvorený, striedavo za sebou),
  • obsahuje jedno tlačidlo "Ukáž odkaz", ktorého stlačením sa striedajú funkcie odšifrovania (pre ukázanie odkazu) aj zašifrovania (pre prípravu odkazu zašifrovaním),
  • odkaz je v zašifrovanom stave zapísaný priamo v stránke *.html (pre prípravu odkazu treba stránku otvoriť v textovom editore a zašifrovaný odkaz vložiť do zdrojového textu html stránky namiesto reťazca, ktorý sa užívateľovi ukazuje vo väčšom okne),
  • príprava odkazu (jeho zašifrovanie) sa urobí s priamym použitím tej istej stránky, lebo:
  • zašifrovaný aj odšifrovaný odkaz sa ukazujú v tom istom okne (v tom väčšom) striedavo, postupným opakovaným stláčaním (jediného prítomného) tlačidla,
  • vysvetlivky sa príjemcovi nezobrazujú, na jeho činnosť postačia tam prítomné krátke texty k oknu kľúča a k tlačidlu
  • datový obsah stránky je neveľký - stránka je malá (povedzme okolo 5 kilobyte), rýchlo sa načíta (neberúc do úvahy prípadnú závažnú veľkosť odkazu, ktorú nepredpokladám),
  • možnosť ďalšieho zjednodušenia stránky je vynechaním tlačidla, pričom na strane príjemcu postupným zapisovaním písmen kľúča by sa menil nezrozumiteľný obsah okna odkazu, čo by mohlo príjemcu zneistiť - až po vložení posledného písmena kľúča by sa odkaz ukázal správne; preto je tlačidlo ponechané, aby príjemca nebol zneistený,
  • možnosť v okne neukazovať príjemcovi zašifrovaný odkaz, ale až otvorený odkaz, tá nebola použitá, aby sa odosielateľovi zachovala jednoduchá príprava odkazu zašifrovaním na tej istej stránke.

Odkaz@.html súbor ako príloha ele pošty medzi dvomi užívateľmi poštovej služby @gmail.com má tieto vlastnosti:
1. Keď sa príloha stiahne do počítača a následne odtiaľ otvorí v internetovom prehliadači ako *.html súbor, funguje to; či je to tak otvorené, vidíme podľa toho, že v adresnom riadku prehliadača musí byť na konci názov toho súboru, vrátane koncovky "html".
2. Ak sa v prijatom "e-maili" otvorí ako "príloha" e-mailu, zobrazuje sa nie ako html súbor (t.j. v adresnom riadku nie je na konci názov toho súboru, vrátane koncovky "html"), ale ako "attachment" čo sa aj zobrazuje v adresnom riadku. V tomto prípade to nie je otvorené ako "html" súbor, teda sa nevykoná javascript v súbore obsiahnutý, ktorý zabezpečuje zamýšľanú funkčnosť, a teda odkaz sa neukáže v otvorenom stave. Toto je vlastnosť schránky elektronickej pošty.
3. Čo robiť? Použiť spôsob popísaný v bode 1 - ale pozrieť nižšie v bode 4, ako. Jedna z ďalších možností je e-mailom poslať iba hypertextový odkaz (nie súbor samotný), ktorý si príjemca stiahne alebo otvorí (pozrieť nižšie v bode 4) alebo prípadne ťuknutím na odkaz; pre lepšie pochopenie príklad odkazu: Odkaz@.html
4. Bezpečnostný rozdiel:
A.) Spôsob podľa bodu 1, v prípade ak sa z internetu (buď z prílohy e-mailu, alebo z hypertextového odkazu) stiahnutý súbor prenesie do iného počítača trvale odpojeného od internetu (žiadne fyzické pripojenie ani káblové, ani "wireless", ani emg. vyžarovaním), v ktorom sa v internetovom prehliadači otvorí ako "html" súbor, je bezpečný spôsob.
B.) Spôsob podľa bodu 3 by bol bezpečný len v prípade, že by operačný systém počítača internetovým pripojením neposkytoval smerom von žiadne údaje, o ktorých obsahu by užívateľ nič nevedel - s tým sa však vo všeobecnosti nedá počítať (prinajmenej od Win XP SP3 počnúc).
Záver: Pre bezpečné použitie takéhoto odkazu (Odkaz@.html) ako prílohy "e-mailu", napríklad pre prenos údajov do internetového bankovníctva, z hľadiska bezpečného prenosu (bezpečnosť použitého kľúča je vec iná, preberaná už predým) je bezpečný iba prípad popísaný v bode 4A.

VYTVÁRANIE KĽÚČA


Vyššie v časti "Kľúč" sme vysvetlili, že ak kľúč výnimočne nie je taký dlhý ako šifrovaný text, musí sa pri šifrovaní (ručne alebo programom) kratší kľúč použiť viacnásobne opakovane na dĺžku šifrovaného textu, čím však však klesá odolnosť šifrovania proti (nežiadúcemu) rozlúšteniu. Tomu sa v našom procese súmerného prúdového šifrovania nedá vyhnúť.

Hľadáme možnosť mať výhodu dlhého kľúča (odolnosť), ale tak, aby bol použiteľný pohodlne, teda s týmito vlastnosťami:
  • dlhý kľúč (ideálne) nie kratší než zpráva (ak nejde o život, osobne by som použil aj kľúč nie kratší než tretina zprávy, ale to je len subjektívne presvedčenie),
  • z predošlej časti kľúča nemožno usudzovať na žiadnu jeho nasledujúcu časť,
  • čo najmenej pomôcok na zostavenie kľúča - ideálne žiadne písané, aby sa dali zapamätať, prípadne poznačiť len náznakmi pre pripomenutie.

Nižšie ukazujeme niektoré možnosti, ako sa ku splneniu týchto požiadaviek priblížiť.



Kombinovanie kľúčov:

Môže byť výhodným kompromisom, ako sa k niektorým uvedeným vlastnostiam kľúča priblížiť, keď rôznymi spôsobmi skombinujeme (niekoľko - tu uvedieme tri) rôzne kľúče K1, K2, K3, z ktorých sa zostaví výsledný kľúč K, ktorý sa už priamo použije pri šifrovaní.
Kombinovať kľúče je možné napríklad spočítaním kľúčov (šifra Vigenere, napr. K1 + K2 + K3 = K), čo znamená spočítať ich poradové čísla v (medzinárodnej, 26 znakovej) abecede, čo je (povedané rečou matematikov) operačná sústava s konečným počtom prvkov a definovanou operáciou (aj) spočítavania patriacou do metód konečnej (finitnej) aritmetiky, teda spočítavame modulárnym spôsobom (ako čas na ručičkových hodinkách - s cyklovaním dookola) - o to isté stále ide v celom tomto súmernom substitučnom prúdovom šifrovaní.
Kombinovať kľúče je možné aj inými matematickými operáciami než spočítavaním (s výhodou najmä násobením (v tom je aj umocňovanie), nie však delením; pochopiteľne aj odpočítavaním, to však je len zvláštny prípad pripočítavania (s opačným znamienkom)), tieto možnosti si ale ponechávame na neskoršie.

Tým však dĺžku kľúča nezväčšíme. Potrebujeme kľúč (okrem iného) ideálne taký dlhý ako šifrovaná zpráva. Preto hľadáme možnosti predĺženia kľúča. Isté možnosti ukazujeme nižšie:



Kombinovanie opakovaných kľúčov:

Pri prúdovom (postupnom) šifrovaní, ktorým sa tu výlučne zaoberáme, sa vždy v otvorenom texte, v kľúči aj v zašifrovanom texte spracúvajú postupne znaky s rovnakým poradím, a ak je kľúč kratší než zpráva, tak z podstaty tohoto druhu šifrovania nezostáva iné, než kľúč v procese šifrovania používať opakovane viacnásobne.
Prirodzene nás to vedie k použitiu tejto podstaty aj pri kombinovaní kľúčov tým, že by sme kombinované kľúče predĺžili opakovaním, a potom skombinovali do výsledného kľúča. Zistíme, že tým vzniká opakovanie rovnakých (alebo posunutých) zhlukov (skupín) písmen, podobne ako pri fotografii zloženej z obrazových bodov, v ktorej sú dva rôzne obrazové rastre, vzniká opakovanie rovnakých zhlukov (skupín) obrazových bodov = moiré. Podobné moiré môže vzniknúť aj z písmen - ukážeme to tu na príklade:

Príklad kombinácie (spočítania) dvoch kľúčov:
K1 = "voda", K2 = "zub". Napíšme ich pod seba s opakovaním a skombinujme ich - spočítajme ich poradové čísla v abecede a súčet preveďme späť na písmená výsledného kľúča K, takto:

vodavodavodavodavodavodavodavodavodavodavodavoda
zubzubzubzubzubzubzubzubzubzubzubzubzubzubzubzub

21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;...
...21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;21;14;03;00;

25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;...
...25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;25;20;01;

súčet je (modulo 26):
20;08;04;25;15;15;02;20;22;13;23;01;20;08;04;25;15;15;02;20;22;13;23;01;20;... ...08;04;25;15;15;02;20;22;13;23;01;20;08;04;25;15;15;02;20;22;13;23;01;

prevedené späť na písmená výsledného kľúča K (= K1 + K2) dostávame:
uiezppcuwnxbuiezppcuwnxbuiezppcuwnxbuiezppcuwnxb

kde bezpečne vidíme, že sa opakuje skupina prvých dvanástich znakov:
uiezppcuwnxb
a to spolu 4x za sebou - ďalším takýmto predlžovaním kľúča by sa len zvyšoval počet opakovaných dvanásťpísmenových skupín.
Každá pravidelnosť pri šifrovaní znižuje jeho odolnosť, preto aj takéto opakovanie skupín písmen je riziko, ktorému sa chceme vyhnúť čo najviac.

Dôležité:
Počet znakov v opakovanej skupine je najmenším spoločným násobkom počtu znakov jednotlivých kľúčov.
V príklade vyššie je to počet 4 a 3 s najmenším spoločným násobkom 12 - to je počet opakovaných písmen.



Voľba dĺžky opakovaných kľúčov pri ich kombinovaní:

Z uvedeného príkladu vidíme, že pri kombinácii opakovaných kľúčov je výhodné použiť také dĺžky kombinovaných opakovaných kľúčov (K1, K2, K3), aby spoločný násobok počtu ich znakov bol čo najväčší.
Pri takomto opakovaní kombinovaných kľúčov sa opakovaniu skupín písmen nedá úplne vyhnúť, preto je žiadúce, aby skupina opakovaných znakov bola čo najdlhšia.
Úvahou ľahko prídeme k tomu, že:
najväčšiu neopakovateľnú dĺžku kľúča vytvoríme, keď počet znakov (najdlhšieho) kľúča K1 bude (čo najvyššie) prvočíslo, a kľúč K2 bude o jeden znak kratší než K1.

Napríklad (ak pre názornosť zostaneme v oblasti neveľkých čísel):
ak K1 bude mať 13 znakov a K2 bude mať 12 (=13-1) znakov, dĺžka opakovania bude 156 (=13 x 12) znakov (najmenší spoločný násobok čísel 13 a 12), čo je celkom slušné číslo.
Keby sme mali K1 s 15 znakmi, a K2 s 10 znakmi (čo je spolu tiež 25 ako v predošlej vete), bola by dĺžka opakovania 30 znakov (=najmenší spoločný násobok čísel 15 a 10), teda menej než 20% predošlého, pritom na zapamätanie sú obidva prípady rovnako dlhé!
Z toho vidíme, aké dôležité je voliť správnu dĺžku kombinovaných kľúčov.

Jedna z možností je zvoliť jeden kľúč, čiastočným(!) opakovaním ho predĺžiť na najbližšie vyššie prvočíslo - to bude K1. Z tohoto K1 odvodíme K2 tak, že z neho vynecháme prvý(!) znak. Potom K1 aj K2 kombinujeme (spočítame).

Príklad:
Zvolím prvé písmená prvej slohy štátnej hymny Slovenskej republiky: "ntsbhdb" (= 7 znakov(tiež prvočíslo)) a čiastočným opakovaním predĺžim na najbližšie prvočíslo 11, teda K1=ntsbhdbntsb, z toho vynechaním prvého písmena vytvorím K2=tsbhdbntsb. Ich kombináciou (sčítaním K1 + K2 = K) dostávam výsledný kľúč K=
gltikeogltufuzeiqufultoavcuwtomkcuwtoavcgltiqufuzeufuzeogltiwtoavcamkcavcuwtogltuzeiqufufultikeogltomkcogcamkc
ktorý má dĺžku opakovania 110 znakov (=11 x 10) čo nie je zlý výsledok z takého ľahko zapamätateľného postupu. Pravda, ideálny nie je, lebo sa tam napríklad 3x opakuje štvorznakový reťazec "glti".


Príklad:
Základ pre tvorbu kľúča sa dohodne kľúčová veta (vymyslený citát s minimom vnútornej logiky, ale dobre zapamätateľný): Hadi, choďte domov. Ľudovít Štúr. (to je 15 a 11 znakov.)
Z kľúčovej vety urobíme dve časti, čo sa dá rôzne, ale tu uvedieme tri možnosti:
  •   Ak by sme z kľúčovej vety urobili dve časti bez opakovania, iba rozdelením kľúčovej vety, potom ideálne by po opakovaní častí a kombinovaní (dvojrozmerné pole) mal vzniknúť neopakovaný výsledný kľúč čo najdlhší; preto by mali byť takmer rovnako dlhé, ale s rozdielom dĺžky = 1 znak, pričom jedna z častí by bola prvočíslo. V tomto prípade by povedzme boli dve časti dlhé 15 a 11 znakov, z týchto čísel jedno (11) je prvočíslo, a dĺžka neopakovaného výsledného kľúča by ideálne vyšla na 15 x 11 = 165 znakov.
  •   Ak by sme z kľúčovej vety urobili dve časti s opakovaním, čo sa zdá byť výhodnejšie, jeden opakovaný kľúč by bola celá kľúčová veta (15 + 11 = 26 znakov) a druhý opakovaný kľúč by bola druhá časť kľúčovej vety (11 znakov). Po predlžovaní obidvoch kľúčov a ich skombinovaní by dĺžka neopakovaného výsledného kľúča ideálne vyšla na 26 x 11 = 286 znakov, čo je približne jeden-a-trištvrte-krát dlhší kľúč.
  •   Ak by sme z kľúčovej vety urobili dve časti takým spôsobom, ako v predošlom príklade (s hymnou Slovenskej republiky), potom jeden opakovaný kľúč by mal 15 + 11 = 26 znakov, druhý (zopakovanie s vynechaním prvého písmena) opakovaný kľúč by mal 26 - 1 = 25 znakov, potom po predlžovaní obidvoch kľúčov a ich skombinovaní by dĺžka neopakovaného výsledného kľúča ideálne vyšla na 26 x 25 = 650 znakov. Podstatnú úlohu tu hrá skutočnosť, že počty znakov obidvoch kľúčov nemajú spoločného deliteľa! (--> 26=2x13 25=5x5) - lebo ak by mali, potom by dĺžka neopakovaného výsledného kľúča bola menšia.
Vidíme, že posledný z uvedených troch spôsobov by mohol byť najvýhodnejší; v porovnaní s prvým spôsobom poskytne až štvornásobne dlhý kľúč.




Konštruovanie kľúčov
Vyššie uvedené možnosti kombinovania kľúčov zahrnujú spočítavanie kľúčov (spôsobom Vigenere) a ich opakovanie.
Použijeme tieto (nie výlučné) možnosti kombinovania kľúčov:
  •   kľúč sa vytvorí (odvodí) ručne dohodnutým (najlepšie: zapamätateľným spôsobom), napríklad (typicky, ale nie výlučne) zo slov kľúčovej (zapamätanej či poznačenej) vety (napríklad prvé písmeno každého slova), alebo z dohodnutej strany zhodného výtlačku knihy (napríklad prvé písmeno v riadku),
  •   prvý dlhý nezapamätateľný kľúč (K1) sa kombinuje (spočíta) s ďalšími, (nie nutne dlhými) zapamätateľnými kľúčmi (K2, K3, príp. aj viac),
  •   kľúč(e) možno vhodne opakovať (nevýhoda: vedie to viac či menej k cyklovaniu, teda opakovaniu skupín znakov, čo v zásade znižuje odolnosť šifrovania).

Konštruovanie kľúčov dohodnutým spôsobom dáva okrem už použitého kombinovania (spočítavania a opakovania) aj ďalšie nižšie uvedené možnosti, ktoré môžu byť s výhodou použité pre vytvorenie (skonštruovanie) kľúča s vyššou akosťou. Naďalej používame doterajší spôsob, v ktorom má Kľúč 1 (K1) prednostné postavenie voči ostatným kľúčom v tom, že je najdlhší a predovšetkým on je predmetom ďalších úprav; pravdaže, nemusí to tak byť.
Tieto spôsoby možno použiť aj na jednotlivé kľúče (K1 a ďalšie) ktoré sa ďalej kombinujú, aj na už skombinovaný (výsledný) kľúč:
Vyberanie znakov do kľúča (ručne alebo samočinne) dohodnutým spôsobom, trebárs z dohodnutého textu, s použitím parametrov (Tieto parametre používame tu ako konštanty, bárs by sa mohli používať aj premenlivé hodnoty):
"Posun" =koľko znakov od začiatku sa má vynechať - to je jednorazová operácia; a najmä
"Skok" =koľké písmeno v poradí sa má opakovane vyberať - napríklad každé druhé, či tretie, alebo dvanáste, prípadne iné v poradí; ak sa príde na koniec, skončí sa; "skok" je zo svojej podstaty opakovaná operácia; opakovanie jej dáva vyššiu účinnosť než jednorazový "posun".
Ako základ pre vyberanie znakov výhodne možno použiť napr. aj verejne dostupný (dostatočne rozľahlý) text, napríklad knihu alebo noviny či text (alebo všeobecnejšie počítačový súbor) z internetu. Príklad použitia je v tomto programe(11).

"Skok s cyklovaním kľúča" poskytuje ďalšiu možnosť konštruovania kľúča: po dosiahnutí konca sa pokračuje od začiatku. Tento spôsob poskytuje veľké možnosti a výhody, najmä zo (trebárs aj slovníkového) základu skonštruovať kľúč s väčším chaosom než je použitý základ. Takto sa rôznymi skokmi z jednoho základu dá skonštruovať viac odlišných kľúčov. Zo základu sa berú do úvahy len písmená (teda nie medzery a pod.) Namiesto dlhého vysvetľovania krátky príklad:

Príklad: základ nech je slovo "drevo", skok=3 (počítame písmená od prvého, každé tretie vypisujeme, po dosiahnutí konca pokračujeme od začiatku), dostávame reťazec "edvro", ktorý sa ďalej opakuje ("edvroedvroedvroedvro...edvroedvro...").

Príklad: základ (17 znakov) = "nikdy nie je neskoro", skok=5, dostávame 17-znakový reťazec "yeokesnnnrdjkiieo", ktorý sa ďalej opakuje. Z toho istého základu však odlišnou hodnotou dostaneme celkom iný výsledok, napríklad s hodnotou skok=7 dostávame (celkom iný) 17-znakový reťazec "ikdnneoyeijrnskeo", ktorý sa ďalej opakuje.

Operácia "skok" nemení početnosť výskytu jednotlivých znakov. Preto je užitočné používať základ s vyrovanou početnosťou znakov, ten však zo svojej podstaty musí byť dlhší než v predošlých dvoch príkladoch, ktoré sú len na objasnenie podstaty, nie sú vhodné na priame použitie.

Príklad: v javascriptovom šifrovacom programe predvolíme (=ľahko si každý užívateľ môže zmeniť) ako kĺúč reťazec 997 (=prvočíslo) znakov s vyrovnanou početnosťou znakov; rozdielnymi parametrami skoku v tomto kľúči môžeme dostať 997 rôznych kľúčov. (Môžeme zadávať aj vyššiu hodnotu skoku, ten ale bude obsiahnutý v predošlých, pretože zo skoku sa účinne uplatní len hodnota modulo dĺžka reťazca, teda skok modulo 997.) Keď konkrétnym číselným skokom takto získaný kľúč skombinujeme s ďalšími (jedným či viacerými, nie nutne chaotickými) kľúčmi, počet kombinácií vzrastie na hodnotu súčinu počtov ich znakov: povedzme, že kľúč K2 = zemepis, kľúč K3 = balon, potom z podstaty vychádza dĺžka neopakovaného skombinovaného kľúča až (nemusí byť, pravdaže, použitý až do konca) 997 x 7 x 5 = takmer 35 tisíc znakov, potom by sa už znaky opakovali. To by nám mohlo postačovať (úsmev).
Pravdaže, to platí pre jednu nemennú hodnotu posunu; v tomto príklade je toľko možností, posunu, koľko je znakov, čo ďalej znásobuje počet možností.



Postupné pripočítavanie (použitie necyklovanej (nemodulárnej) operácie)
Aj keď zvolíme nepríliš krátke kombinované kľúče (napr. v príklade vyššie je to 11 a 10 znakov), síce ich kombináciou môžeme získať zaujímavú dĺžku kľúča (v tom príklade je to 11 x 10 = 110 znakov), ale stále to môže mať ďaleko k dĺžke porovnateľnej s dĺžkou rozsiahlejšieho textu, ktorý chceme zašifrovať.
Preto hľadáme možnosť zásadného predĺženia výsledného kľúča, pri zachovaní výhod kombinovaných kľúčov.
Pritom narážame na ťažkosť, ktorú spôsobuje cyklovanie pri kombinovaní kľúčov, ktoré, takisto ako samotné naše šifrovanie, používa operácie v uzavretom operačnom systéme písmen abecedy, má modulárny charakter, čo zákonite vedie k opakovaniu (bárs i s dlhou periódou). Dôjdeme preto k myšlienke, že do predĺženia kľúča treba zaviesť premennú definovanú mimo modulárneho operačného systému abecedy.
Najjednoduchšie by bolo použiť poradové číslo znaku kľúča, s ktorým by sa vykonala operácia (najjednoduchšia je sčítanie) taká, aby sa nedala jednoducho vyeliminovať. Mohli by sme zaviesť poradové číslo znaku plus posun a skok, ktoré vnášajú ľubovoľné množstvo možností a v dôsledku toho vysokú odolnosť voči prelomeniu šifrovania s takto predĺženým kľúčom. Ďalšia možnosť je popísaná ďalej.
S výhodou použijeme samočinné pripočítanie všetkých predošlých písmen kľúča ku každému jednotlivému písmenu kľúča.
Program(14) (len) pre konštrukciu veľmi dlhého konečného kľúča, kombináciou až deviatich základných kľúčov ich spočítaním postupne po jednotlivých písmenách, k čomu sa samočinne ku každému jednotlivému písmenu výsledného kľúča pripočítavajú všetky(!) predošlé (už vytvorené) písmená konečného kľúča, je dostupný tu. Tento program(14) je len pre prípravu kľúča a s výhodou sa môže použiť aj na tvorbu dlhých nezapamätateľných hesiel pomocou niekoľkých dobre zapamätateľných slov.
Ďalší program je aj pre šifrovanie aj pre konštrukciu veľmi dlhého konečného kľúča, kombináciou až deviatich základných kľúčov ich spočítaním postupne po jednotlivých písmenách, k čomu sa samočinne ku každému písmenu konečného kľúča pripočítavajú všetky(!) predošlé (už vytvorené) písmená konečného kľúča, ďalej s následným posunom a skokom, čo vytvára veľmi veľa možností konečného kľúča, pričom dĺžka konečného kľúča sa samočinne vytvára zhodne s dĺžkou textu; tento program(16) je dostupný tu. Lepší spôsob pre konštrukcie kľúča s predlžovaním nepoznám. Program tiež poskytuje šifrovanie (bežné, ale klasicky dokonalé a jednoduché) Beaufort (K=A+Z). Odporúčam oboznámiť sa a vyskúšať, bližšie vysvetlenie je v záhlaví stránky programu.
Parmetre konštrukcie kľúča je vhodné voliť premyslene; zo všetkého vyššie uvedeného je zrejmé prinajmenej to, že je rozumné voliť dĺžky jednotlivých kľúčov (1 až 9) a parametre "Posun" a "Skok" tak, aby ich číselná veľkosť bola rozdielna.


Samotná dĺžka kľúča nepostačuje
Okrem požiadavky, aby v skombinovanom (výslednom) kľúči bola skupina opakovaných znakov čo najdlhšia, ideálne taká dlhá ako zpráva samotná, treba ešte mať na pamäti aj to, aby bola dostatočne náhodná. Znamená to, aby sa z predošlej časti kľúča nedalo usudzovať na nasledujúci znak a nasledujúcu časť kľúča. Inak povedané, v prípade každého jedného znaku kľúča treba:
(1.) zachovať možnosť, aby znak mohol byť z úplnej (ničím neobmedzenej) sady znakov; tiež,
(2.) aby pravdepodobosť výberu znaku z úplnej sady znakov bola pre každý znak sady rovnaká. To je veľmi náročné. Táto vec sa však dá vidieť z dvoch strán:
- keď sa kľúč konštruuje, vtedy platí zákonitosť - ale tá vylučuje náhodnosť;
- na druhej strane, ak útočník nedokáže v skombinovanom kľúči nájsť zákonitosť, z jeho pohľadu je kľúč náhodný.
Ak aj útočník v skombinovanom kľúči nedokáže nájsť zákonitosť, môže ešte skúšať všetky možnosti predpokladanej znakovej sady, všetky možnosti dĺžok kľúčov a všetky možné predpokladané spôsoby kombinácií kľúčov.
Pri konštruovaní kľúča môžeme použiť nielen rôzne matematické operácie nad jednotlivými znakmi (spočítavanie, ...), ale s výhodou tiež operácie nad poradím znakov, ktoré nemusia všetky nutne zostať v rámci modulárnej matematiky - toto je silný nástroj (pre lepšie pochopenie: môžu to byť operácie posun, skok, narastajúce (tzv. inkrementálne (teda pokračujúce, čiže nie-zakaždým-od-nuly)) pripočítavanie, a podobne, do ktorých ešte (pre dosiahnutie väčšieho množstva možností) navyše je možné zaviesť premenlivé parametre (priamo zadávané, alebo odvodené napr. od kľúča)).
Ak aj vytvoríme dlhokánsky kľúč dlhý ako zpráva, dôležité je, aby počet možností kľúča bol z pohľadu útočníka obmedzený len počtom znakov kľúča. Preto treba voliť také dĺžky kľúčov (a spôsoby konštrukcie kľúča), aby poskytovali toľko možností, na ktoré útočníkovi (v rozumnom čase) nebude postačovať výpočtový výkon.
Pre lepšie pochopenie uvediem príklad toho, čo sa nesmie stať: dopravuje sa zpráva 10.000 znakov zašifrovaná chaotickým kľúčom zhodnej dĺžky, skonštruovaným z dvoch kľúčov: "voda" a "zub" s opakovaním a ďalšími operáciami; ak útočník zistí alebo správne odhadne, že boli použité dva kľúče s počtami znakov 4 a 3, plus konkrétna metóda ich spracovania, tak potom potrebuje iba vyskúšať všetky kombinácie, a tých je 26 exp (4x3)=vyše 95 000 000 000 000 000 (v prípade slovníkového útoku ešte menej!), a to by možno s počítačom zvládol v rozumnom čase, a dosť pravdepodobne by aj logicky dokázal odhadnúť, ktorá z možností rozlúštenia je tá správna zpráva, ktorá má zmysel.
V tomto príklade je slabina v tom, že hoci je kľúč dlhý (ako zpráva) 10 000 znakov, čo síce umožňuje 26 exp 10 000 možností klúča, ale nevyužitých zostalo až 26 exp 9988 možností, ktoré útočník nemusel uskutočniť ale hlavne: nemusel z nich vyberať, ktorá je tá správna, lebo to by už nedokázal kvôli neohraničenému množstvu možností.




Násobenie v tvorbe kľúča
Násobenie v modulárnej matematike dáva ďalšie možnosti v tvorbe kľúča, ktoré významne rozšíria odolnosť šifrovania. Násobiteľ môže byť priamo zadávaný, alebo môže byť odvodený napr. od kľúča - oboje buď ako konštanta, alebo viac cyklovaných hodnôt, alebo ako odvodzovaný (v zásade necyklujúci) rad.
Po násobení by bolo vhodné použiť operáciu skok najlepšie priamo v priebehu tvorby (predlžovania) kľúča, nie až na konci (ako bolo vykonané v ktoromsi z predošlých programov), aby sa zamedzilo nepotrebné vytváranie reťazcov zbytočne viacnásobne dlhších než je konečný kľúč .



Spojenie programu so zprávou
Keďže na odšifrovanie zprávy je potrebný nielen kľúč, ale aj metóda, a tá je v náročnejších prípadoch uskutočnená naším javascriptovým programom, stáva sa odšifrovanie závislé aj na dostupnosti použitia správneho programu. Uchovanie a použitie správneho programu môže byť vec náročnejšia než uchovanie kľúčov - zvýšiť istotu môže javascript použitý v html stránke spolu so zašifrovanou zprávou, ako už bolo vyššie ukázané aj programovo doriešené i poskytnuté v časti "Odkaz@". Je to dobrý spôsob, keďže prostredie html stránky s javascriptom nie je datovo príiš veľké - v uvedenom prípade je to asi 4,5 kilobyte, čo je zhruba jedna stránka A4 zapísaná nahusto. Zmienený program je však vhodné rozšíriť o viac možností týkajúcich sa kľúča, aj o pohodlnejšie zašifrovanie (odšifrovanie je dostatočne pohodlné).




PRAKTICKÉ ŠIFROVANIE DOKUMENTOV

V predošlých častiach sme sa zaoberali šifrovaním klasických zpráv, t. j. telegrafického najjednoduchšieho "formátu", čo však nevyhovuje pre niektoré požiadavky. Ak chceme rozlišovať veľkosť písmen, používať diakritiku (dĺžne, mäkkčene, ...) a interpunkciu (bodky, čiarky, ...), musíme použiť iné spôsoby než doteraz.
Nateraz bez obšírneho vysvetľovania tu predkladáme program(25) s týmito vlastnosťami:
• javascriptový program bežiaci na html stránke v internetovom prehliadači, bez potreby pripojenia na internet a bez potreby inštalovania,
• nepredpokladá sa ručné šifrovanie spôsobom použitým v programe,
• zašifrovať možno všetky bežné znaky (presne: v rozsahu UTF8 do 686 (=26exp2)), ba dokonca aj obrázky (príliš veľký datový objem zlyháva - vyskúšať),
• použitie kľúčov: tak ako je aj v predošlých spôsoboch uvedené: veľké písmená zmení na malé, zoberie len písmená "a" až "z", všetky ostatné znaky vynechá,
• používa tri moduly: (1) prevod jednotlivých znakov UTF8 do bigramov (dvojpísmen) "aa" až "az", (2) šifrovanie Beaufort (K=A+Z) pre malé písmená vrátane spracovania kľúčov, (3) prevod bigramov do UTF8 znakov; zašifruje sa modulmi 1+2, odšifruje sa modulmi 2+3,
• možno vložiť viac kľúčov, prípadne pre niekoľko prvých možno uplatniť posun a skok, prípadne možno skryť časť obrazovky s kľúčmi,
• na rozdiel od predošlých programov, kde sa najprv vytvoril kľúč a až potom sa použil pre šifrovanie, tu sa kľúč vytvára postupne so šifrovaním jednotlivých znakov a jednotlivé kľúče cyklujú; dôsledok je, že kľúč 1 nemá osobitné postavenie,
• pre vloženie otvoreného textu ktorý má byť zašifrovaný, aj pre ukázanie zašifrovaného reťazca písmen, pre obidvoje je použité to isté pole,
• celú stránku so zašifrovaným dokumentom (po ručnom vymazaní vložených kľúčov aj prípadných parametrov posun aj skok) je s výhodou možné uložiť (=spolu program + zašifrované údaje) a následne otvoriť a vložením kľúčov priamo odšifrovať, ako je vyššie uvedené v časti "Spojenie programu so zprávou"; túto možnosť si však treba vyskúšať v konkrétnom prehliadači, pretože sa v tomto môžu dosť líšiť,
• nevýhoda je, že jeden znak otvoreného textu sa zašifruje do dvoch písmen, čiže počet znakov zašifrovanej zprávy je dvojnásobný; výhodou je, že zašifrovaná zpráva obsahuje len písmená, takže sa dá veľmi dobre prenášať,
• zmenou čo i len jediného znaku kľúča alebo zašifrovanej zprávy sa správne odšifrovanie znemožní; pravdaže, opakovanie odšifrovania po neúspešnom pokuse je vždy možné po opätovnom načítaní východiskového stavu,
• osvedčené je pre datové objemy do zhruba jednoho megabyte (treba si vyskúšať individuálne),
• program nemá zabudované vysvetlivky, ani kontroly vstupov, čo predpokladá jeho dostatočne oboznámené (odskúšané) používanie - je to "cena" za jeho malý datový objem (menej než 5 kilobyte).




BLOKOVÉ ŠIFROVANIE


Mimo rámca nášho verneovského šifrovania tu predsa predkladáme drobnosti z blokového šifrovania, a to bez vysvetľovania jeho podstaty, pretože v prípade potreby si takéto vysvetlenie záujemca môže ľahko nájsť na internete, je tam toho veľa.



Transformácia reťazca (použitie štandartizovanej operácie "hash" = kontrolný súčet)
V hľadaní prijateľných kompromisov pre tvorbu nepredvídateľného kľúča sotva zľavíme z toho, aby aspoň jeden zo základných kľúčov (K1, K2, atď. vstupujúcich do vytvorenia konečného kľúča) nebol slovníkové slovo.
Jednou z možností, ako ponechať výhodu ľahkého zapamätania či poznačenia kľúča, a nestratiť výhodu chaotického usporiadania znakov, je použiť aj v súčasnej šifrológii (kryptografii) zjednotený (štandartizovaný) spôsob (metódu) pretvorenia (transformácie) reťazca do kontrolného súčtu, čo je (nie krátke) číslo vyjadrené v obvykle šestnástkovej (hexadecimálnej) sústave s nemenným (konštantným) počtom znakov ("0" až "9" plus "a" až "f") - (znakov býva zopár desiatok).
Pre uvedený spôsob sa používa anglický pojem "hash" a spôsobov je viacero, ako ich priniesol historický vývoj, keďže sa používajú obvykle priamo v procese ("moderného", najmä nesúmerného) šifrovania, ktoré je stále vo vývoji. Z tých starších je to spôsob nazvaný "MD5" a o niečo menej starší "SHA-1", pre ne sa používa aj názov "kontrolný súčet" alebo "kontrolný odtlačok", ktorý je možné vypočítať z ľubovoľného (aj veľmi dlhého) reťazca znakov. Vytvorenie kontrolného súčtu ručným spôsobom nie je prakticky príliš možné, používa sa naprogramované v určitom (nie samostatne používanom) programovom module, ktorý sa obvykle následne preberá do mnohých užívateľsky prívetivých a rôzne zameraných programov.
Z podstaty veci je obyčajnou úvahou aj bez dokazovania zrejmé, že ak dĺžka východiskového reťazca je väčšia než dĺžka jeho kontrolného súčtu, nie je tam jednoznačnosť, teda musí jestvovať kontrolný súčet rovnaký pre aspoň dva východiskové reťazce; pravdaže, nájsť ich nebude jednoduché, ale to je už iná vec, oveľa komplikovanejšia. Táto nejednoznačnosť je príčinou, prečo sa od starších spôsobov vytvorenia kontrolného súčtu v kryptografii radšej prechádza k novším, ale aj tie z podstaty veci majú uvedenú nejednoznačnosť. Taký je aj osud kontrolného súčtu "MD5", ktorý dáva 32 hexadecimálnych znakov. Napriek uvedenej teoretickej nejednoznačnosti sa však MD5 v praxi naďalej bez praktických ťažkostí úspešne používa na rôzne účely, aj keď možno už nie priamo v šifrovaní. Historickým vývojom pribudli ďalšie kontrolné súčty, tu spomeňme "SHA-1", ktorý dáva 40 hexadecimálnych znakov.
Tu je program(20), ktorý z vloženého reťazca znakov vytvorí kontrolý súčet "MD5" aj "SHA-1". V súvislosti s "našou" témou uveďme dve možnosti použitia:
1. príklad použitia tohoto programu(20) - na tvorbu kľúča pre šifrovanie: dobre si pamätám krátke slovo "pes", ktoré keď vložím ako vstupný reťazec pre kontrolný súčet SHA-1, dostanem ako výsledok 40 znakov: "1524e2951fc39b8cb187fa0752836aa70396df67" čo použijem ako jeden z kľúčov pre vytvorenie konečného kľúča pre naše šifrovanie.
Pravdaže, pri našom spôsobe vytvárania kľúča by sa číslice neuplatnili (písmená áno). Bolo by však možné hexadecimálne číslo previesť na písmená abecedy, toto však v doterajších programoch nie je zahrnuté.
2. príklad použitia tohoto programu(20) - na tvorbu prístupového hesla do schránky elektronickej pošty "snehulienka@centrum.sk". S výhodou použijem názov schránky "snehulienka" ako prvé kľúčové slovo, ktoré nie je skryté, teda si nemusím pamätať jeho znenie. To, čo skrývam len v mojej hlave, je druhé kľúčové slovo "pes", ktoré zapisujem za prvé kľúčové slovo, ale vždy rovnakým spôsobom(!!) - je ľahostajné, či tam dám medzeru, alebo pomlčku, či čiarku, alebo "enter" či čo, ale(!): vždy to musím urobiť ROVNAKO! Takže sa napr. rozhodnem najjednoduchšie, ako reťazec do kontrolného súčtu (do zeleného okienka) vložím "snehulienkapes" a ako výsledok kontrolného súčtu (použiť vždy rovnaký!) napr. (tlačidlom) "MD5" dostanem v ružovom okienku "cc1eb121d003490c0d802f966692c500" čo použijem ako moje heslo pre prístup do mojej schránky elektronickej pošty "snehulienka@centrum.sk". Ako? Takto:
Nikdy si to heslo nezapisujem, vždy si otvorím internetovú stránku s výpočtom kontrolného súčtu, zakaždým si tam to heslo vytvorím vyššie spomenutým spôsobom, kontrolný súčet okopírujem z toho ružového okienka (ťuk ľavým tlačidlom myši do ružového okienka, potom súčasne stlačím klávesy "Ctrl" aj "A" (tým sa mi celý obsah okienka označí ako blok), potom súčasne stlačím klávesy "Ctrl" aj "C" (tým sa mi označený blok skopíruje do počítačovej schránky). Následne idem na prihlásenie do schránky mojej elektronickej pošty, vyplním názov schránky, potom do políčka pre heslo ťuknem ľavým tlačidlom myši, potom súčasne stlačím klávesy "Ctrl" aj "V" (tým sa mi z počítačovej schránky obsah (=moje vytvorené heslo) skopíruje do toho políčka), a ďalej pokračujem v prihlasovaní zaužívaným spôsobom.
Ak by bolo potrebné použiť inú veľkosť písmen a pod., postupovať možno spôsobom naznačeným vyššie v inom príklade so slovom "snehulienka".
V príklade sme použili slovo "pes", ale takéto uhádnuteľné slová v praxi nie je vhodné používať. Vhodná je napr. neuhádnuteľná veta. Taktiež nie je vhodné používať dĺžne a mäkkčene, pretože sa nebývajú vždy zhodne kódované (do čísel).



Štandartizovaná šifra AES-256
Mimo rámca nášho verneovského šifrovania tu predkladáme šifrovací javascriptový program(22) s blokovou šifrou AES-256 bežiaci na html stránke v prostredí internetového prehliadača, bez potreby pripojenia na internet a bez potreby inštalovania. Jadro programu je z cudzieho zdroja. O šifre AES-256 si prípadný záujemca nájde dostatok údajov na internete.




Ako šifroval odboj 1940

Toto je odlišné šifrovanie: jeden znak sa šifruje do dvoch číslic, takže zašifrovaná zpráva má dvojnásobný počet znakov ako otvorený text.
Rukopisné neupravené (zle čitateľné) výpisky z knihy o odboji - vypísané azda okolo r. 1980, sú tu:







Úvaha o použití tohoto šifrovania "s Julesom Vernom"

Pochybujem o tom, že by za súčasných okolností niekto naplno využil to, čo poskytujú tieto internetové Študijné texty a pomôcky pre interaktívnu besedu Šifrujeme s Julesom Vernom. Dôvody vidím dva:
  • Ľudia spohodlneli, menej si zabezpečujú vlastnou činnosťou, viac používajú výsledky cudzej práce (= aj počítač, internet,...),
  • Procesormi riadená časť sveta (teda aj internet) je dnes plná nesúmerného šifrovania.

Zväčša sme na nesúmerné šifrovanie odkázaní pri šifrovaní počítačových súborov, ale
v prípade šifrovania textov nie sme odkázaní na nesúmerné šifrovanie.
Nesúmerným šifrovaním textov sa nezaoberám z dvoch dôvodov:
  • ponúkané programy spravidla nie sú jednoduché, niektoré vyžadujú inštaláciu, nie sú "multiplatformné", nemajú zdrojový kód dostupný a je zložitejší než tu použitý jednoduchý javascript, teda málo užívateľov ich môže preskúmať, preto sa na ne nedá plne spoľahnúť, najmä že neobsahujú užívateľovi skrytú funkčnosť,
  • kľúče asymetrického šifrovania bývajú z môjho pohľadu zväčša nepraktické: nebýva (zvoliteľná) možnosť kombinácie viacerých kľúčov zadaných užívateľom, a (podľa mojich vedomostí) prakticky nie je vhodné či možné ich uschovať v inej než digitálnej forme (žiaden nenápadný alebo skrytý zápis na papier, žiadna možnosť zapamätania, žiadna možnosť vlastného zadania - vytvára ich program). Digitálna forma kľúča je citlivá na zničenie aj na okopírovanie.

Opak nevýhod nesúmerného šifrovania je výhodou šifrovania súmerného:
  • kód programov môže byť krátky, preskúmateľný, ľahko upraviteľný
  • je veľa (užívateľsky výhodných) možností ohľadne kľúča.

Keď som na internete hľadal praktické použitie súmerného šifrovania (programy), najprv som nenašiel nič, potom odkazy na to čo bolo vytvorené kedysi a už nejestvovalo, a funkčné som našiel tuším dve stránky. Pravda, použitý jazyk textu zužuje možnosti. Tak to bolo aj v tom nájdenom a tak je to aj tu: porozumenie slovenčine je v neveľkom okruhu ľudí, i keď veľa sa dá pochopiť z univerzálne zrozumiteľného zdrojového textu samotného, tiež od jari r. 2017 sú už voľne na internete dostupné strojové samočinné prekladače s dobre zrozumiteľnými prekladmi, ale takých osôb z viacerých príčin (najmä nedostatok vôle) bude len veľmi málo.




Autor: Ing. Vojtech Brabenec, Trenčín, 2016-2018.
Autor poskytuje obsah svojho diela podľa svojho subjektívneho najlepšieho vedomia a svedomia, ale
nemôže zaručiť jeho bezchybnosť ani správnosť,
dielo (aj jeho pripojené aj odkazované súčasti) obsahujú zábavné šifrovanie bez akýchkoľvek záruk,
dielo je určené na výlučne zábavné použitie a na skautské hry,
obsah či funkčnosť diela nie je v úplnosti preskúšaný (chyby sú možné),
podstatou diela je spôsob popísaný už Julesom Vernom pred vyše sto rokmi,
autor nedáva žiadne záruky na dielo, ani
nemá možnosť ovplyvniť použitie diela na strane príjemcu či iné okolnosti použitia diela,
preto sa autor zrieka zodpovednosti za použitie svojho diela inou osobou, a
je vecou rozhodnutia každého príjemcu či používateľ diela či a za akých okolností použije autorove dielo, ale
príjemca či používateľ diela je povinný dodržať právo, najmä Autorský zákon.
Toto dielo zahrnuje aj hypertextovými odkazmi prepojené podstránky.
Pod dielom sa tu rozumejú aj súčasti diela aj časti diela.

V prípade zistenia nesprávností autor prosí o ich oznámenie.

Toto dielo chráni Autorský zákon.
Autorovi patria práva hlavne podľa autorského zákona (618/2003 v aktuálnom znení), najmä
označenie autorstva,
nepozmeňovanie diela,
udeľovanie súhlasu na verejný prenos a iné rozširovanie, a to pred jeho použitím, a
právo na odmenu za využitie diela.
(Koniec diela.)



 

      <<  Návrat späť na vrch tejto strany          
SatorArepoTenetOperaRotas


Nižšie je prípadá reklama poskytovateľa: