Vernamova šifra

Java Swing Vernamova šifra

Aby šifra byla neprolomitelná, je potřeba, aby text i klíč měli stejný počet znaků. Proto se vám nad textovými poli ukazuje počet znaků v něm a nedovolí vám zašifrovat text, pokud délka nebude stejná. Pro zjednodušení šifrování je přítomna možnost si klíč nechat vygenerovat. Aplikace umí generovat klíč potřebné délky a šifrovat i dešifrovat text.


Galerie

Program byl vytvořen v roce 2016.

 

Stáhnout

Staženo 150x (153.77 kB)

 

  Aktivity (2)

Program pro vás napsal Martin Štěpánek (Enormyk)
Avatar
Autor se věnuje tvorbě webových aplikací. I přes to, že dobře ovládá HTML a CSS, nemá ani trochu vkus pro design a cit pro sladění barev. Hlavně se, ale věnuje objektově orientovaném programováním v jazyku PHP a občas trochu nahlédne do Javy a JavaScriptu

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
Zdrojákoviště Java - Swing
Miniatura
Všechny články v sekci
Okenní aplikace v Java Swing

 

 

Komentáře

Avatar
coells
Redaktor
Avatar
coells:

S termínem "neprolomitelná šifra" bys měl být opatrný, tvoje implementace je prolomitelná velice snadno a bez ohledu na to, že je to hračka, není ani bezpečná.

 
Odpovědět  +3 20. března 22:00
Avatar
Lako
Člen
Avatar
Odpovídá na coells
Lako:

Můžeš popsat jakým způsobem je místní implementace prolomitelná? Přijde mi, že když máš prostě text stejně dlouhý jako klíč, který asi nějak odečteš (nevím jak funguje ta šifra), tak na tom není moc co zkazit a s tím zašifrovaným textem toho moc nevymyslíš, nebo se pletu?

 
Odpovědět 20. března 23:34
Avatar
coells
Redaktor
Avatar
Odpovídá na Lako
coells:

Pleteš se :-)

Přečti si podmínky spolehlivosti pro OTP šifry a zamysli se nad tím, jestli jsou splněny.
Tady jsou porušeny hned dvě - uniformní distribuce a jedinečnost.

Existují různé útoky, v tomhle případě je nejjednodušší použít útok na klíč, protože první problém je v tlačítku generovat.
Máš jenom 248 různých klíčů a šifru můžeš použít jako orákulum.
Za den lze ke všemu vygenerovat jenom k*236 možných klíčů, což je extrémně malé číslo.
Navíc klíč nesmí mít závislé komponenty a už vůbec ne být lineární a tady je lineární v kongruenci.
A to ani nemluvím o CPA útoku, kde ti bude stačit řádově pár tisíc pokusů na odhalení klíče, to jsou milisekundy na CPU.

Výsledný cypher text ke všemu nemá uniformní distribuci a leakuje informace o plaintextu.
Z toho důvodu se u OTP využívá operace XOR, která při uniformní distribuci klíče zajišťuje

  1. nezávislost plain a cypher textu
  2. uniformní distribuci cypher textu
  3. závislost mezi klíčem a cypher textem, tím garantuje inverzní funkci

Na samotný cypher text se pak dá útočit přes nízkou entropii klíče i zprávy s využitím orákula.
OTP šifry se studenti běžně učí rozbíjet, aby pochopili důležitost sémantiky šifry a naučili se dodržovat podmínky.

 
Odpovědět  +2 21. března 0:23
Avatar
Odpovídá na coells
Martin Štěpánek (Enormyk):

Takže, když udělám, aby se klíč generoval přes celou unicode sadu místo jen písmen a číslic, bude neprolomitelná? Ono totiž je jediná věc, kterou jsem úplně nedomyslel. :-)

Odpovědět 21. března 15:10
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
Martin Dráb:

Já bych se žádnou znakovou sadou nezatěžoval a generoval klíč prostě náhodně z rozsahu 0..2^K-1, kde K je dálka klíče (tzn. náhodně generovaná posloupnost bitů). Nevidím žádný rozumný důvod, proč klíč omezovat třeba na tisknutelné znaky.

Odpovědět 21. března 15:25
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovědět 21. března 17:01
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
coells
Redaktor
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
coells:

Proč? Protože v předchozím příspěvku jsem napsal hned několik důvodů a ty se mě takhle zeptáš na jediný z nich.
Na wikipedii fikaně píšou "v principu nerozluštitelná", nepíšou "nerozluštitelná" ale v článek je stejně nepřesný a s chybami.

Principiální důkaz uvedl ve 40. letech Shannon, ten ale stojí na podmínkách, které zatím nedokážeš pochopit, protože potřebuješ matematiku.
Až budeš na vysoké studovat kryptografii, vysvětlí ti to tam, prozatím se musíš spokojit s tím, že prostě nebude.
Je to věc pravděpodobnosti a statistiky a středoškolská matematika na vysvětlení nestačí.

Když šifru implementuje amatér, není dokonce ani bezpečná, natož nerozluštitelná.
Během kurzu jsem za pár minut rozbil OTP implementovanou mnohem lépe, než je ta tvoje, rozbití špatně použité AES256 mi trvalo asi 30 sekund, diskrétní logaritmy a RSA za pár minut.
V klidu si s tím hraj, ale nenech se unést falešným pocitem bezpečnosti nebo toho, že bys to dokázal správně naimplementovat a použít.

 
Odpovědět  +1 21. března 17:22
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
hanpari:

Vypadá to, že přispěju také troškou do mlýna :)

http://cryptopals.com/
https://www.coursera.org/courses?…

PS:
Opravdu se musíte všichni odkazovat na wikipedii?
Jedna věc je znalost kryptografie, druhá pak pochopení prostého faktu, že wikipedie není autoritativní zdroj informací. Tam si může kdokoliv plácnout cokoliv.

Jediný autoritativní zdroj informací, o kterém vím, je Stopařův průvodce po galaxii. :)

 
Odpovědět  +4 21. března 17:32
Avatar
dejma
Člen
Avatar
Odpovídá na hanpari
dejma:

@hanpari

Jediný autoritativní zdroj informací, o kterém vím, je Stopařův průvodce po galaxii.

Pod to bych se rád podepsal. Sorry za OT

 
Odpovědět 23. března 16:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.