VPN WireGuard ได้รับการยอมรับในสาขา net-next และมีกำหนดที่จะรวมไว้ในเคอร์เนล Linux 5.6

เดวิด มิลเลอร์ (เดวิด เอส. มิลเลอร์) รับผิดชอบระบบย่อยเครือข่ายของเคอร์เนล Linux ได้รับการยอมรับ ไปยังสาขาสุทธิถัดไป แพทช์ ด้วยการใช้งานอินเทอร์เฟซ VPN จากโครงการ WireGuard. ต้นปีหน้า การเปลี่ยนแปลงที่สะสมในสาขา net-next จะเป็นพื้นฐานสำหรับการเปิดตัว Linux kernel 5.6

ความพยายามที่จะพุชโค้ด WireGuard ลงในเคอร์เนลหลักนั้นเกิดขึ้นในช่วงไม่กี่ปีที่ผ่านมา แต่ก็ยังไม่ประสบความสำเร็จเนื่องจากการเชื่อมโยงกับการใช้งานฟังก์ชันการเข้ารหัสที่เป็นกรรมสิทธิ์ซึ่งใช้เพื่อปรับปรุงประสิทธิภาพ เริ่มแรกฟังก์ชั่นเหล่านี้คือ เสนอ สำหรับเคอร์เนลเป็น Zinc API ระดับต่ำเพิ่มเติม ซึ่งสามารถแทนที่ Crypto API มาตรฐานได้ในที่สุด

หลังจากการอภิปรายในการประชุม Kernel Recipes ผู้สร้าง WireGuard ในเดือนกันยายน ได้ทำการตัดสินใจประนีประนอม ถ่ายโอนแพตช์ของคุณเพื่อใช้ Crypto API ที่มีอยู่ในคอร์ ซึ่งนักพัฒนา WireGuard มีข้อร้องเรียนในด้านประสิทธิภาพและความปลอดภัยทั่วไป มีการตัดสินใจที่จะพัฒนา Zinc API ต่อไป แต่เป็นโครงการแยกต่างหาก

ในเดือนพฤศจิกายน นักพัฒนาเคอร์เนล ไปกันเถอะ เพื่อตอบสนองต่อการประนีประนอมและตกลงที่จะโอนโค้ดบางส่วนจาก Zinc ไปยังเคอร์เนลหลัก โดยพื้นฐานแล้ว ส่วนประกอบ Zinc บางส่วนจะถูกย้ายไปยังแกนกลาง แต่ไม่ใช่ในฐานะ API แยกต่างหาก แต่เป็นส่วนหนึ่งของระบบย่อย Crypto API เช่น Crypto API อยู่แล้ว รวมอยู่ด้วย การใช้งานอัลกอริธึม ChaCha20 และ Poly1305 ที่รวดเร็วใน WireGuard

ในส่วนที่เกี่ยวข้องกับการส่งมอบ WireGuard ที่เป็นแกนหลักซึ่งเป็นผู้ก่อตั้งโครงการที่กำลังจะมาถึง ประกาศ เกี่ยวกับการปรับโครงสร้างพื้นที่เก็บข้อมูล เพื่อให้การพัฒนาง่ายขึ้น พื้นที่เก็บข้อมูล "WireGuard.git" แบบเสาหิน ซึ่งได้รับการออกแบบให้แยกออกจากกัน จะถูกแทนที่ด้วยพื้นที่เก็บข้อมูลสามแห่งที่แยกจากกัน ซึ่งเหมาะกว่าสำหรับการจัดระเบียบงานด้วยโค้ดในเคอร์เนลหลัก:

  • wireguard-linux.git - แผนผังเคอร์เนลที่สมบูรณ์พร้อมการเปลี่ยนแปลงจากโครงการ Wireguard แพตช์ซึ่งจะได้รับการตรวจสอบเพื่อรวมไว้ในเคอร์เนลและถ่ายโอนไปยังสาขา net/net-next เป็นประจำ
  • wireguard-tools.git - พื้นที่เก็บข้อมูลสำหรับยูทิลิตี้และสคริปต์ที่ทำงานในพื้นที่ผู้ใช้ เช่น wg และ wg-quick พื้นที่เก็บข้อมูลสามารถใช้เพื่อสร้างแพ็คเกจสำหรับการแจกจ่าย
  • wireguard-linux-compat.git - พื้นที่เก็บข้อมูลที่มีโมดูลหลากหลาย ซึ่งจัดหาแยกต่างหากจากเคอร์เนลและรวมถึงเลเยอร์ compat.h เพื่อให้แน่ใจว่าเข้ากันได้กับเคอร์เนลรุ่นเก่า การพัฒนาหลักจะดำเนินการในพื้นที่เก็บข้อมูล wireguard-linux.git แต่ตราบใดที่ผู้ใช้มีโอกาสและความต้องการ แพตช์เวอร์ชันแยกต่างหากก็จะได้รับการสนับสนุนในรูปแบบการทำงานด้วย

