Blowfish: definicija in lastnosti simetrične blokovne šifre

V kriptografiji je Blowfish simetrična blokovna šifra s ključem, ki jo je leta 1993 oblikoval Bruce Schneier. Od izdaje je bila vključena v številne izdelke in knjižnice za šifriranje. Blowfish je znan po dobri hitrosti pri programski implementaciji in do poznejšega obdobja (do približno leta 2008) ni bil predmet uspešnih javno znanih kriptoanalitičnih zlomov za celotno, zaokroženo različico algoritma. Kljub temu so mu v naslednjih letih postopoma začeli slediti novejši algoritmi, predvsem AES ter Schneierjev kasnejši Twofish.

Zasnova in osnovne lastnosti

Blowfish je 16-krogna Feistelova šifra z velikostjo bloka 64 bita in spremenljivo dolžino ključa od 0 do 448 bitov. Ključna zasnova vključuje velik P-array (18 32-bitnih vrednosti) in štiri velike S-polja (vsako z 256 elementi po 32 bitov), ki so odvisna od ključa in močno vplivajo na delovanje zamenjalne funkcije (F-funkcije). Ta kombinacija P-polja in S-polj omogoča zapleten razpored ključev in ne-linearnost, kar prispeva k odpornosti šifre proti nekaterim tehnikam kriptoanalize.

Glavne prednosti Blowfisha so:

  • brezplačna uporaba in odsotnost patentnih omejitev;
  • visoka hitrost pri šifriranju in dešifriranju v programski opremi;
  • prilagodljivost dolžine ključa, ki omogoča močne ključe do 448 bitov.

Razpored ključev in izvajanje

Ena od specifičnih lastnosti Blowfisha je počasen in računsko zahteven razpored ključev (key schedule). Pred uporabo določenega ključa je potrebno izvesti inicializacijo P-polja in S-polj z zaporedjem metod, ki vključuje večkratno šifriranje konstantnih vrednosti. Ta inicializacija traja sorazmerno dolgo — v praksi je čas, potreben za pripravo novega ključa, primerljiv s časom šifriranja nekaj kilobajtov podatkov. Zaradi tega Blowfish ni primeren za aplikacije, kjer se ključi pogosto menjajo ali kjer so omejene strojne zmogljivosti (na primer zgodnje pametne kartice in nekateri vgrajeni sistemi).

Vendar pa je prav ta počasnejši razpored ključev v nekaterih primerih zaželen: na primer, metoda za šifriranje gesel, ki izhaja iz Blowfisha in jo uporablja OpenBSD (znana kot bcrypt), izkorišča počasno pripravo ključa kot način upočasnitve slovarskih in grobih silnih napadov.

Varnost in kriptoanalize

Po strukturi je Blowfish soroden šifri CAST-128 (oba uporabljata Feistelovo strukturo), vendar ima Blowfish dinamična S-polja, medtem ko CAST-128 uporablja fiksne. Do konca prvega desetletja 21. stoletja ni bilo objavljenih prepričljivih uspehov za zlom celotnih 16 krogov Blowfisha z razumnimi sredstvi — edini praktičen način je bil pregled s grobo silo (brute force), čeprav je seveda odvisen od dolžine ključa.

V raziskavah varnosti so bile vseeno identificirane teorije in omejitve:

  • Leta 1996 je Serge Vaudenay predstavil konceptualne napade, ki kažejo na določene ranljivosti v nekaterih poenostavljenih ali nepravilno implementiranih različicah algoritma ter je opozoril na obstoj razreda šibkih ključev. Ti rezultati poudarjajo pomen pravilne inicializacije in zavarovane implementacije S-polj.
  • Vincent Rijmen je raziskoval diferencialne tehnike in pokazal, da je mogoče z določenimi metodami vplivati na manjše število krogov (na primer do štirih krogov), vendar za polno 16-krogno različico ni bil podan praktičen napad, ki bi jo zlomil.
  • Pomembno opozorilo za sodobno rabo: Blowfish uporablja 64-bitne bloke. To pomeni, da pri šifriranju večjih količin podatkov v nekaterih načinah delovanja (modes of operation) pride do omejitev zaradi rojstvenega paradoksa (birthday bound) — za zelo velike količine podatkov je priporočljivo uporabljati algoritme z večjimi bloki (npr. AES z 128-bitnim blokom) ali načine, ki preprečijo ponavljanja blokov.

