Egy új VPN implementáció, a WireGuard került be a FreeBSD kódbázisába.

A FreeBSD forrásfa a VPN WireGuard új implementációjával frissült, amely a FreeBSD és a WireGuard fő fejlesztőcsapatai által közösen készített kernelmodul kódon alapul Jason A. Donenfeld, a VPN WireGuard szerzője és John H. Baldwin közreműködésével. a GDB és a FreeBSD jól ismert fejlesztője, aki a 2000-es évek elején implementálta az SMP és NUMA támogatását a FreeBSD kernelben. Miután az illesztőprogramot elfogadtuk a FreeBSD-be (sys/dev/wg), a fejlesztés és a karbantartás ezentúl a FreeBSD repository-ban történik.

A kód elfogadása előtt a FreeBSD Foundation támogatásával teljes körűen áttekintették a változtatásokat, melynek során elemezték a meghajtó interakcióját a kernel többi alrendszerével, valamint a kernel által biztosított kriptográfiai primitívek használatának lehetőségét is. értékelésre került.

A meghajtó által igényelt kriptográfiai algoritmusok használatához kibővült a FreeBSD kernel kripto-alrendszer API-ja, amelyhez egy kábelköteg került, amely lehetővé teszi a FreeBSD-ben nem támogatott algoritmusok használatát a szabványos crypto-API-n keresztül, a szükséges algoritmusokat a libsodium könyvtárból. A meghajtóba épített algoritmusok közül csak a Blake2 hash-ek számítására szolgáló kód maradt meg, mivel ennek az algoritmusnak a FreeBSD-ben biztosított megvalósítása fix hash-mérethez van kötve.

Emellett a felülvizsgálati folyamat során kódoptimalizálásra is sor került, amely lehetővé tette a többmagos CPU-k terheléselosztásának hatékonyságának növelését (a csomagtitkosítási és visszafejtési feladatok CPU-magokhoz való hozzárendelésének egységes kiegyensúlyozása biztosított). Ennek eredményeként a csomagok feldolgozása során a többletköltség közel volt a Linux illesztőprogram megvalósításához. A kód azt is lehetővé teszi, hogy az ossl illesztőprogramot használja a titkosítási műveletek felgyorsítására.

A korábbi, a WireGuard FreeBSD-be való integrálásának kísérletétől eltérően az új megvalósítás a szabványos wg segédprogramot használja, nem pedig az ifconfig módosított változatát, amely lehetővé teszi a konfiguráció egységesítését Linuxon és FreeBSD-n. A wg segédprogram és az illesztőprogram is benne van a FreeBSD forráskódjában, amit a wg kód licencének megváltoztatása tett lehetővé (a kód már MIT és GPL licenc alatt is elérhető). A WireGuard FreeBSD-be való beépítésére utoljára 2020-ban próbálkoztak, de botrányba végződött, aminek következtében a már hozzáadott kódot eltávolították az alacsony minőség, a pufferekkel való gondatlan munka, a csonkok használata ellenőrzések helyett, a hiányos implementáció miatt. a protokoll megsértése és a GPL licenc megsértése.

Emlékeztetünk arra, hogy a VPN WireGuard modern titkosítási módszereken alapul, nagyon nagy teljesítményt nyújt, könnyen használható, bonyodalmaktól mentes, és számos nagy telepítésben bizonyult, amelyek nagy mennyiségű forgalmat dolgoznak fel. A projektet 2015 óta fejlesztik, és átesett az alkalmazott titkosítási módszerek auditján és hivatalos ellenőrzésén. A WireGuard a titkosítási kulcs-útválasztás koncepcióját használja, amely magában foglalja egy privát kulcs csatolását minden hálózati interfészhez, és azt használja a nyilvános kulcsok összekapcsolására.

A nyilvános kulcsok cseréje az SSH-hoz hasonló módon történik a kapcsolat létrehozása érdekében. A kulcsok egyeztetéséhez és a csatlakozáshoz anélkül, hogy külön démon futna a felhasználói térben, a Noise Protocol Framework Noise_IK mechanizmusát használják, hasonlóan az SSH-ban az engedélyezett_kulcsok karbantartásához. Az adatátvitel UDP-csomagokba történő tokozással történik. Támogatja a VPN-kiszolgáló IP-címének megváltoztatását (roaming) a kapcsolat megszakítása nélkül az automatikus ügyfél-újrakonfigurálással.

A titkosítás a ChaCha20 adatfolyam-rejtjelet és a Daniel J. Bernstein, Tanja Lange és Peter Schwabe által kifejlesztett Poly1305 üzenet-hitelesítési algoritmust (MAC) használja. A ChaCha20 és a Poly1305 az AES-256-CTR és a HMAC gyorsabb és biztonságosabb analógjai, amelyek szoftveres megvalósítása lehetővé teszi a rögzített végrehajtási idő elérését speciális hardveres támogatás nélkül. A megosztott titkos kulcs létrehozásához az elliptikus görbe Diffie-Hellman protokollt használják a Curve25519 megvalósításban, amelyet Daniel Bernstein is javasolt. A kivonatoláshoz a BLAKE2s algoritmust (RFC7693) használják.

Forrás: opennet.ru

Hozzászólás