Array ( [0] => 15593193 [id] => 15593193 [1] => cswiki [site] => cswiki [2] => Blowfish [uri] => Blowfish [3] => [img] => [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => [oai] => [9] => [is_good] => [10] => [object_type] => [11] => 0 [has_content] => 0 [12] => [oai_cs_optimisticky] => ) Array ( [0] => '''Blowfish''' je [[Symetrická šifra|symetrická]] [[bloková šifra]], navržena roku 1993 [[Bruce Schneier|Brucem Schneierem]] a používána ve značném množství šifrovacích balíků a systémů. Blowfish poskytuje dobrou rychlost šifrování a dodnes není známa efektivní metoda jejího [[kryptoanalýza|prolomení]]. Dnes se ale pozornost přesunuje spíše k [[Advanced Encryption Standard]] (AES). [1] => [2] => Schneier navrhl Blowfish jako obecný [[algoritmus]], zamýšlený jako alternativa k zastarávajícímu [[Data Encryption Standard|DES]], bez problémů a omezení vyskytujících se u jiných algoritmů. V době vydání Blowfish, mnoho dalších návrhů bylo [[Proprietární software|uzavřeným softwarem]], zatíženým [[patent]]y nebo obchodním či vládním tajemstvím. Schneier prohlásil: „Blowfish je nepatentovaný a také tak ve všech zemích zůstane. Algoritmus je tedy [[Volné dílo#Public domain|volným dílem]] a může být volně kýmkoli použit.“ [3] => [4] => Zvláštním rysem návrhu jsou [[S-box]]y závislé na klíči a vysoce komplexní rozvrh užití klíčů. [5] => [6] => == Algoritmus == [7] => Blowfish používá bloky dlouhé 64 bitů a proměnlivou [[Délka klíče|délku klíče]] od 32 až po 448 bitů.{{cite paper [8] => | url=https://www.schneier.com/paper-blowfish-fse.html [9] => | title=Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish) [10] => | author=[[Bruce Schneier]] [11] => | work=[[Fast Software Encryption]], Cambridge Security Workshop Proceedings [12] => | publisher=[[Springer-Verlag]] [13] => | pages=191–204 [14] => | year=1993}} Je 16kolová [[feistelova šifra]] užívající velké na klíči závislé S-boxy. Strukturou podobné [[CAST-128]], která používá fixní S-boxy. [15] => [16] => [[Soubor:Blowfish structure.svg|vlevo|náhled|128px|The Feistelovo schéma Blowfish]] [17] => [[Soubor:BlowfishFFunction.svg|vpravo|250px]] [18] => [19] => Schéma vlevo ukazuje fungování Blowfish. Každá řádka představuje 32 bitů. Algoritmus uchovává dvě pole podklíčů: 18hodnotové P-pole a čtyři 256hodnotové S-boxy. S-boxy přijímají [[8bitový]] vstup a poskytují 32bitový výstup. Každé kolo je použita jedna hodnota P-pole, po posledním kole, každá polovina data bloku je sloučena funkcí [[Exkluzivní disjunkce|XOR]] s jednou ze dvou zbývajících nepoužitých P-hodnot. [20] => [21] => Diagram napravo zobrazuje Blowfish F-funkci. Funkce rozděluje 32bitový vstup na čtyři osmibitové části, tyto části poté používá jako vstup pro S-boxy. Výstup je upraven [[Modulární aritmetika|modulem]] 232 a použita funkce XOR k vytvoření konečného 32bitového výstupu. [22] => [23] => Dešifrování je přesně stejné jako šifrování, kromě toho že P1, P2,…, P18 jsou použity v opačném pořadí. To není tak zřejmé protože xor je komutativní a asociativní funkcí. Běžným omylem je použití opačného pořadí šifrování jako dešifrovací algoritmus (tedy prvně užít xor k P17 a P18 na blok šifrovaného textu, poté užít P-vstupy v opačném pořadí). [24] => [25] => Rozvrh užití klíčů začíná inicializací P-pole a S-boxů hodnotami odvozenými z [[Šestnáctková soustava|šestnáctkového]] zápisu čísla [[Pí (číslo)|pí]], které neobsahuje žádný zřejmý vzor. Tajný klíč je poté, bajt po bajtu, v případě potřeby opakován, použit ve funkci XOR se všemi P-hodnotami v daném pořadí. 64bitový blok nul je poté zašifrován algoritmem. Nový výsledný šifrovaný text nahradí P1 a P2. Stejný šifrovaný text je poté znovu šifrován s novými podklíči, nový výsledný šifrovaný text nahradí P3 a P4. Toto pokračuje, nahrazením všech hodnot P-pole a všech hodnot S-boxů. Celkem Blowfish šifrovací algoritmus proběhne 521krát k vygenerování všech podklíčů, je zpracováno zhruba 4KB dat. [26] => [27] => Protože je P-pole 576 bitů dlouhé a bajty klíče jsou použity funkcí XOR na celých těchto 576 bitech během inicializace, mnoho implementací umožňuje použití klíče do délky 576 bitů. I když je toto technicky možné, 448bitový limit je nastaven aby se zaručilo, že každý bit všech podklíčů bude záviset na každém bitu klíče, jelikož poslední čtyři hodnoty P-pole neovlivňují všechny bity šifrovaného textu. Toto by se mělo brát v úvahu pro implementace s rozdílným počtem kol, ačkoli to zvyšuje odolnost proti vyčerpávajícímu útoku, oslabuje bezpečnost zaručenou přímo algoritmem. A dáno pomalou inicializací šifry s každou změnou klíče, zaručuje přirozenou ochranu proti útokům hrubou silou, což tedy neospravedlňuje použití klíčů delších než 448 bitů. [28] => [29] => uint32_t P[18]; [30] => uint32_t S[4][256]; [31] => [32] => uint32_t f (uint32_t x) { [33] => uint32_t h = S[0][x >> 24] + S[1][x >> 16 & 0xff]; [34] => return ( h ^ S[2][x >> 8 & 0xff] ) + S[3][x & 0xff]; [35] => } [36] => [37] => void encrypt (uint32_t & L, uint32_t & R) { [38] => for (int i=0 ; i<16 ; i += 2) { [39] => L ^= P[i]; [40] => R ^= f(L); [41] => R ^= P[i+1]; [42] => L ^= f(R); [43] => } [44] => L ^= P[16]; [45] => R ^= P[17]; [46] => swap (L, R); [47] => } [48] => [49] => void decrypt (uint32_t & L, uint32_t & R) { [50] => for (int i=16 ; i > 0 ; i -= 2) { [51] => L ^= P[i+1]; [52] => R ^= f(L); [53] => R ^= P[i]; [54] => L ^= f(R); [55] => } [56] => L ^= P[1]; [57] => R ^= P[0]; [58] => swap (L, R); [59] => } [60] => [61] => { [62] => // ... [63] => // inicializace P-pole a S-boxů hodnotami odvozenými od pí; v příkladu vynecháno [64] => // ... [65] => for (int i=0 ; i<18 ; ++i) [66] => P[i] ^= key[i % keylen]; [67] => uint32_t L = 0, R = 0; [68] => for (int i=0 ; i<18 ; i+=2) { [69] => encrypt (L, R); [70] => P[i] = L; P[i+1] = R; [71] => } [72] => for (int i=0 ; i<4 ; ++i) [73] => for (int j=0 ; j<256; j+=2) { [74] => encrypt (L, R); [75] => S[i][j] = L; S[i][j+1] = R; [76] => } [77] => } [78] => [79] => [80] => == Blowfish v praxi == [81] => Blowfish je rychlou [[bloková šifra|blokovou šifrou]], s výjimkou výměny klíčů. Každý nový [[Klíč (kryptografie)|klíč]] vyžaduje preprocessing ekvivalentní zašifrování zhruba 4 kilobajtů textu, což je ve srovnání s jinými blokovými šiframi velmi pomalé. Toto brání použití v některých aplikacích, zatímco u jiných to není problém. [82] => [83] => V jedné z aplikací je pomalá výměna klíčů fakticky výhodou, metoda hašování hesla v [[OpenBSD]] používá algoritmus odvozený od Blowfish, který využívá pomalý rozvrh klíčů. Představa je taková, že nutný dodatečný výpočetní výkon poskytuje ochranu proti slovníkovému útoku. [84] => [85] => Blowfish užívá něco málo přes 4 kilobajty [[Random Access Memory|paměti]]. Takové omezení není problémem ani pro starší počítače, avšak brání použití v nejmenších [[Vestavěný systém|vestavěných systémech]] jako rané [[smartcard]]. [86] => [87] => Blowfish byla jednou z prvních bezpečných blokových šifer, které nebyly zatíženy patenty, a tedy byly pro kohokoli volně k užití. Toto přispělo k její popularitě při užití v kryptografickém softwaru. [88] => [89] => == Slabiny a nástupci == [90] => Blowfish je znám náchylností k útokům na jistou skupinu slabých klíčů.{{Citace elektronické monografie [91] => | url=http://cs.columbusstate.edu/cae-ia/StudentPapers/Y2010_TheFall/StudentPapers_CPSC6126/PaperGonzalezTom.pdf [92] => | nedostupné=ano [93] => | url2=https://api.semanticscholar.org/CorpusID:213194408 [94] => | dostupnost2=PDF online [95] => | title=A Reflection Attack on Blowfish [96] => | autor=Tom Gonzalez [97] => | datum vydání=2007-01 [98] => }} [99] => {{cite web [100] => | url=http://www.iacr.org/archive/fse2007/45930168/45930168.pdf [101] => | title=A New Class of Weak Keys for Blowfish [102] => | author=Orhun Kara and Cevat Manap [103] => | date=March 2007 [104] => | publisher=FSE 2007}} Toto znamená, že uživatelé Blowfish si musejí opatrně vybírat klíče, jelikož existuje skupina klíčů o kterých je známo, že jsou slabé, nebo přejít k modernější alternativě jako třeba [[Advanced Encryption Standard|AES]], [[Salsa20]], či moderní nástupci Blowfish: [[Twofish]] a [[Threefish]]. Bruce Schneier, tvůrce Blowfish, byl v roce 2007 citován: „V tomto bodě, jsem udiven, že se stále užívá. Pokud by se mě někdo zeptal, doporučil bych Twofish.“{{cite web [105] => |url = https://www.computerworld.com.au/article/46254/bruce_almighty_schneier_preaches_security_linux_faithful/ [106] => |title = Bruce Almighty: Schneier preaches security to Linux faithful [107] => |last = Dahna [108] => |first = McConnachie [109] => |date = 2007-12-27 [110] => |work = [[Computerworld]] [111] => |page = 3 [112] => |archiveurl = https://web.archive.org/web/20120603124940/http://www.computerworld.com.au/article/46254/bruce_almighty_schneier_preaches_security_linux_faithful/ [113] => |archivedate = 2012-06-03 [114] => |quote = At this point, though, I'm amazed it's still being used. If people ask, I recommend Twofish instead. [115] => |access-date = 2015-01-29 [116] => |dead-url = ano [117] => |titul = Archivovaná kopie [118] => |datum přístupu = 2015-01-29 [119] => |url archivu = https://web.archive.org/web/20120603124940/http://www.computerworld.com.au/article/46254/bruce_almighty_schneier_preaches_security_linux_faithful/ [120] => |datum archivace = 2012-06-03 [121] => }} [[FAQ]] pro [[GnuPG]] (které zahrnuje Blowfish jako jeden ze svých algoritmů) doporučuje, že by Blowfish neměl být používán k šifrování souborů větších než 4GB.GnuPG FAQ – [http://www.gnupg.org/faq/gnupg-faq.html#define_fish What are Twofish and Blowfish?] {{en}}GnuPG FAQ – [https://gnupg.org/faq/gnupg-faq.html#recommended_ciphers Which ciphers are recommended, and why?] {{en}} [122] => [123] => == Reference == [124] => {{Překlad|en|Blowfish (cipher)|643498801}} [125] => [126] => [127] => == Související články == [128] => * [[Advanced Encryption Standard|AES]] [129] => * [[Twofish]] [130] => [131] => == Externí odkazy == [132] => * {{Commonscat|Blowfish (cipher)}} [133] => * {{cite web [134] => | url=https://www.schneier.com/blowfish.html [135] => | title=The Blowfish Encryption Algorithm [136] => | author=Bruce Schneier}} [137] => * {{cite web [138] => | url=https://www.schneier.com/blowfish-products.html [139] => | title=Products that Use Blowfish [140] => | author=Bruce Schneier}} [141] => * {{cite web [142] => | url=http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html#Blowfish [143] => | title=Standard Cryptographic Algorithm Naming: Blowfish}} [144] => {{Autoritní data}} [145] => [146] => [[Kategorie:Blokové šifry]] [147] => [[Kategorie:Feistelovy šifry]] [] => )
good wiki

Blowfish

Blowfish je symetrická bloková šifra, navržena roku 1993 Brucem Schneierem a používána ve značném množství šifrovacích balíků a systémů. Blowfish poskytuje dobrou rychlost šifrování a dodnes není známa efektivní metoda jejího prolomení.

More about us

About

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'Bruce Schneier','Advanced Encryption Standard','Fast Software Encryption','Computerworld','Twofish','bloková šifra','Springer-Verlag','Šestnáctková soustava','CAST-128','Soubor:Blowfish structure.svg','Soubor:BlowfishFFunction.svg','Exkluzivní disjunkce'