Nova efektivigo de VPN WireGuard aldonita al FreeBSD-kodbazo

La fontarbo de FreeBSD estis ĝisdatigita kun nova efektivigo de VPN WireGuard, surbaze de kernmodulkodo komune produktita de la kernaj disvolvaj teamoj de FreeBSD kaj WireGuard kun kontribuoj de Jason A. Donenfeld, verkinto de VPN WireGuard, kaj John H. Baldwin ), bonkonata programisto de GDB kaj FreeBSD, kiu efektivigis subtenon por SMP kaj NUMA en la FreeBSD-kerno en la fruaj 2000-aj jaroj. Post kiam la ŝoforo estas akceptita en FreeBSD (sys/dev/wg), ĝia evoluo kaj prizorgado estos nun faritaj en la deponejo de FreeBSD.

Antaŭ ol la kodo estis akceptita, plena revizio de la ŝanĝoj estis farita kun la subteno de la FreeBSD Foundation, dum kiu la interago de la ŝoforo kun la resto de la kernaj subsistemoj ankaŭ estis analizita kaj la ebleco uzi kriptografajn primitivojn provizitajn de la kerno. estis taksita.

Por uzi la kriptajn algoritmojn postulatajn de la ŝoforo, la API de la kripto-subsistemo de la kerno FreeBSD estis etendita, al kiu aldoniĝis jungilaro kiu permesas la uzon de algoritmoj ne subtenataj en FreeBSD per la norma kripta-API, uzante la efektivigon de la necesaj algoritmoj de la libsodium biblioteko. El la algoritmoj enkonstruitaj en la ŝoforo, nur la kodo por kalkuli Blake2-haŝojn restas, ĉar la efektivigo de ĉi tiu algoritmo provizita en FreeBSD estas ligita al fiksa hashgrandeco.

Krome, dum la revizioprocezo, koda optimumigo estis efektivigita, kio ebligis pliigi la efikecon de ŝarĝo-distribuo sur plurkernaj CPUoj (unuforma ekvilibro de la asigno de pakaĵetaj ĉifrado kaj deĉifrado taskoj al CPU-kernoj estis certigita). Kiel rezulto, la supra kosto dum prilaborado de pakaĵetoj estis proksima al tiu de la Linuksa ŝoforo efektivigo. La kodo ankaŭ disponigas la kapablon uzi la ossl-ŝoforon por akceli ĉifradajn operaciojn.

Male al la antaŭa provo integri WireGuard en FreeBSD, la nova efektivigo uzas la norman wg-servaĵon, prefere ol modifitan version de ifconfig, kiu ebligas unuigi la agordon en Linukso kaj FreeBSD. La wg-utilo, same kiel la ŝoforo, estas inkluzivitaj en la FreeBSD-fontokodo, kiu estis ebligita per ŝanĝado de la permesilo por la wg-kodo (la kodo nun haveblas sub la MIT kaj GPL-licencoj). La lasta provo inkludi WireGuard en FreeBSD estis farita en 2020, sed finiĝis en skandalo, rezulte de kiu la jam aldonita kodo estis forigita pro malaltkvalita, senzorga laboro kun bufroj, uzo de stumpoj anstataŭ ĉekoj, nekompleta efektivigo. de la protokolo kaj malobservo de la GPL-licenco.

Ni memorigu vin, ke VPN WireGuard estas efektivigita surbaze de modernaj ĉifradmetodoj, provizas tre altan rendimenton, estas facile uzebla, libera de komplikaĵoj kaj pruvis sin en kelkaj grandaj disfaldoj, kiuj prilaboras grandajn volumojn de trafiko. La projekto disvolviĝas ekde 2015, kaj spertis revizion kaj formalan konfirmon de la uzataj ĉifradmetodoj. WireGuard uzas la koncepton de ĉifrada ŝlosilvojigo, kiu implikas alkroĉi privatan ŝlosilon al ĉiu retinterfaco kaj uzi ĝin por ligi la publikajn ŝlosilojn.

Publikaj ŝlosiloj estas interŝanĝitaj por establi konekton en simila maniero al SSH. Por negoci ŝlosilojn kaj konekti sen ruli apartan demonon en uzantspaco, la mekanismo Noise_IK de la Noise Protocol Framework estas uzata, simile al konservado de rajtigitaj_ŝlosiloj en SSH. Transdono de datumoj estas efektivigita per enkapsuligo en UDP-pakaĵoj. Ĝi subtenas ŝanĝi la IP-adreson de la VPN-servilo (roaming) sen malkonekti la konekton kun aŭtomata kliento-reagordo.

Ĉifrado uzas la ChaCha20-fluan ĉifron kaj la Poly1305-mesaĝon-aŭtentikig-algoritmon (MAC), evoluigitan fare de Daniel J. Bernstein, Tanja Lange kaj Peter Schwabe. ChaCha20 kaj Poly1305 estas poziciigitaj kiel pli rapidaj kaj sekuraj analogoj de AES-256-CTR kaj HMAC, kies programaro efektivigas ebligas atingi fiksan ekzekuttempon sen la uzo de speciala aparatara subteno. Por generi komunan sekretan ŝlosilon, la elipsa kurbo Diffie-Hellman-protokolo estas uzita en la Curve25519-efektivigo, ankaŭ proponita fare de Daniel Bernstein. La algoritmo de BLAKE2s (RFC7693) estas uzata por haĉado.

fonto: opennet.ru

Aldoni komenton