Hlavní navigace

Python Cryptography Toolkit (2)

Jakub Matys 21. 2. 2005

V dnešním dílu seriálu o knihovně Python Cryptography Toolkit doděláme hašovací funkce a začneme se zabývat šifrováním dat.

Falšování hašovacího výstupu spočívá v napsání zprávy, která má stejný haš jako originál. V podstatě se jedná o postup pokus-omyl, kdy se musejí přidávat nebo ubírat znaky, aby vznikl kýžený výsledek.

Uvažujme případ, kdy Jana a Petr používají digitální podpisy pro stvrzení své smlouvy. Janin program vypočítá hašovací hodnotu z textu smlouvy a podepíše ji jejím privátním klíčem. Petr by potom mohl podepsat odlišný dokument, který má stejnou hašovací hodnotu. Mohlo by se tedy zdát, že Jana podepsala falešnou smlouvu a nemá šanci prokázat opak.

Pokud má Petr možnost pouze nalézt dvě různé zprávy se stejnou hašovací hodnotou, může podvrženou zprávu změnit, při zachování hodnoty haše, k obrazu svému. Tentokrát je útok pro Petra jednodušší, nicméně Jana se může snažit bránit tím, že před podpisem přidá do smlouvy náhodný řetězec, který poté uchová s digitálním podpisem.

Je možné, že další informace nebudou přesné, a to z důvodů aktualizace (či spíš neaktualizace) dokumentace.

V balíku není implementován žádný „nebezpečný“ algoritmus. Tzn. ani jeden z algoritmů nebyl celý prolomen. Velice bezpečným se zdá algoritmus MD2, který nebyl nikdy (ani z části) prolomen. Velkým neduhem tohoto algoritmu je však jeho rychlost (spíše pomalost), ta činí jen 1250 K/s. Naproti tomu MD4 je mnohem rychlejší – 44 500 K/s, jsou však známy některé částečné útoky na něj. Algoritmus MD4 vytváří tři opakované jednoduché mixovací operace, dva z těchto tří okruhů byly dešifrovány, zatím ale není možné prolomit celý algoritmus. MD5 je zesílená verze algoritmu MD4 se čtyřmi okruhy. MD5 je stále považován za bezpečný. Nyní se však přechází k algoritmu SHA, na který dosud není znám úspěšný útok. V balíku je však MD5 implementován s mírnou optimalizací, a vyvstává tedy otázka, který ze dvou výše uvedených algoritmů použít. Je také možné, že MD5 (rychlost 35 500 K/s) bude v závislosti na procesoru a kompilátoru rychlejší než MD4.

Všechny MDn algoritmy produkují 128-bit haše, SHA produkuje delší – 160-bit – haš, a ten nebyl zatím prolomen. První verze SHA byla relativně náchylná, druhá verze tento problém vyřešila. Kód použitý v tomto balíku je implementací druhé verze (její rychlost je 21 000 K/s). RIPEMD má také 160-bit výstup a pracuje s rychlostí 17 000 K/s.

Crypto.Cipher: Šifrovací algoritmy

Asi každý ví, co to šifrování je. Tak tedy jen ve zkratce: Při šifrování jsou vstupní data transformována určitou metodou (ta záleží na algoritmu) za použití klíče na výstupní zašifrovaná data. Na rozdíl od hašovacích algoritmů je možné zašifrovaná data pomocí klíče snadno rozšifrovat. Bezpečnost algoritmu se samozřejmě určuje podle obtížnosti prolomení šifry bez znalosti klíče. Většina útoků však není moc dokonalá, a tak jedinou „schůdnou“ cestou k prolomení šifry je zkoušet všechny možné klíče. Při tomto brute-force útoku je počet kombinací 2 ** 56 nebo 2 ** 128. 56-bit šifry jsou v současné době považovány za nedostatečné.

Blokové šifry pracují tak, že na vstupu převezmou vícebytová data (většinou 8 nebo 16 bytů) a zašifrují je. Blokové šifry mohou pracovat v různých módech. Nejjednodušší je Electronic Code Book (ECB) mód. V tomto módu je každý blok dat „pouze“ zašifrován, což však může být nebezpečné. V případě, že máme ve výchozích datech nějaké stále se opakující sekvence, budou tyto sekvence také stejně zašifrovány. Schopný útočník může využít tyto bloky dat k získání informací o vstupu.

Pro eliminaci této slabiny jsou v balíku módy, které kombinují vstupní data s již zašifrovanými, čímž se snižuje výskyt opakujících se bloků dat ve výstupu. Těmito módy jsou Cipher Block Chaining (CBC) aCipher FeedBack (CFB). CBC mód pracuje v blocích, a tudíž je jen mírně pomalejší než ECB mód. CFB mód šifruje na bázi byte-by-byte a je mnohem pomalejší než oba předchozí. Tyto módy však navíc požadují inicializační posloupnost dat, tou je řetězec o velikosti jednoho bloku algoritmu, který je předáván funkci new(). V balíku je také použit speciální PGP mód, který je variantou CFB používanou programem PGP.

To by bylo pro dnešek vše, příště se podíváme, jaké že to algoritmy v pycrypto jsou.

Našli jste v článku chybu?

21. 2. 2005 10:49

To mě spíš vadí ten text jako takový. Je moc hezké napsat do úvodu „Je možné, že další informace nebudou přesné“, ale tím se to nezachrání. Faktem je, že zrovna teď, když se řeší bezpečnost různých hašovacích algoritmů, je dost neštastné napsat článek, ve kterém se např. píše, že „Nyní se však přechází k algoritmu SHA, na který dosud není znám úspěšný útok.“

(A 2 ** 56 (navíc psané kurzivou) mě taky tahá za oči, to je opravdu v HTML takový problém napsat 256?)…

21. 2. 2005 17:11

Jasně :-) já to nijak zle nemyslím. Já bych hlavně volil dokončit místo dodělat :-)
Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: Recenze Prostřeno: cirkus postižených

Recenze Prostřeno: cirkus postižených

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Vitalia.cz: Na pečení je nejlepší medovicový med

Na pečení je nejlepší medovicový med

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Lupa.cz: EET v e-shopech? Zdražení a horší komfort

EET v e-shopech? Zdražení a horší komfort

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Vitalia.cz: Manželka je bio, ale na sex moc není

Manželka je bio, ale na sex moc není

120na80.cz: 5 přírodních tipů na bolest v krku

5 přírodních tipů na bolest v krku

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Přejete si číslo účtu na přání?

Přejete si číslo účtu na přání?

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)