O aplikaci

Samotná aplikace je rozdělena do dvou samostatných částí — v jedné části se provádí kryptoanalýza a slouží k luštění šifer, druhá část je pomocná a jejím účelem je umožnit uživateli zašifrovat a dešifrovat text pomocí podporovaných šifer, aby si například mohl vyzkoušet funkčnost ostatních algoritmů.

Poznámka: Název aplikace „Bletchley park“ odkazuje na důležité místo světové kryptoanalýzy — jedná se o část města Bletchley nacházející se v Anglii. Během 2. světové války se zde nacházelo hlavní sídlo anglických luštitelů šifer, kteří se snažili zlomit německé šifry, především slavnou Enigmu. Nejvýznamnější osobou, která se podílela na luštění, byl Alan Turing, který měl na prolomení Enigmy nejspíše největší zásluhy. Později po něm byla pojmenována Turingova cena.

Aplikace vyžaduje operační systém Microsoft Windows (XP, Vista, 7) s nainstalovaným .NET 3.5 frameworkem. Pro hladký běh aplikace je potřeba alespoň 256 MB RAM.


O aplikaci

Kryptoanalytická část

Popis jednotlivých ovládacích prvků

K prolomení šifry použijeme záložku „Kryptoanalýza“, kterou vidíme na následujícím obrázku:

V případě, že pomocí checkboxu zvolíme režim, kdy si uživatel může sám vybrat použitou šifru (viz ovládací prvek 9 na obrázku), získáme další možnosti nastavení:

Popis všech ovládacích prvků v záložce na obrázku:

  1. Primární textové pole, do kterého uživatel vkládá text, který chce rozluštit. Textové pole podporuje kontextové menu, které umožňuje jednoduše smazat celý text a vložit na místo něj text ze schránky a případně i nakopírovat celý text do schránky.
  2. Sekundární textové pole, které zobrazuje výsledek luštění. V případě úspěšného prolomení šifry se zde objeví dešifrovaný text. Nepodaří-li se text prolomit, zobrazí se zde upozornění. Pole podporuje kontextové menu, které umožňuje jednoduše nakopírovat celý text do schránky.
  3. Tlačítko, které spouští luštění. Během samotného luštění je neaktivní.
  4. Tlačítko, kterým může uživatel v případě potřeby přerušit luštění. Je aktivní pouze během aktivního luštění.
  5. Ukazatel počtu napsaných znaků v primárním textovém poli.
  6. Textové pole, které na konci úspěšného luštění zobrazí uhádnutý šifrovací klíč.
  7. Textové pole, které na konci úspěšného luštění zobrazí použitou šifru.
  8. Rozbalovací menu, které obsahuje několik jazyků a umožňuje uživateli nastavit, jakého jazyka je vložený šifrový text. Bez správného určení jazyka se algoritmy nebudou chovat správně.
  9. Checkbox, který indikuje, zda má aplikace sama určit použitou šifru (při zapnutém checkboxu) nebo zda uživatel sám zvolí, jakou šifrou byl text zašifrován.
  10. Progress bar, který při startu aplikace indikuje průběh načítání slovníků, později zobrazuje průběh kryptoanalýzy.
  11. Status bar — aplikace zde po najetí na nějaký ovládací prvek zobrazuje pomocné informace.
  12. Hlavní menu aplikace, obsahuje základní funkce programu a nápovědu.
  13. Výběr šifry, kterou je zašifrován šifrový text, tj. text vložený v primárním textovém okně.
  14. Výběr algoritmu, který bude použit při luštění. Některé šifry nabízí více různých algoritmů, které mohou pro stejný text vrátit jiné výsledky. V případě, že jeden algoritmus nedokáže šifru vyluštit, může uživatel zkusit jiný algoritmus.

Typický příklad užití kryptoanalytické záložky

Záložka a všechny její ovládací prvky jsou uzpůsobeny k co možná nejjednodušší práci s algoritmy luštící šifry.

Na začátku máme nějakou zašifrovanou zprávu a chceme získat původní otevřený text. Spustíme aplikaci a nakopírujeme tento text do primárního textového pole. Pokud byl původní text jiného jazyka než českého, zvolíme ještě v comboboxu požadovaný jazyk (ovládací prvek 8). Dále klikneme na tlačítko „Prolomit text“ (ovládací prvek 3). Aplikace bude chvíli počítat a po několika sekundách se objeví výsledek — buď správně či nesprávně vyluštěný text nebo upozornění, že text nebylo možné rozluštit.