เราขอเตือนคุณว่า VPN WireGuard ได้รับการปรับใช้บนพื้นฐานของวิธีการเข้ารหัสที่ทันสมัย ​​ให้ประสิทธิภาพสูงมาก ใช้งานง่าย ไม่มีความยุ่งยาก และได้พิสูจน์ตัวเองแล้วในการปรับใช้ขนาดใหญ่จำนวนมากที่ประมวลผลการรับส่งข้อมูลจำนวนมาก โครงการได้รับการพัฒนามาตั้งแต่ปี 2015 ได้รับการตรวจสอบและ การตรวจสอบอย่างเป็นทางการ วิธีการเข้ารหัสที่ใช้ การสนับสนุน WireGuard ได้รับการรวมเข้ากับ NetworkManager และ systemd แล้ว และแพตช์เคอร์เนลจะรวมอยู่ในการกระจายฐาน Debian ไม่เสถียร, Mageia, อัลไพน์, Arch, Gentoo, OpenWrt, NixOS, subgraph и ALT.

WireGuard ใช้แนวคิดของการกำหนดเส้นทางคีย์เข้ารหัส ซึ่งเกี่ยวข้องกับการแนบคีย์ส่วนตัวกับแต่ละอินเทอร์เฟซเครือข่าย และใช้เพื่อผูกคีย์สาธารณะ มีการแลกเปลี่ยนกุญแจสาธารณะเพื่อสร้างการเชื่อมต่อในลักษณะเดียวกันกับ SSH หากต้องการเจรจาคีย์และเชื่อมต่อโดยไม่ต้องรัน daemon แยกต่างหากในพื้นที่ผู้ใช้ กลไก Noise_IK จาก กรอบโปรโตคอลเสียงรบกวนคล้ายกับการรักษา allowance_keys ใน SSH การส่งข้อมูลจะดำเนินการผ่านการห่อหุ้มในแพ็กเก็ต UDP รองรับการเปลี่ยนที่อยู่ IP ของเซิร์ฟเวอร์ VPN (โรมมิ่ง) โดยไม่ต้องตัดการเชื่อมต่อและกำหนดค่าไคลเอนต์ใหม่โดยอัตโนมัติ

สำหรับการเข้ารหัส เคย รหัสสตรีม ชะชะช่า 20 และอัลกอริทึมการตรวจสอบข้อความ (MAC) Poly1305ออกแบบโดยแดเนียล เบิร์นสไตน์ (แดเนียล เจ. เบิร์นสไตน์), ทันย่า แลงจ์
(ทันยา แลงจ์) และปีเตอร์ ชวาเบ ChaCha20 และ Poly1305 อยู่ในตำแหน่งอะนาล็อกที่เร็วและปลอดภัยยิ่งขึ้นของ AES-256-CTR และ HMAC การใช้งานซอฟต์แวร์ซึ่งช่วยให้ได้รับเวลาดำเนินการคงที่โดยไม่ต้องใช้การสนับสนุนฮาร์ดแวร์พิเศษ ในการสร้างคีย์ลับที่ใช้ร่วมกัน จะใช้โปรโตคอล Diffie-Hellman เส้นโค้งวงรีในการใช้งาน Curve25519เสนอโดย Daniel Bernstein เช่นกัน อัลกอริธึมที่ใช้สำหรับการแฮชคือ เบลค2s (RFC7693).

ที่ การทดสอบ ประสิทธิภาพ WireGuard แสดงให้เห็นถึงปริมาณงานที่สูงขึ้น 3.9 เท่าและการตอบสนองที่สูงขึ้น 3.8 เท่าเมื่อเปรียบเทียบกับ OpenVPN (AES 256 บิตพร้อม HMAC-SHA2-256) เมื่อเปรียบเทียบกับ IPsec (256-bit ChaCha20+Poly1305 และ AES-256-GCM-128) WireGuard จะแสดงการปรับปรุงประสิทธิภาพเล็กน้อย (13-18%) และเวลาแฝงที่ต่ำกว่า (21-23%) การทดสอบดำเนินการโดยใช้อัลกอริธึมการเข้ารหัสที่พัฒนาโดยโครงการอย่างรวดเร็ว - การถ่ายโอนไปยังเคอร์เนล Crypto API มาตรฐานอาจทำให้ประสิทธิภาพแย่ลง

VPN WireGuard ได้รับการยอมรับในสาขา net-next และมีกำหนดที่จะรวมไว้ในเคอร์เนล Linux 5.6

ที่มา: opennet.ru

เพิ่มความคิดเห็น