VPN WireGuard inkluzivita en Linukso-kerno 5.6

Hodiaŭ Linus movis la net-sekvan branĉon kun VPN-interfacoj al si WireGuard. Pri ĉi tiu evento raportis en la dissendolisto WireGuard.

VPN WireGuard inkluzivita en Linukso-kerno 5.6

Kodkolekto por la nova Linukso 5.6 kerno estas nuntempe daŭranta. WireGuard estas rapida venontgeneracia VPN kiu efektivigas modernan kriptografion. Ĝi estis origine evoluigita kiel pli simpla kaj pli oportuna alternativo al ekzistantaj VPN-oj. La aŭtoro estas kanada specialisto pri informa sekureco Jason A. Donenfeld. En aŭgusto 2018, WireGuard ricevis laŭdon de Linus Torvalds. Ĉirkaŭ tiu tempo, laboro komenciĝis inkludi VPN en la Linukso-kerno. La procezo daŭris iom pli longe.

"Mi vidas, ke Jason faris peton por inkluzivi WireGuard en la kerno," Linus skribis la 2-an de aŭgusto 2018. — Ĉu mi povas denove deklari mian amon al ĉi tiu VPN kaj esperi baldaŭ kunfandiĝon? La kodo eble ne estas perfekta, sed mi rigardis ĝin, kaj kompare kun la teruraĵoj de OpenVPN kaj IPSec, ĝi estas vera artaĵo."

Malgraŭ la deziroj de Linus, la fuzio daŭris dum jaro kaj duono. La ĉefa problemo montriĝis ligita al proprietaj efektivigoj de kriptografiaj funkcioj, kiuj estis uzataj por plibonigi rendimenton. Post longaj intertraktadoj en septembro 2019 ĝi estis kompromisa decido estis farita traduki diakilojn al la funkcioj de Crypto API disponeblaj en la kerno, al kiuj la programistoj de WireGuard havas plendojn en la kampo de rendimento kaj ĝenerala sekureco. Sed ili decidis apartigi la indiĝenajn kriptajn funkciojn de WireGuard en apartan malaltnivelan Zinc-API kaj eventuale porti ilin al la kerno. En novembro, la kernaj programistoj plenumis sian promeson kaj konsentis translokigi parton de la kodo de Zinc al la ĉefa kerno. Ekzemple, en la Crypto API inkluzivita rapidaj efektivigoj de la ChaCha20 kaj Poly1305-algoritmoj preparitaj en WireGuard.

Fine, la 9-an de decembro 2019, David S. Miller, respondeca pri la interkonekta subsistemo de la Linukso-kerno, akceptis al la reto-sekva branĉo flikiloj kun la efektivigo de VPN-interfaco de la WireGuard-projekto.

Kaj hodiaŭ, la 29-an de januaro 2020, la ŝanĝoj iris al Linus por inkluzivi en la kerno.

VPN WireGuard inkluzivita en Linukso-kerno 5.6

Asertataj avantaĝoj de WireGuard super aliaj VPN-solvoj:

  • Facile uzebla.
  • Uzas modernan kriptografion: Brua protokola kadro, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, ktp.
  • Kompakta, legebla kodo, pli facile esplorebla pri vundeblecoj.
  • Alta rendimento.
  • Klara kaj ellaborita specifo.

La tuta kernlogiko de WireGuard okupas malpli ol 4000 liniojn de kodo, dum OpenVPN kaj IPSec postulas centojn da miloj da linioj.

"WireGuard uzas la koncepton de ĉifrada ŝlosilvojigo, kiu implikas alkroĉi privatan ŝlosilon al ĉiu reto-interfaco kaj uzi publikajn ŝlosilojn por kunligi ĝin. 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 Kadro pri Brua Protokolosimila 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 reagordo de la kliento, - li skribas Opennet.

Por ĉifrado estas uzata stream ĉifro ChaCha20 kaj mesaĝo-aŭtentikiga algoritmo (MAC) Poly1305, dizajnita fare de Daniel Bernstein (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 uzata en la efektivigo Curve25519, ankaŭ proponita fare de Daniel Bernstein. La algoritmo uzata por hashing estas BLAKE2s (RFC7693)".

Результаты agado-testoj de la oficiala retejo:

Bandlarĝo (megabit/s)
VPN WireGuard inkluzivita en Linukso-kerno 5.6

Ping (ms)
VPN WireGuard inkluzivita en Linukso-kerno 5.6

Testa agordo:

  • Intel Core i7-3820QM kaj Intel Core i7-5200U
  • Gigabit-kartoj Intel 82579LM kaj Intel I218LM
  • Linukso 4.6.1
  • WireGuard Agordo: 256-bita ChaCha20 kun Poly1305 por MAC
  • Unua IPsec-agordo: 256-bita ChaCha20 kun Poly1305 por MAC
  • Dua IPsec-agordo: AES-256-GCM-128 (kun AES-NI)
  • OpenVPN-Agordo: AES 256-bita ekvivalenta ĉifro kun HMAC-SHA2-256, UDP-reĝimo
  • Efikeco estis mezurita uzante iperf3, montras la averaĝan rezulton dum 30 minutoj.

En teorio, post kiam integrite en la retan stakon, WireGuard devus funkcii eĉ pli rapide. Sed fakte ĉi tio ne nepre estos la kazo pro la transiro al la kriptaj funkcioj de Crypto API konstruitaj en la kernon. Eble ne ĉiuj el ili ankoraŭ estas optimumigitaj al la rendimento-nivelo de indiĝena WireGuard.

"El mia vidpunkto, WireGuard estas ĝenerale ideala por la uzanto. Ĉiuj malaltnivelaj decidoj estas faritaj en la specifo, do la procezo de preparado de tipa VPN-infrastrukturo daŭras nur kelkajn minutojn. Estas preskaŭ neeble fuŝi la agordon - skribis sur Habré en 2018. — Instala procezo priskribita detale en la oficiala retejo, mi ŝatus aparte noti la bonegan OpenWRT-subteno. Ĉi tiu facileco de uzo kaj kompakteco de la kodbazo estis atingitaj per forigo de la distribuado de ŝlosiloj. Ne ekzistas kompleksa atestsistemo kaj ĉi tiu tuta kompania teruro; mallongaj ĉifradaj ŝlosiloj estas distribuitaj tre kiel SSH-ŝlosiloj."

La projekto WireGuard disvolviĝas ekde 2015, ĝi estas reviziita kaj formala konfirmo. WireGuard-subteno estas integrita en NetworkManager kaj systemd, kaj kernaj pecetoj estas inkluzivitaj en la bazaj distribuoj de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph kaj ALT.

fonto: www.habr.com

Aldoni komenton