Užitečné komponenty pro Delphi a C++ Builder, díl 56.

I tentokrát si představíme místo komponenty jeden malý, ale užitečný nástroj. Pomůže nám o něco zvýšit bezpečnost našich aplikací šifrováním textových řetězců, které obsahuje.

Pascal-Scrambler 1.0

Bezpečnosti není nikdy dost a pokud to s ní myslíte opravdu vážně, každý bezpečnostní prvek navíc se může hodit. Jak tedy k bezpečnosti přispěje tento malý program a jak ochrání vaše aplikace?

Textové řetězce, které vaše aplikace obsahuje, jsou i ve zkompilovaném exe souboru uloženy stejně jako ve zdrojovém kódu a tedy snadno čitelné. Schválně si zkuste prohlédnout vaší aplikaci v nějakém prohlížeči (stačí klidně F3 ve (Windows)Total Commanderu). To by nebyla až zas taková tragédie, ale mnohem horší je to, že pak je velmi snadné tyto texty editovat a prakticky téměř kdokoliv s vhodným "hexaeditorem" může napsat do vaší aplikace co se mu jen zlíbí. Jaká je proti tomu obrana? Samozřejmě, že nic není 100%, takže veškeré obrané postupy obvykle jen samotný proces zpomalí a zkomplikují. Nicméně pak už nestačí být jen běžným uživatelem s editorem, ale na prolomení takové "ochrany" je třeba dalších znalostí. Nejjednodušší variantou je asi použití nějakého komprimátoru exe souborů (jako je např. výborný freewarový UPX), o kterých si možná povíme něco blíže jindy. To ale není ochrana v pravém slova smyslu, protože si může vaší aplikaci stejně kdokoliv opět dekomprimovat a poté editovat. O řád výše jsou poté programy jako třeba ASProtect, který celý program zašifruje a po spuštění je v paměti opět dešifrován (stejně fungují i výše zmíněné komprimační nástroje). Ten však již bohužel zdarma není. Bezpečnost zkrátka něco stojí. Ale to už se konečně dostáváme po trošku delším úvodu k dnešnímu programu. I ten data šifruje a na věc jde rovnou od lesa.

Pascal-Scrambler, na rozdíl od výše zmiňovaných programů na kompresi či šifrování, nepracuje s již zkompilovaným exe souborem, ale přímo se zdrojovým kódem. Celý princip programu je vlastně velmi jednoduchý a elegantní. Do programu načtete zdrojový kód, který chcete ochránit. Program vygeneruje dva náhodné řetězce všech alfanumerických znaků. Textové řetězce vaší aplikace jsou pak zašifrovány pomocí těchto dvou "tabulek" klasickou a jednoduchou substituční šifrou. Tedy, znak z první tabulky je ve zdrojovém kódu nahrazen znakem z druhé tabulky. Tyto dva řetězce generuje Pascal-Scrambler neustále dokola a náhodně, takže prakticky žádná z aplikací nemůže mít stejnou substituční tabulku. Zašifrování textových řetězců ve zdrojovém kódu je však jen polovina práce. Jak se zajistí zpětné přeložení textů do původního stavu po spuštění vaší aplikace? Velmi snadno. Na začátek zdrojového kódu je přidána krátká funkce, která obsahuje substituční tabulku a algoritmus na dešifrování. Každý textový řetězec ve zdrojovém kódu je pak nahrazen právě touto funkcí s parametrem zaširovaného řetězce. Velmi jednoduché a přitom funkční. Není snad třeba připomínat, že toto bezpečnostní opatření je nutné udělat až na samý závěr, v poslední kompilaci před vypuštěním programu, protože jinak by bylo čtení zdrojového kódu dost komplikované. Samozřejmě je také vhodné si původní zdrojový kód uchovat.

A to je vlastně všechno. Nic víc netřeba dodávat. Ovládací program je jednoduchý, vše je zdarma a zdrojové kódy jsou rovněž k dispozici, takže si můžete případně vylepšit i šifrovací algoritmus. Rozhodně si nedělám žádné přehnané iluze o velké bezpečnosti tohoto postupu, ale rozhodně vyřadí většinu běžných útočníků a těm ostatním situaci alespoň zkomplikuje.

stahujte zde

Diskuze (1) Další článek: Western Digital uvede 250 GB disk

Témata článku: Software, Bezpečnost, Programování, Náhodný znak, Díl, Komponenta, Pascal, Textový řetězec, Šifrovací algoritmus

Určitě si přečtěte


Aktuální číslo časopisu Computer

Zachraňte nefunkční Windows

Jak nakupovat a prodávat kryptoměny

Otestovali jsme konvertibilní notebooky

Velký test 14 herních myší