Viename serveryje klientai kuriam laikui užstringa ir tada vėl prisijungia, o kitas iš karto atmeta ryšius su pranešimu apie rakto dydį. Jie atrodo kaip skirtingos klaidos, o tai ta pati klaida, nukreipta priešingomis kryptimis. Rankos paspaudimo kriptografija turi kainą, kuri auga su parametrų dydžiu, ir turi apatinę ribą, žemiau kurios šiuolaikinės bibliotekos nenuėina. Medžiagos dydžio nustatymas yra kontrolinis sąrašas, o pirmas punktas – nuspręsti, kuri iš dviejų klaidų iš tikrųjų yra pas jus.

Perskaitykite gedimą prieš ką nors generuodami iš naujo

Laikas pasako didžiąją dalį. Rankos paspaudimas, kuris trunka kelias sekundes ir tada miršta, paprastai reiškia, kad skaičiavimas viršijo partnerio kantrybę, o tai rodo per didelius techninei įrangai arba laiko limitui parametrus. Tiesioginis atmetimas, nurodantis rakto ar grupės dydį, rodo priešinga kryptimi – į medžiagą, kurios biblioteka visiškai nepriims.

Šiems dviem reikia priešingų pataisų, ir būtent čia dauguma bandymų suklysta. 8192 bitų parametrų generavimas iš naujo klientui, kuris jau atmetė mažą grupę, pablogina lėtą atvejį ir nieko nedaro greitam. Užsirašykite, kokį simptomą matėte, prieš liesdami failą.

Tada patikrinkite, ko prašoma iš partnerio. Serveris, sukonfigūruotas didelei baigtinio lauko grupei, verčia kiekvieną klientą eikvoti tą patį procesoriaus laiką per kiekvieną pakartotinį derinimąsi, ne tik jungiantis. Jei problema pasireiškia reguliariu intervalu, o ne paleidžiant, tas intervalas yra stiprus požymis, kuri nuostata brangi. Pakartotinis derinimasis kartoja visą skaičiavimą, todėl kas valandą pasikartojantis užstrigimas paprastai yra ta pati kaina, sumokėta dar kartą.

Lėtas atvejis: medžiaga, kurios techninė įranga neįperka

Diffie-Hellman ir RSA darbas sparčiai auga su rakto dydžiu, ir visa tai vyksta prieš tuneliu pradedant tekėti bet kokiam srautui. Mažame maršrutizatoriuje ar mažos galios kliente pakankamai didelė grupė gali pastūmėti mainus už kitos pusės laiko limito, todėl ryšys bando dar kartą arba tiesiog atrodo užstrigęs be jokios klaidos.

Pataisa – nusileisti iki dydžio, kurį palaiko kiekvienas partneris ir kurį kiekvienas įrenginys gali patogiai apskaičiuoti. 2048 bitų RSA raktas ir 2048 bitų grupė išlieka plačiai suderinama bazinė linija; didesnis padeda tik tada, kai visos pusės sutinka ir procesorius gali tai sumokėti per kiekvieną pakartotinį derinimąsi. Viskas virš šios bazinės linijos yra sąmoningas mainas, o ne atnaujinimas.

Dydis nėra rezultatas, o didžiausias skaičius palyginimo lentelėje nėra automatiškai teisingas pasirinkimas. Pasirinkite mažiausią vertę, kurią leidžia jūsų politika ir kurią priima visi partneriai, tada išmatuokite rankos paspaudimą, o ne darykite prielaidą, kad jis pagerėjo. Mažesnė grupė, kuri vis tiek viršija laiką, pasako, kad dydis niekada nebuvo visa istorija.

Greitas atvejis: grupė, kurią biblioteka atmeta

