Pse një çelës më i gjatë Blowfish nuk e rregullon një bllok 64-bit
Çelësat Blowfish mund të arrijnë 448 bit ndërsa blloku mbetet 64 bit. Kontrolloni shifrën e negociuar dhe planifikoni një zëvendësim të mbështetur në vend të një çelësi më të gjatë.
Një profil VPN ofron Blowfish me një çelës 448-bit, dhe dikush propozon përdorimin e çelësit më të gjatë për ta mbajtur shifrën. Gjatësia e çelësit është reale, por është numri i gabuar për t'u optimizuar. Blowfish transformon blloqe 64-bit pavarësisht sa i gjatë është çelësi, dhe gjerësia e bllokut është ajo që kufizon sa trafik mund të mbrojë në mënyrë të sigurt një çelës. Ekzekutoni kontrollet më poshtë me radhë dhe ndaloni te e para që e shkarkon shërbimin, sepse një hap i mëvonshëm nuk mund të rregullojë një të mëparshëm.
Kontrolloni çfarë negociojnë në të vërtetë palët
Lexoni shifrën e kanalit të të dhënave nga të dy skajet, jo nga profili që kishit ndërmend të vendosni. Një konfigurim klienti mund të listojë disa shifra, dhe ajo e zgjedhura është rezultat i negocimit midis dy implementimeve dhe versioneve të tyre. Rritni nivelin e detajeve të regjistrit në një lidhje prove dhe lexoni rreshtin e kanalit të të dhënave, i cili emërton shifrën dhe madhësinë e çelësit të inicializuar në të vërtetë.
Nëse shifra e negociuar është AES-GCM ose ChaCha20-Poly1305, ndaloni këtu. Këto konstruksione përdorin një bllok 128-bit dhe autentikojnë ngarkesën, kështu që argumenti për përplasjet 64-bit më poshtë nuk vlen për to.
Ndani gjatësinë e çelësit nga gjerësia e bllokut
Blowfish pranon çelësa nga 32 deri në 448 bit, dhe dokumentacioni i autorit të algoritmit i rendit të dy numrat veçmas. Çelësi është sekreti; blloku është njësia e transformimit. Një sekret më i gjatë e vështirëson hamendësimin dhe nuk bën asgjë për gjerësinë e bllokut që përpunon shifra.
Në modalitetin CBC, shifra zbatohet mbi blloqe me gjerësi fikse, të zinxhiruara me bllokun e mëparshëm të tekstit të shifruar dhe të mbushura në fund. Për Blowfish kjo gjerësi është 64 bit, ose tetë bajt. Orari i çelësave mund të jetë aq i madh sa të doni; zinxhiri prapëseprapë avancon tetë bajt në çdo herë.
Kjo është arsyeja pse një çelës më i gjatë nuk është zbutje. Ai adreson forcën brutale kundër çelësit, ndërsa rreziku i përplasjes më poshtë është veti e gjerësisë së bllokut dhe e modalitetit.
Zbatoni aritmetikën e ditëlindjes mbi madhësinë e bllokut
Një bllok 64-bit ka një shkallë ditëlindjeje prej rreth 2^32 blloqesh të shifruara nën një çelës para se përplasjet të bëhen të mundshme. Çdo bllok mbart tetë bajt, kështu që e njëjta shkallë është rreth 2^35 bajt, ose 32 GiB të dhëna nën një çelës të vetëm.
Trajtojeni si shkallë, jo si kuotë. Përplasjet janë probabilistike, dhe nëse njëra zbulon diçka varet nga modaliteti, modeli i trafikut dhe nëse sulmuesi mund të njohë ose të ndikojë në tekstin e qartë përreth. Bajti i parë përtej 32 GiB nuk është ngjarje dekriptimi, dhe 32 GiB e para nuk janë certifikuar si të sigurta.
Studiuesit e Sweet32 demonstruan në 2016 sulme praktike kundër shifrave bllok 64-bit, përfshirë një skenar OpenVPN, në kushte që kërkonin vëzhkim dhe gjenerim trafiku. Cilësimet e tyre të paracaktuara dhe versionet e softuerit të publikuara janë kontekst historik, jo një përshkrim i vendosjes tuaj.
Vendosni nëse ripërdorimi i CBC ka rëndësi këtu
Në CBC, një bllok i përsëritur i tekstit të shifruar do të thotë që dy blloqet e tekstit të qartë ndryshojnë sipas një marrëdhënieje të njohur, sepse XOR-i i zinxhirit anulohet. Një sulmues që mund të vëzhgojë tekstin e shifruar dhe njeh ose mund të ndikojë në njërin prej teksteve të qarta mund të rikuperojë informacion për tjetrin. Çelësi Blowfish nuk nevojitet kurrë për këtë.
Pra pyetjet përkatëse janë sa kohë qëndron një çelës në shërbim, sa trafik kalon nën të dhe nëse dikush mund ta vëzhgojë dhe drejtojë atë trafik. Ripërtëritja e çelësave ul numrin e blloqeve për çelës, por një interval kohor nuk është kufi bajtësh: një tunel i zënë mund të lëvizë shumë më tepër të dhëna sesa një i papunë në të njëjtën orë. Nëse mbani një shifër të vjetër, nxirrni kufirin nga konstruksioni dhe vëllimi aktual, jo nga një numër i rrumbullakët.
Nëse vëllimi i matur për çelës mbetet shumë nën shkallën e ditëlindjes, ekspozimi është më i vogël. Ai prapëseprapë nuk është zero dhe është ende një arsye për të planifikuar një migrim në vend të ndalimit së shqetësuari.
Zëvendësoni shifrën, jo çelësin
Zhvendosni shërbimin në një shifër AEAD të mbështetur dhe konfirmoni që të dyja palët, versionet e tyre dhe backend-et e tyre kriptografike mund ta negociojnë atë. Një çelës Blowfish më i gjatë nuk ndryshon asgjë që ka rëndësi, dhe hamendësimi i një direktive të re në një klient është mënyra se si një tunel funksional bëhet i prishur. Testoni ndryshimin në një klient dhe një server përpara se të prekni pjesën tjetër të flotës. Mbani profilin e vjetër të disponueshëm për kthim pas derisa shifra e re të kalojë një cikël të plotë lidhjeje.
Mbani verifikimin e certifikatave dhe vërtetimin e llogarive gjatë ndryshimit. Ato përgjigjen pyetjeve të ndryshme: një hyrje e suksesshme nuk mund të zgjerojë një bllok, dhe një shifër më e mirë e të dhënave nuk justifikon besimin te serveri i gabuar.
Mbyllni kontrollin duke lexuar përsëri shifrën e negociuar në një lidhje të re dhe më pas duke konfirmuar që shifra e vjetër nuk pranohet më. Nëse një palë ende e ofron atë, migrimi nuk ka përfunduar, çfarëdo që thotë profili në anën tjetër.