Známe-li šifru, kterou byl náš šifrový text zašifrován, můžeme odškrtnout „Uhádnout použitou šifru“ (ovládací prvek 9) a specifikovat, kterou šifrou byl text zašifrován. Poté opět stiskneme tlačítko „Prolomit text“ (ovládací prvek 3). Doba luštění bude kratší, aplikace nebude muset zkoušet všechny šifry.

Obecně platí, že čím delší text, tím větší je pravděpodobnost, že bude správně rozluštěn. U Caesarovy šifry stačí text dlouhý řádově stovky znaků, ostatní šifry už jsou složitější a vyžadují řádově tisíce znaků.


O aplikaci

Šifrovací část

Popis jednotlivých ovládacích prvků

Šifrovací část se nachází na záložce „Šifrování“ a slouží k šifrování a dešifrování zpráv, pokud předem známe šifrovací klíč. Šifrovací záložka je vidět na následujícím obrázku.

Popis ovládacích prvků:

  1. Primární textové pole. Zde uživatel vkládá text, který chce šifrovat nebo dešifrovat. Textové pole podporuje kontextové menu, které umožňuje jednoduše smazat celý text a vložit na místo něj text ze schránky a případně i nakopírovat celý text do schránky.
  2. Sekundární textové pole. V tomto textovém poli se zobrazí výsledný šifrový nebo otevřený text. I toto pole podporuje kontextové menu pro snadné nakopírování obsahu do schránky.
  3. Stisknutím tohoto tlačítka aplikace zašifruje text z primárního textového pole a výsledek zobrazí v sekundárním poli.
  4. Stisknutím tohoto tlačítka aplikace dešifruje text z primárního textového pole a výsledek zobrazí v sekundárním poli.
  5. Zobrazuje počet znaků napsaných v primárním poli.
  6. Combobox, který nabízí různé druhy šifrových algoritmů. Touto volbou uživatel specifikuje, jakou šifrou si přeje text šifrovat nebo dešifrovat.
  7. Textové pole, kam uživatel vepíše použitý šifrovací klíč.
  8. Tlačítko, kterým může uživatel vygenerovat náhodný klíč, nechce-li použít žádný vlastní. Vždy vygeneruje validní klíč pro zvolenou šifru. Pokud je textové pole podbarvené zeleně, je vepsaný klíč validní. Pokud je podbarvený červeně, není validní. Informace o tom, jaká pravidla musí klíč splňovat se nachází ve status baru.
  9. Checkbox indikuje, jestli má aplikace při šifrování ponechat v šifrovém textu mezery, které budou reprezentovat hranice mezi slovy. Aplikace ponechá vždy jen jednu mezeru, všechny ostatní bílé znaky budou ignorovány. Jakékoliv další formátování (tabulátory, odřádkování apod.) bude ignorováno.
  10. Progress bar, který zobrazuje průběh šifrování a dešifrování. Obvykle jen problikne, protože šifrování i dešifrování je rychlé.
  11. Status bar — aplikace zde po najetí na nějaký ovládací prvek zobrazuje pomocné informace, po aktivaci textového pole pro zadání klíče se zde například zobrazují podrobnosti o tom, jak má vypadat šifrovací klíč.
  12. Hlavní menu aplikace, obsahuje základní funkce programu a nápovědu.

Typický příklad použití šifrovací záložky

Uživatel může v této záložce provádět dvě opačné úlohy: může šifrovat text a dešifrovat text.

Pokud si přeje šifrovat text, vloží svou zprávu, kterou chce zašifrovat, do primárního textového pole. Následně si vybere šifru, kterou chce text zašifrovat a do textového pole vepíše šifrovací klíč, který chce použít. Pokud nechce použít konkrétní šifrovací klíč, může si nechat vygenerovat náhodný klíč. Nakonec stiskne tlačítko „zašifruj text“. V sekundárním textovém poli se zobrazí výsledný šifrový text. Vyvoláním kontextového menu lze šifrový text jednoduše nakopírovat do schránky.

Přeje-li si uživatel naopak dešifrovat text, vloží svůj zašifrovaný text do primárního textového pole, vybere si šifru, kterou byl text zašifrován a do textového políčka vepíše šifrovací klíč. Nakonec stiskne tlačítko „dešifruj text“ a v sekundárním textovém poli se zobrazí původní otevřený text.