Šiuolaikiniai OpenSSL rinkiniai tiesiog atmeta mažiausias baigtinio lauko grupes, o padidintas saugumo lygis dar labiau pakelia apatinę ribą. Maršrutizatoriaus programinė įranga, turinti dešimtmečių senumo parametrų failą, yra įprastas šaltinis, o simptomas – ryšys, kuris iš karto nepavyksta su pranešimu, nurodančiu grupę arba rakto dydį. Šiame gedime nieko nėra protarpinio, ir būtent tai daro jį lengvai atpažįstamą.

Pakeiskite failą, o ne redaguokite konfigūraciją, kad apeitumėte patikrinimą. Sugeneruokite dabartinę grupę, patikrinkite ją, tada įdiekite ten, kur demonas ją tikrai skaito. Laikykite seną failą, kol klientas sėkmingai prisijungs prie naujo:

openssl dhparam -out /etc/openvpn/ffdhe2048.pem 2048
openssl dhparam -in /etc/openvpn/ffdhe2048.pem -check -noout
ls -l /etc/openvpn/ffdhe2048.pem

Patikrinimo komanda patikrina failą ir, kai jis praeina, nieko naudingo nespausdina; sąrašas patvirtina, kad pakeitėte failą, kurį įkelia paslauga, o ne pasenusią kopiją šalia. Nukreipkite konfigūraciją į tą kelią, paleiskite demoną iš naujo ir patvirtinkite, kad anksčiau nepavykęs klientas dabar baigia rankos paspaudimą.

Jei serveris taip pat nustato saugumo lygį arba sertifikato profilį, perskaitykite juos prieš darydami išvadą, kad grupė buvo neteisinga. Profilis, reikalaujantis griežtesnės klasės, gali atmesti medžiagą, kurią būtų priėmęs numatytasis, o tos nuostatos pašalinimas yra siauresnis pokytis nei visuotinis patikrinimo išjungimas.

Pasirinkite dydį partneriui ir techninei įrangai

Išsiaiškinkite, ką gali pakelti tolimasis galas, prieš generuodami ką nors egzotiško. Įrenginys, per senas 2048 bitų grupei, yra keistinas įrenginys, nes serverio nukreipimas į silpnesnę grupę tik paverčia suderinamumo skundą triktimi. Ilgalaikės pataisos juda naujesnės programinės įrangos, o ne senesnių parametrų link. Kiekviena laikina išimtis šioje srityje turi būdą tapti nuolatine konfigūracija.

Kai serverio procesorius yra riba, pakeiskite algoritmą, o ne nusileiskite žemiau politikos. Elipsinės kreivės raktų mainai, tokie kaip X25519 yra žymiai pigesni nei didelė baigtinio lauko grupė ir plačiai palaikomi, todėl jie yra geresnis atsakymas į našumo skundą nei mažesnis RSA modulis.

Kad ir ką pasirinktumėte, išbandykite vienu tikru ryšiu ir stebėkite, kiek trunka rankos paspaudimas, o ne tik ar galiausiai prisijungia. Ryšys, kuris pavyksta per dvylika sekundžių, turi tą pačią pagrindinę priežastį kaip ir tas, kuris nepavyksta per penkiolika.

Užrašykite pasirinkimą, kad perstatymas negalėtų jo panaikinti

Laikykite parametrų failą konfigūracijos valdymo sistemoje ir šalia parašykite dydį, priežastį ir datą. Perstatytas serveris, kuris tyliai generuoja savo numatytąsias reikšmes, yra būdas, kuriuo ta pati klaida grįžta po šešių mėnesių, ir niekas negali paaiškinti pirminio sprendimo.

Užrašykite tą pačią informaciją prie galinio taško ir profilio, kad peržiūra neturėtų jos atkurti iš failo dydžio. Kai kitas ryšys užstrigs, ta pastaba yra skirtumas tarp penkių minučių patikrinimo ir naujo tyrimo. Ji taip pat neleidžia kitam inžinieriui išspręsti lėto atvejo pataisa, skirta greitam.

Susiję straipsniai