Hlavní navigace

Python Cryptography Toolkit (3)

Jakub Matys 28. 2. 2005

V dnešním dílu seriálu o knihovně Python Cryptography Toolkit přímo navážeme na díl minulý - budeme se věnovat šifrování.

Následující blokové šifry jsou k použití v balíku Crypto.Cipher:

Blokové šifry
Šifra Velikost klíče Velikost bloku
AES 16, 24 nebo 32 bytů 16 bytů
ARC2 Volitelná 8 bytů
Blowfish Volitelná 8 bytů
CAST Volitelná 8 bytů
DES 8 bytů 8 bytů
DES3 (Triple DES) 16 bytů 8 bytů
IDEA 16 bytů 8 bytů
RC5 Volitelná 8 bytů

Dalším typem šifer obsaženým v pycrypto jsou „proudové“ (stream) šifry. Tyto šifry pracují znak po znaku. Používají stejné rozhraní jako blokové šifry, délka bloku bude však vždy 1. Jediným použitelným feedback módem pro tento druh šifer je ECB. Pycrypto obsahuje následující proudové šifry:

Proudové šifry
Šifra Délka klíče
ARC4 Volitelná
XOR Volitelná

ARC4 je zkratka pro Alleged RC4 (= domnělý RC4). Ten byl v roce 1994 zaslán na Kyberpunkový mailinglist a do Usenetové konference sci.crypt. Autor tvrdil, že implementoval algoritmus RC4. Podobný anonymní dopis byl odeslán v roce 1996. Byl „objeven“ algoritmus Alleged RC2. Před vysvětlením funkcí a metod si uvedeme krátký příklad:

>>> from Crypto.Cipher import DES
>>> obj=DES.new('abcdefgh', DES.MODE_ECB)
>>> plain="Nějaký rozumný něcoříkající text."
>>> len(plain)
33
>>> obj.encrypt(plain)
Traceback (innermost last):
  File "<stdin>", line 1, in ?
ValueError: Strings for DES must be a multiple of 8 in length
>>> ciph=obj.encrypt(plain+'XXXXXX')
>>> ciph
'!I*\xeb38\x8d"ns\x17L\xef\xc3\xb8p(\x125\x1d\xb3\x8b\xc8\x06\xf0\xb4[9\x92Q\x81c\xd2\x0f\x19J\x0e\x13<Q'

>>> obj.decrypt(ciph)
'Nějaký rozumný něcoříkající text.'

Všechny šifry v balíku sdílejí stejné ovládací rozhraní. Po importování zvoleného balíku jsou k dispozici dvě proměnné a jedna funkce:

new(key, mode[, IV])

Vrací šifrovací objekt, přičemž použije klíč key a feedback mód mode. Pokud se jedná o mód CBC nebo CFB, musí být specifikován další parametr funkce IV. IV je řetězec o stejné délce, jako je velikost bloku. Algoritmus RC5 má skupinu dalších parametrů:

  • version – verze algoritmu použitá programem
  • wordsize – velikost slova – 16 nebo 32 bitů. Větší hodnota je lepší a je defaultně nastavena.
  • rounds – počet okruhů k použití – vyšší číslo znamená větší bezpečnost. Proměnná může nabývat hodnot od 0 do 255, takže můžete volit poměr rychlost-bezpečnost.
block_size
Celočíselná hodnota uvádějící velikost bloků použitých při šifrování. Řetězce, které jsou předávány šifrovacím a dešifrovacím metodám, musí být násobkem této hodnoty. U proudových šifer je hodnota této proměnné 1.
key_size
Celočíselná hodnota – velikost klíčů požadovaných tímto modulem. Jestliže je key_size nastavena na 0, algoritmus akceptuje libovolnou délku klíčů. Není možné předat klíč o délce 0!

Všechny šifrovací objekty mají nejméně tři proměnné. block_size a key_size jsou totožné s výše popsanými proměnnými. IVobsahuje inicializační hodnotu feedback módu. Tato proměnná může poukazovat na původní data, avšak pouze u prvního bloku šifrovaných dat. Dále pak objekty obsahují následující metody:

decrypt(string)
Dešifruje string, vrací řetězec obsahující původní data.
encrypt(string)
Šifruje nenulový řetězec. U obou funkcí platí, že délka řetězce musí být násobkem velikosti bloku, pro proudové šifry však může být jakékoliv délky.
sync()
Tato metoda je určena pouze pro objekty používající PGP feedback mód. Modifikuje IV synchronizací s předchozími zašifrovanými daty.

Na závěr bych uvedl rychlosti jednotlivých algoritmů:

Rychlosti algoritmů
DES 5 100 K/s
DES3 1 830 K/s
IDEA 3 050 K/s
ARC2 2 160 K/s
ARC4 8 830 K/s
Blowfish 9 250 K/s
CAST 2 960 K/s
RC5 2 060 K/s
AES 7 060 K/s

Tak to je pro dnešek vše…

Našli jste v článku chybu?
Lupa.cz: Co se dá měřit přes Internet věcí

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

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

Přehledná titulka, průvodci, responzivita

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: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Root.cz: Pinebook: linuxový notebook za 89 dolarů

Pinebook: linuxový notebook za 89 dolarů

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka