Popis Šifer Typu PNBT-0-Simple 8bit.

Popis první betaverze

První beta verze „Odstavcové šifry PNBT-0-Simple 8bit“ obsahuje pouze základní kostru šifry. Oč méně má zabudováno plánovaných (většinou odzkoušených) funkcionalit – o to má více popisů od obsluhy až po poměrně podrobný popis motoru šifry. Tato první verze byla zveřejněna za účelem testování na všech různých implementacích Writer AOO, LO pod OS Windows, Linux, OSX a podobně.

Předpokládám, že šifra bude fungovat jen u desktopových aplikací, ale neznám stav a tím pádem ani možnosti portable verzí, systémů pro přenosná zařízení a různých klonů Libre Office nebo Apache Open Office.

Při tom je šifra určena zejména institucím státního charakteru, nebo místním samosprávám. Většina přizpůsobených verzí bude mít úpravy které možná znemožní správnou funkci. Přes to pokud obsahují funkční Basic měla by šifra fungovat podle očekávání. Existuje také předpoklad, že by mohla fungovat pod kancelářským balíkem Star Office ze kterého klon Basic pro OpenOffice vychází.

Testování šifry je obecně záležitost velice náročná, kterou si zřejmě většina firem objednává. To si nemohu dovolit ani náhodou. Proto jsem požádal komunity kolem Apache OpenOffice a Libre Office o beta testování.

Nyní tedy budu čekat co se dozvím. Ale můžu informovat co by se mělo s touto šifrou dít dál. Uvnitř šablony jsou popisy i na toto téma, ale jsou tam jen stručně specifikované body. Mimo toho nejde jen o tento typ šifer. Takže zde na domovské stránce by mělo být uvedeno jen to co se týká právě zveřejněné šifry.

Finální podoba šifry :

Ve finální verzi bude mít tato šifra zabudován velmi rychlý algoritmus (generování Bergrových tabulek), který bude do určité míry schopen zabezpečit úroveň srovnatelnou s Vernamovou šifrou. Nejedná se o klasickou „tabulku“, ale o „traverzování“ kolem sBox(j) 256 znaků. Jakmile bude využito všech 512 možností, nebo i dříve dojde k pře šifrování sBox(j). Proto je možné bez problémů vyjádřit, že se traverzuje kolem plného potenciálu 256! (slovy 256 faktoriál) na libovolně dlouhém zdrojovém textu. Tím je odstraněna největší nevýhoda Vernamovy šifry – heslo stejně dlouhé jako zdrojový text. Při předběžných testech jsem dosáhl doby měně nežli dvojnásobku času potřebného k zašifrování jedním stejným sBox(j). Je pravděpodobné že po optimalizaci to bude ještě méně. To už ale hodně předbíhám.

Ve svém důsledku by šifra měla umět také sejmout, zašifrovat a rekonstruovat všechny formáty. Toto zatím není řešeno, ale mám souhlas pana Tomáše Bílka autora rozšíření AltSearch a TypoJTB k použití upravených rozšíření adaptovaných za tímto účelem. Potom už nebude šifra omezena jen na odstavce, přes to tento typ šifry zůstane jen se změní slovo v názvu. Místo slova „simple“ zde bude „smart“.

Finální verze by měla být také značně zkomprimovaná na úroveň 16-ti vzorců které mají podobný efekt jako Hashe. Tahle vlastnost bude volitelná a nejedná se o šifrování v pravém slova smyslu. Je to kód – tedy opak šifry. Jako šifra může fungovat jen do zveřejnění principu a algoritmu. Je to skutečně kompresor – nic jiného.

Přechodné podoby :

Je samozřejmé, že není možné ani moudré zabudovat všechny mechanizmy naráz. Je potřebné aby byly známy problémy v jednotlivých fázích. Proto se bude testovat každá implementace samostatně. Zatím se jeví mimo odstranění případných nedostatků implementování buď rozeznávání formátů, nebo hlavního algoritmu. Nakonec teprve kompresor. Nejsem ještě zcela rozhodnut čím začnu po ověření této beta verze, ale zřejmě to bude algoritmus Bergrových tabulek. U formátů se obávám velké entropie potřeb. To znamená zabudovat samostatně nástroj pro adaptaci formátů.

Algoritmus Bergrových tabulek (BT) jsem v určité podobě už zveřejnil. Je však obsažen v uzamčené a zašifrované knihovně. Jedná se o jednu z příloh pro rozšíření Combinatorics Formulas-1.0.0. Pokud si toto rozšíření stáhnete a nainstalujete najdete tento generátor mezi šablonami.