Uporabe in omejitve

Blowfish je bil in je še vedno uporabljen v številnih aplikacijah zaradi svoje hitrosti v programski implementaciji in odsotnosti patentnih omejitev. Kljub temu ima nekaj omejitev, zaradi katerih ga sodobne rešitve pogosto izločijo:

  • počasna inicializacija ključa, ki omejuje uporabo tam, kjer so pogoste menjave ključev ali zelo omejeni viri;
  • 64-bitni blok, kar pri zelo velikih količinah podatkov poveča tveganje za konflikte blokov in zato ni priporočljivo za nekatere sodobne scenarije;
  • za nove aplikacije je pogosto priporočljiv AES ali drugi sodobni algoritmi (npr. Twofish), ki ponujajo boljše lastnosti glede varnosti in zmogljivosti v strojni opremi.

Zgodovina in licenca

Schneier je Blowfish razvil kot odprt algoritem za splošno uporabo z namenom nadomestitve starega DES in odprave pomanjkljivosti tedanjih lastniških šifer. Schneier je javno navedel: "Blowfish ni patentiran in bo to ostal v vseh državah. Algoritem je s tem postavljen v javno domeno in ga lahko vsakdo prosto uporablja."

Sklepne misli

Blowfish je zgodovinsko pomembna in praktična blokovna šifra z inovativno zasnovo S-polj in razporeda ključev ter zlasti koristna v situacijah, kjer so prednosti njene hitrosti in odprte narave pomembnejše od omejitev (npr. 64-bitnega bloka ali počasne inicializacije ključa). Za nove sisteme in aplikacije, kjer sta zahtevana dolgotrajna varnost in skalabilnost pri velikih količinah podatkov, pa se danes priporočata algoritma AES ali druge sodobne alternative; Schneier sam je pozneje predstavil in priporočal tudi Twofish.

Sorodne strani

Vprašanja in odgovori

V: Kaj je Blowfish?


O: Blowfish je simetrična blokovna šifra s ključem, ki jo je leta 1993 ustvaril Bruce Schneier. Od takrat je bila vključena v številne izdelke za šifriranje.

V: Za kaj je bil ustvarjen Blowfish?


O: Blowfish je bil narejen kot algoritem za splošno uporabo, da bi nadomestil stari algoritem DES ter odpravil težave in probleme drugih algoritmov za šifriranje.

V: Kako dolg je lahko ključ za Blowfish?


O: Dolžina ključa za Blowfish je lahko od 0 do 448 bitov.

V: Katere so nekatere značilnosti zasnove Blowfisha?


O: Nekatere značilnosti zasnove vključujejo od ključa odvisna polja S in zelo zapleten razpored ključev.

V: Ali je znana kakšna kriptoanaliza različice Blowfisha s polnim krogom?


O: Od leta 2008 ni znan noben način za razbitje polnih 16 krogov, razen iskanja z grobo silo.

V: Kakšno vrsto napada na Blowfish je odkril Serge Vaudenay?


O: Serge Vaudenay je odkril napad z znanim besedilom, ki za zlom potrebuje 28r + 1 znanih besedil, pri čemer je r število krogov. Našel je tudi razred šibkih ključev, ki jih je mogoče odkriti in zlomiti s tem istim napadom z le 24r + 1 znanimi odprtimi besedili.

V: Ali Bruce Schneier zdaj priporoča uporabo ključa Twofish namesto Blowfish?


O: Da, Bruce Schneier priporoča uporabo Twofisha namesto Blowfisha zaradi njegovih izboljšanih varnostnih ukrepov v primerjavi s starejšimi algoritmi, kot je DES, ali celo novejšimi, kot je AES.

AlegsaOnline.com - 2020 / 2025 - License CC3