Šifrování je jedním z hlavních způsobů ochrany dat. Pro Delphi lze pro tento účel nalézt řadu komponent různé úrovně a kvality. Jeden z nejznámějších balíků – Delphi Encryption Compendium – si dnes představíme společně s jeho "konkurentem", balíkem DCPcrypt.
Delphi Encryption Compendium, Part I
Tento balík je jakousi první částí (Part I) celého
Encryption Compendia, které zatím není celé hotové. Tato první (hotová) část je freeware a obsahuje několik desítek šifrovacích algoritmů, kontrolních součtů, hashovacích algoritmů a generátorů náhodných čísel. Zbylé části Compendia (část II a III) se budou (až budou hotové) distribuovat jako shareware a podle plánů autora, kterým je Hagen Reddmann, budou obsahovat některé pokročilejší funkce, jako jsou asymetrické šifry, digitální podpisy a podobně.
Vraťme se ale zpět k první části. Jestli máte o šifrách jen obecné povědomí, budete zřejmě překvapeni záplavou šifer, které nám balík nabízí, a zpočátku se mezi nimi jistě ztratíte. Těm o něco více znalejším určitě něco řeknou názvy jako Gost, Cast (128 a 256), Blowfish, IDEA, RC2 (4, 5, 6), DES (single, double, triple), Rijndael, Twofish, Tea a řada dalších. Celkem jich je asi 40, každá má svá specifika, slabiny či naopak výhody oproti ostatním. Chcete-li se v tomto směru poněkud více zorientovat, nevyhnete se zřejmě nastudování některých dokumentů. Samotná komponenta vám (celkem pochopitelně) v tomto moc nápomocná nebude a kromě několika dokumentů RFC (Request for Comments), které se zabývají tématem One-Time Password, žádné další dokumenty ani manuály neobsahuje. Je to možná škoda, protože alespoň základní popis jednotlivých algoritmů by se hodil. Přesný popis principu by pochopitelně zabral poněkud více místa, protože se jedná o trošku vyšší matematiku, ale vysvětlování principu není cílem komponent a je to pochopitelné. Nás tedy jako programátory nebude příliš zajímat princip, ale spíše to, co nám může nabídnout samotná komponenta.
Po instalaci, která proběhne celkem standardním a bezproblémovým způsobem (testováno s Delphi 5), se nám na paletě komponent objeví nová záložka DEC, která obsahuje překvapivě pouze tři komponenty. Ano, sliboval jsem vám desítky šifer a dalších funkcí a balík je opravdu obsahuje. Každá z komponent, nainstalovaných na paletě, je vlastně jakýsi manažer pro jednotlivé oblasti šifrování, a tak zde najdete HashManager (pro hashovací funkce), CipherManager (pro šifrovací algoritmy) a konečně OneTimePassword (viz výše a popis v RFC). K celému balíku je přiložen demonstrační projekt, který použití všech jednotlivých funkcí znázorňuje prakticky, takže se můžete pustit do experimentování.
Ještě je třeba připomenout jednu drobnost: Komponenty jsou sice freeware a dodány se všemi zdrojovými kódy, ale některé v ní použité algoritmy podléhají mezinárodním patentům. Nejsem sice právník, ale v případě použití nějakého patentovaného algoritmu (a navíc třeba ještě v komerčním projektu) bude zřejmě nutné majiteli patentu zaplatit nějakou částku. Některé patentované algoritmy lze ale v nekomerčních projektech také bez omezení použít. Nevím, jak přesně to chodí v praxi. Některé šifry mají zase jistá vývozní omezení z USA (což se nás přímo netýká). Šifrování je zkrátka mocná technologie a platí pro ni plno různých pravidel. Pro základní orientaci v tom, které algoritmy můžete bez obav použít (a to i v komerčních projektech) přikládám následující tabulku, která obsahuje některé známé algoritmy a údaj o tom, zda podléhají patentu. Informace pochází z dokumentu, dodávaného k dalšímu z balíku šifrovacích komponent od Davida Bartona (viz dále) a tak nemohu zaručit jeho bezchybnost.
Šifra |
Patentováno |
Blowfish |
Ne |
Cast128 |
Ne |
Cast256 |
Ano |
Gost |
Ne |
IDEA |
Ano (možno použít v nekomerčních projektech) |
Mars |
Ano |
Misty1 |
Ano (možno použít v nekomerčních projektech) |
RC2 |
Ne |
RC5 |
Ano |
RC6 |
Ano |
Rijndael |
Ne |
Twofish |
Ne |
Haval |
Ne |
RipeMD-169 |
Ne |
SHA1 |
Ne |
Co říci závěrem? Jedná se o velmi rozsáhlý projekt co do množství podporovaných funkcí a algoritmů. Pokud se o šifrování zajímáte, jistě by neměl uniknout vaší pozornosti.
www |
verze: 3.0 |
Delphi: 2-5 (677 kB) |
C++ Builder: 3-4 (677 kB) |
DCPcrypt
I tento balík je plný šifrovacích algoritmů a dalších s věcí související funkcí. Autorem je David Barton a v tabulce uvedené výše (viz popis předchozí komponenty) je vlastně seznam těch algoritmů, které jsou v balíku obsaženy. Přístup je poněkud odlišný od předchozího balíku. Každý z jednotlivých šifrovacích či hashovacích algoritmů je zastoupen vlastní ikonkou na paletě komponent, což jistým způsobem usnadňuje práci s jednotlivými šiframi. Z přiloženého demoprojektu se opět snadno naučíte, jak s komponentami pracovat, protože to opravdu není těžké.
Komponenty jsou opět freeware a dokonce public domain, což znamená, že je můžete bez omezení nejen používat, ale též modifikovat a dále distribuovat bez zvláštního souhlasu autora. A samozřejmě opět připomínám, že i když jsou komponenty freeware, některé použité algoritmy mohou být chráněny patenty a tak je třeba s tím počítat (viz tabulka výše).
www |
verze: 1.3 |
Delphi: 1-6 (146 kB) |
C++ Builder: ? |