Tento sešit umí vygenerovat soubory až pro n = 1024. To je počet všech sloupců v sešitech Calc. Pro účely šifrování postačí pouze 256 tedy přesně čtvrtina nastavené kapacity. Při tom existuje docela dlouhý pracovní čas dík tisku sloupců jednotlivých sloupců dvojic. Operace probíhají pouze v paměti a je to celkem zanedbatelný čas.

Princip Bergrových tabulek

Bergrovy tabulky vznikly jako organizační pomůcka pro organizování sportovních duelů – tenis, šachy ale i družstva a podobně. Tabulky jsou v základu koncipovány jako dvojice kombinací. Ale někdy se používají také pro odvety. Stačí změnit pořadí kombinace AB na BA a dostaneme variace bez opakování.

Existuje problém sudého počtu. Ten se dá také řešit. Princip je v tom, že liché počty n [v rámci šifrování by to byl sBox(j)] mají stejný počet sloupců dvojic. Tedy každému prvku n je přiřazen jeden sloupec dvojic (kombinace, nebo variace) který je typický tím, že neobsahuje právě jenom 1 prvek z n. Lichá n mají tedy jakési autokódování.

Sudý počet obsahuje o 1 sloupec méně nežli je n a tuto (relativní) výhodu nemá. Každý sloupec obsahuje všechny různé prvky n. To je pro účely šifrování velmi výhodné. Neobsahuje možnost dovodit zpětně jaký sloupec byl použit. Proto je možné šifrovat na několk různých sloupců naráz.

V tomto okamžiku jde o podobnost s Vignerovým systémem (1919) který šifroval podle volitelného, vhodně dlouhého (většinou krátkého) hesla. Každý znak hesla reprezentoval jiný zdroj pro sBox(j). Pokud mělo heslo 5 znaků, bylo každé modulo z čísla 5 šifrováno jinak. Vignere ale používal tabulku 26 x 26. Tato šifra obsahuje téměř desetkrát tolik zdrojových znaků (256 x 256).

Šifra podle tohoto konceptu se nejprve zpřehází podle hesla. Následne se vypočítá algoritmus pro traverzující mechanizmus. Já používám kombinace téměř v rozsahu řádku Pascalova trojúhelníku. Kombinace 2 až 255. třídy z celku 256 pro kombinace (pro variace 2 až 256 třídy z celku 512).

Původní šifru odvozenou z hesla použijeme jen pro ověření hesla při dešifrování. Základní zpřeházení se načte jako výchozí. Vlastní šifrovaný text už je šifrován například na 10 sBoxů(j) – respektive podle traverzujícího algoritmu. Takže mezi šifrou z hesla a skutečným zpřeházením není jiná vazba nežli traverzující algoritmus.

Šifra může měnit také základní podobu kolem které se traverzuje. Tím je umožněno traverzování kolem plného faktoriálu 256 (tohle číslo je tak veliké, že ho běžný tabulkový procesor neumí vyjádřit).

Vypadá to složitě ale není. Generátor vytvoří jen tolik a takových sloupců, kolik mu nadiriguje traverzující algoritmus. Sloupce dvojic se zpětně jakoby rozevřou na jednice. Tím pádem se v paměti udržuje jen několik “řádků” – tedy sBoxů(j). A pak už se jen provádí substituce stejně jako u Vignerova mechanizmu.

Samozřejmě není nutné šifrovat celý text jen na předem určený počet “řádků”. Můžeme klidně po x znacích vytvořit jiné řádky. V extrému lze každý jednotlivý znak šifrovaného textu šifrovat podle jiného “řádku”.

V principu je možné snadno měnit základní souřadnici [sBox(j) kolem kterého se traverzuje], počet sloupců ze kterých se čte substituce a třeba si odskočit na jiný algoritmus. To proto aby i při šifrování celých knih byla zaručená dostatečná entropie proti nalezení nějaké pravidelnosti.

Primárně jde o proudovou šifru. Když se použije správně může fungovat mezi servery páteřních sítí se stejným nebo lepším bezpečnostním ohodnocením, nežli má systém podle Vernama (ten se nepoužívá ani v praxi protože heslo je tak dlouhé jako šifrovaný text.). Takto se domnívám, protože jsem to netestoval, ale soudě podle popisu (protokolu) RC4 by tato šifra byla možná jen o málo pomalejší ale nebyl by to velký rozdíl.

 

Digiprove sealCopyright secured by Digiprove © 2016 Petr Neudek

Napsat komentář

Přejít k navigační liště