MCA 1.0 - Multi Crypted Archive (C)Y2k4 K.M.S. under free ZOA licence Program MCA je určen k vytvoření šifrovaného archívu s různými klíči pro každý soubor. To umožňuje distribuovat větší projekty s tím, že k jednotlivým částem bude mít přístup pouze oprávněný uživatel. Klasickým příkladem je archív, ve kterém je distribuovaný program šifrován veřejným klíčem a zdrojové kódy firemním klíčem; popřípadě hudební album, kde jsou MP3 šifrovány veřejným klíčem, fotografie a další bonusy klíčem pro registrované členy fanclubu a jednotlivé nemixované stopy skladeb soukromým klíčem hudební skupiny. Program MCA používá 18 profesionálních symetrických šifrovacích algoritmů v závislosi na výběru uživatele, samozřejmostí je implementace současného šifrovacího standardu AES (Rijndael). Šifrovat každý soubor pod jiným heslem a ukládat je všechny do jednoho archívu je běžnou funkcí komprimačních programů. Lze však zpochybnit bezpečnost takto uložených dat. Programů typu ZIPcrack nebo ARJcrack lze na Internetu najít desítky, což nepřispívá k důvěryhodnosti heslování v běžných komprimačních programech. Koneckonců, u nich je ochrana heslem pouze vedlejší funkcí. Oproti tomu většina kvalitních šifrovacích programů sice zajistí bezpečnost dat takovou, že na prolomení klíče by byla třeba doba přesahující trvání vesmíru, ale nepodporují vytváření jednoho archívu s více soubory s vlastními klíči (například PGP). Volně šiřitelný program MCA poskytuje jednak zabezpečení dat v profesionální kvalitě a zároveň umožňuje vytvořit archív, u kterého lze mít pro různé soubory různé šifrovací klíče. Výrobce produktu tedy může zajistit, aby se běžný uživatel dostal jen k části archívu, kdežto neveřejná data budou k dispozici jen oprávněným osobám. Příkladem může být oddělení binární distribuce od zdrojových kódů, přičemž třetí částí archívu může být například archív účetnictví, ke kterému nemají přístup ani vývojáři software. Struktura archívu programu MCA je taková, že bez konkrétního klíče nelze poznat ani to, kolik souborů a jaké soubory jsou v něm obsaženy. U zaheslovaných souborů v archívech RAR, ZIP, ARJ a podobných je na první pohled vidět, co je v nich obsaženo za soubory a už tento fakt může pomoci útočníkovi k prolomení samotné šifry. Program MCA využívá prvky steganografie (i když se o steganografii nejedná), díky čemuž je třeba klíč i k tomu, aby bylo poznat, že příslušný soubor v šifrovaném archívu vůbec existuje. Archív má totiž při vytváření pevně danou velikost, podobně jako záznamové médium, do které je možno umístit tolik souborů, kolik se jich tam vejde. Zbývající místo umožňuje program MCA vyplnit náhodnými daty. Pokud je tedy velikost archívu 1MB, nelze bez všech klíčů poznat, jestli je v něm pouze jeden 1MB soubor, jestli jsou v něm dva 100KB soubory, přičemž je zbytek vyplněn náhodnými daty, nebo jestli je tam souborů dvacet. Pokud uživatel ztratí jeden z klíčů, přijde nejen o možnost příslušný soubor dešifrovat, ale i o možnost zjistit, zda tam nějaký soubor je a kde se v archívu nachází. Jaká je struktura archívu? Archív programu MCA je rozdělen na sektory, podobně jako disketa. Jeden sektor má velikost 256 bajtů. Při vytváření archívu je k dispozici mapa volných sektorů. Při šifrování souboru je alokován náhodný sektor v archívu, ten je označen do mapy jako obsazený a jeho pozice je uložena do klíče. Do příslušného sektoru se uloží šifrovaná data a program MCA dále vyhledává náhodné sektory, které jsou volné. Šifrovací klíč a mapa archívu jsou tedy ekvivalenty FAT v souborovém systému. Když jsou v archívu umístěny všechny soubory, umožňuje program MCA projít volné sektory a zaplnit je náhodnými daty. Tím je archív vytvořen a je třeba smazat mapu archívu, která slouží pouze jako pomocná informace pro jeho vytváření. Dále už záleží jen na správci archívu, komu poskytne jaký klíč. S jedním klíčem lze získat přístup pouze k tomu souboru, ke kterému patří, a i samotná existence ostatních zůstane skryta. Potenciální útočník nemá bez klíčů šanci zjistit ani to, jak jsou soubory v archívu umístěny, jelikož tato informace je pouze součástí klíče. Soubory jsou díky kvalitnímu generátoru náhodných čísel (viz dále) v archívu natolik fragmentovné, že je nelze bez klíče ani rekonstruovat (=defragmentovat), natož dešifrovat. To je ještě posíleno tím, že nevyužité místo (kterého může být i značně více, než šifrovaných dat) je vyplněno náhodnými čísly, která vypadají stejně chaoticky, jako zašifrovaná data. Ani při odcizení souborů s klíčem není vše ztraceno. Klíč je chráněn stejně kvalitním šifrováním, jako samotný archív, ovšem zde již záleží jen na kvalitě hesla. Šifrování klíče není totiž posíleno fragmentací struktury souboru a závisí jen na hesle, které zadává uživatel. Proč je program MCA tak kvalitní? Ačkoli je struktura archívu a klíčů pro přístup k souborům sama o sobě spolehlivá a originální, neznamenalo by to nic bez kvalitního šifrovacího algoritmu. Program MCA šifruje i klíč i soubory v archívu až 18 kvalitními šifrovacími programy v závislosti na přání uživatele, který si sám vybírá použité šifry. Podporovány jsou následující profesionální šifry různé kvality zabezpečení, od nejstarších šifrovacích standardů, přes řadu kvalitních algoritmů až po současnou špičku - oficiálně schválený standard AES (=šifra Rijndael). Proč nebyl použit pouze standard AES, když je médii i odborníky prezentován jako vynikající? Z jednoduchého důvodu. V jedné diskuzi se vyskytl názor, že americká vláda ovlivňuje vývojáře šifrovacích algoritmů tak, aby je bylo možné prolomit i bez klíče. Uvedu příklad: zdrojový kód sice neprokáže, že by se klíč nějak do zašifrovaného souboru ukládal, ale co když platí nějaká na první pohled nepoznatelná závislost? Například, že když prvních 16 bajtů je lichých, tak je první bit klíče 0 a podobně. Dotyčný účastník diskuze mi poslal odkaz na článek, kde byly uvedeny konkrétní případy, kdy byli vývojáři algoritmu ovlivněni tak, aby umožnili vládě jednoho diktaturychtivého státu data kdykoli dešifrovat i bez klíče. Jsme-li dostatečně opatrní, musíme připustit, že těžko ověříme, zda současné šifrovací standardy neposkytují zadní vrátka některé diktatuře, která by se vymluvila na "ochranu před teroristy", nebo na něco podobného. Z toho důvodu program MCA používá velmi kvalitních šifer 18 a to by v tom byl čert, aby alespoň jedna z nich nebyla mimo kontrolu agentů :-) Toto pojetí je trochu paranoidní, ale jinými slovy to lze shrnout, že když z jakéhokoli důvodu selže jeden algoritmus, jsou ještě další v záloze. Program MCA používá současně následující šifrovací algoritmy: Rijndael (současný šifrovací mezinárodně uznávaný standard), MARS, RC6, Serpent, TwoFish (všechny finalisté kandidatury na AES), CAST256 (kandidát na AES), Blowfish, Cast128, DES, Tripple DES, ICE, ThinICE, ICE2, IDEA (použit ve známém šifrovacím programu PGP), MISTY1, RC2, RC5, TEA Výběr šifer je bohatý a většina jmen naznačuje, že program MCA je díky jejich použití velmi kvalitní. Stručný popis ovládání programu MCA Vytvoření archívu Vytvoření archívu je možné provést v záložce "Create empty archive". V levé horní části uživatel vybírá jméno archívu, v pravé části volí jeho velikost (pozor - u většího množství souborů počítejte s tím, že sektory se alokují po 256 bajtech - nechte si tedy rezervu, kterou můžete po archivaci všech souborů vyplnit náhodnými čísly) a samotné vytvoření archívu se provede tlačítkem "Create archive" (zároveň dojde k vytvoření mapy archívu). Zašifrování dat Ještě v záložce "Create empty archive" má možnost uživatel vybrat, které šifry se použijí. Doporučuji použít všechny. Program usnadní vybrání pouze kandidátů na AES, finalistů AES a pouze AES. Jedním stiskem tlačítka lze též označit všechny algoritmy, nebo naopak jejich označení zrušit. Po výběru šifer je nutno přepnout do záložky "Add files to archive". Zvolte archív, do kterého budete přidávat soubory, v kolonce "Target archive name". Zadejte heslo pro přístup ke klíči. Pokud budete klíč považovat za veřejný, nechte heslo prázdné (pozor: absence hesla neznamená, že není třeba klíč, viz dále!). Do kolonky "Key identification" můžete napsat komentář k souboru, ke kterému bude klíč vygenerován, například popis a verzi produktu, který šifrujete. Tuto položku můžete nechat prázdnou. V tuto chvíli silně doporučuji nechat vyškrtnutou volbu "Use pseudorandom generator". Pro vygenerování klíče je bezpodmínečně nutné, aby byl skutečně náhodný a nikoli pseudonáhodný, jaké jsou generátory programovacích jazyků. V levé části formuláře zvolte soubor, který chcete zašifrovat. Zašifrování a přidání do archívu provedete tlačítkem "Add file(s)". Při stisku tohoto tlačítka budete pravděpodobně požádáni programem o pomoc při generaci náhodných čísel pro vygenerování klíče. To spočívá pouze v tom, že budete chvíli jezdit myší po ploše, což postačí k vygenerování opravdu náhodných čísel a nikoli jen pseudonáhodných. Toto je jediný způsob, jak získat skutečně náhodná čísla bez hardwarového RND generátoru (tento způsob je použit například ve špičkovém šifrovacím programu PGP). Program ale náhodná čísla generuje po dobu celého svého běhu, proto je možné, že pokud jste program déle nastavovali, nebude při prvním šifrování žádná žádost o hýbání myší zobrazena. Program MCA spolupracuje se známým programem pro generování náhodných čísel ExternalRND. Pokud budete šifrovat více souborů, nastavte opět parametry pro jejich zašifrování (heslo, identifikace) a znovu použijte tlačítko "Add file(s)". Jakmile máte všechny soubory v archívu, je třeba provést ještě dvě věci. První z nich je vyplnění archívu náhodnými čísly. Buď můžete zaplnit jen určitou část, nebo jej můžete vyplnit celý. Zde již doporučuji zapnout pseudonáhodný generátor, jelikož ruční generování by zdržovalo běh programu. Pokud pseudonáhodný generátor zapomenete aktivovat na formuláři, můžete tak učinit i na ploše ručního generátoru. Druhým a posledním krokem po zašifrování všech souborů je smazání nepotřebné mapy tlačítkem "Delete map file". V tu chvíli již do archívu nemůžete přidávat další soubory ani v případě, že ještě nebyl zaplněn. Nyní je už pouze na administrátorovi archívu, jak a komu rozdělí přístupové klíče k jednotlivým souborům. Nezapomeňte, že jakmile bude klíč ztracen, není žádná možnost obnovit původní data z archívu. Pro případ odcizení klíče je důležité zadat kvalitní heslo, které by mělo ochránit data i tehdy, má-li útočník klíč k dispozici. Vynechávejte heslo pouze pro soubory, které jsou opravdu veřejné. Pozor: to, že pro soubor nezadáte heslo, neznamená, že není třeba klíč! Heslo je pouze pojistka, nebo "poslední záchrana", pro případy odcizeného klíče, samotné ukládání do archívu na něm není závislé (je - samozřejmě, ale jen okrajově). Dešifrování dat Nejprve zvolte v levých panelech klíče, které budou použity k dešifrování souborů. Označený klíč přidáte do seznamu tlačítkem "Get key from source panel" v panelu "Key files". Seznam klíčů můžete smazat tlačítkem "Clear key list". Jakmile zvolíte všechny klíče pro všechny soubory, které chcete z archívu extrahovat, změňte filtr v panelu "Source archive" na "MultiCryptedArchive file", čímž se zobrazí pouze archívy. Požadovaný archív v panelu "Source archive" označte. Jako poslední krok zvolte v panelu "Target directory" adresář, kam budou dešifrované soubory extrahovány. Tlačítkem "Extract archive" spustíte dešifrování souborů. Pro každý klíč budete vyzváni k zadání hesla a k zadání jména dešifrovaného souboru. Jako defaultní název je nabídnuto původní jméno souboru s cestou, kterou jste zvolili v panelu "Target directory". Program MCA ohlásí chybu, pokud dojde díky nesprávnému klíči nebo heslu k odkazu mimo prostor archívu, ale úmyslně není podporován žádný kontrolní kód detekující poškození archívu. Předpokládá se šifrování zkomprimovaných archívů, které toto zabezpečení mají, a proto je absence podobného mechanismu v programu MCA obrovskou překážkou pro případné útočníky, kteří tak nemají jakoukoli možnost ověřit, zda se jim podařilo šifru prolomit, či zda jejich pokus skončil neúspěšně. Ukázka V adresáři Ukazka\ se nachází demonstrační archív, který obsahuje dva soubory. Klíče k oběma souborům se nachází ve stejném adresáři. Oba soubory jsou šifrovány bez použití hesla. Závěr Produkt zajistí tak dobré zabezpečení souborů, že v případě volby správného hesla a ochránění tajného klíče před útočníky není prakticky šance na získání utajovaných dat. Další výhodou tohoto programu je možnost vytvořit archív tak, že k různým souborům mají uživatelé přístup podle toho, zda jim administrátor archívu poskytl klíč k dešifrování. Program je samozřejmě volně šiřitelný, lze jej zdarma používat i šířit za předpokladu, že jsou dodrženy licenční podmínky ZOA. Program nemá žádné zvláštní nároky na hardware a funguje na všech třicetidvoubitových Windows.