Mozno je čas na zmenu spôsobu podpisovania správ. Napríklad takto:
Podpisovaná správa sa skomprimuje nejakým silne kompresným algoritmom typu bzip2 alebo podobným. Tento kompresný algoritmus nesmie generovať žiadne "jalové dáta", ktoré na dekomprimovanú podobu dokumentu nemajú žiadny vplyv. Skomprimovaná správa sa potom rozseká na niekoľko rôzne veľkých blokov, pričom treba dať pozor na to, aby tieto rozseknutia neboli presne na miestach, kde použitý kompresný algoritmus rozsekol výstupný dátový prúd (napríklad bzip2 algoritmus generuje "rozsekaný" výstup). Pre každý z týchto blokov sa vygeneruje hash. Tieto hashe sa spolu s príslušnými dĺžkami blokov, informáciami o použitom kompresnom algoritme a dĺžkou neskomprimovanej podoby dokumentu zašifrujú príslušným súkromným kľúčom a priložia k skomprimovanej správe.
Kontrola sa vykoná tak, že sa dešifruje podpis, vypočítajú hashe blokov a porovnajú s uloženými, ak niektorý nesedí, chyba. Potom sa program s použitím uložených informácií o použitom kompresnom algoritme pokúsi dokument dekomprimovať. Ak sa mu to nepodarí alebo síce dokument úspešne dekomprimuje ale ostanú nejaké nespotrebované dáta, opäť chyba.
Silu zabezpečenia je možné meniť zmenou počtu fragmentov na ktoré sa skomprimovaný dokument rozseká (čím viac, tým lepšie).
Myslím, že tento formát podpísaných dokumentov by nebolo také jednoduché prelomiť ako štandardný "spočítať hash a priložiť". Útočník by totiž musel nájsť kolidujúci blok, ktorý má nielen rovnakú hash ale aj rovnakú dĺžku ako príslušný pôvodný blok a navyše musí byť platným fragmentom výstupu použitého kompresného algoritmu, ktorý "zapadne" na príslušné miesto. A navyše nový fragment musí vygenerovať presne toľko bajtov ako pôvodný (inak nebude sedieť dĺžka dekomprimovaného dokumentu uložená v podpise).
Chcel by som vidieť maniaka, ktorému sa podarí toto prelomiť.
Je síce pravda, že podpisovanie a overovanie v tomto formáte je pomalé ale pokiaľ ide o dokumenty, ktoré predstavujú napríklad niekoľkomiliónové kontrakty, tých pár CPU cyklov navyše mi za tú zvýšenú dôveryhodnosť podpisu rozhodne stojí.
Problém je v tom, že tvůrci nebo oprašovači informačních systémů nejsou ochotni změnit vůbec nic, pokud to přímo neohrožuje jejich byznys a byznys jejich zaměstnavatelů. Navrhovaná úprava by pro tyhle lidi byla nepřijatelná. Ony jsou už navrženy jiné hašovací funkce i nové varianty norem pro digitální podpis, ale nikdo je nechce nasazovat. Přesto, že ty staré mají chyby, které jsou popsané, uznané a mnohdy nebezpečné. Nejdůležitější je kompatibilita - a každá změna ji trochu narušuje, i když (některé) systémy se změnou různých funkcí (jako je šifrovací algoritmus, hašovací,....) už nějakou dobu počítají. Třeba pro certifikační autoritu nebo pro Microsoft je záměna hašovací funkce jen otázkou změny identifikátoru. Ale co ty softy, které na to navazují ? Je sice hezké, že CA nebo MS změní identifikátor, ale ty návazné softy musí také ty nové funkce zapracovat, aby tomu identifikátoru rozuměly, atd. atd.... A všechno se točí jen kolem prachů. Bezpečnost? To nevydělává. Něco tam dejte, ať to hlavně moc nestojí a nějak to zařiďte....
> Problém je v tom, že tvůrci nebo oprašovači informačních
> systémů nejsou ochotni změnit vůbec nic, pokud to přímo
> neohrožuje jejich byznys a byznys jejich zaměstnavatelů.
Hm. Toto ma nenapadlo. Myslím si, že máte pravdu. Najmä čo sa všelijakého closed-source softwaru týka. Viem si celkom dobre predstavit, že ten software upraviť pre nové podmienky jednoducho nepôjde (sám vyvíjam software a tiež sa mi niečo podobné stalo - po určitom čase sa mi projekt "zasekol" a jediná možnosť ako v tom pokračovať bolo celý ho odznova prepísať).
> Navrhovaná úprava by pro tyhle lidi byla nepřijatelná.
> Ony jsou už navrženy jiné hašovací funkce i nové
> varianty norem pro digitální podpis, ale nikdo je nechce
> nasazovat. Přesto, že ty staré mají chyby, které jsou
> popsané, uznané a mnohdy nebezpečné.
Pokým na to nedoplatia. Keď vďaka tomuto prístupu dôjde k obrovským škodám, nasadzovanie bude pravdepodobne vynútené zákonom. Začínam si spomínať na to, že pravdepodobne ide o typický "americký syndróm". Podobne Amíci pristupujú aj k otázkam bezpečnosti (najprv musí zomrieť niekoľko ľudí, až potom sa s bezpečnosťou systému, ktorý je za to zodpovedný, začne niečo robiť).
> Ale co ty softy, které na to navazují ? Je sice hezké,
> že CA nebo MS změní identifikátor, ale ty návazné softy
> musí také ty nové funkce zapracovat, aby tomu
> identifikátoru rozuměly, atd. atd.... A všechno se točí
> jen kolem prachů. Bezpečnost? To nevydělává. Něco tam
> dejte, ať to hlavně moc nestojí a nějak to zařiďte....
Open source sa prispôsobí ľahko (ako to tu bolo už x-krát naznačené, u väčšiny open source projektov peniaze nehrajú až takú významnú rolu ako v prípade typických proprietárných produktov) a proprietary software nás príliš trápiť nemusí. Napokon to možno dopadne tak, že v tejto oblasti open source nechá svojích proprietárnych rivalov beznádejne vzadu :) M$ sa možno bude pokúšať niečo proti Open Source riešiť s pomocou patentov ale keď dané patentované algoritmy zastarajú skôr ako stihnú tohoto ich súpera významne poškodiť, nezostane im iné ako s vyplazeným jazykom doháňať.
Záver: Uvedené vysvetlenie považujem za viac ako dostatočné.
Mám ešte jednu otázku. Nechajme bokom otázky o financiách a "ochote niečo meniť" a sústreďme sa na metódu ako takú. Nakoľko to bude odolné? Aká je šanca, že útočník môže úspešne zneužiť kryptograficku slabinu nejakej hash funkcie použitej pri podpisovaní, keď formát podpisu bude ako bolo už predtým naznačené?