มีการเปิดเผยว่า David S. Miller ผู้รับผิดชอบระบบย่อยเครือข่าย Linux ได้ดำเนินการ แพทช์ด้วย การใช้งานอินเทอร์เฟซ VPN ของโครงการ WireGuard ใน net-next branch ซึ่งในต้นปีหน้าการเปลี่ยนแปลงสะสมในสาขาสุทธิถัดไป พวกเขาจะเป็นพื้นฐานสำหรับรุ่น Linux 5.6
สำหรับคนที่ไม่รู้จัก WireGuard พวกเขาควรรู้ว่าสิ่งนี้ มันคือ VPN ซึ่งดำเนินการบนพื้นฐานของวิธีการเข้ารหัสที่ทันสมัย ให้ประสิทธิภาพสูงมากใช้งานง่าย ไม่ซับซ้อนและได้พิสูจน์ตัวเองแล้วในการปรับใช้จำนวนมากที่รองรับปริมาณการใช้งานจำนวนมาก
เกี่ยวกับ WireGuard
โครงการนี้ได้รับการพัฒนาตั้งแต่ปี 2015 ผ่านการตรวจสอบอย่างเป็นทางการและการตรวจสอบวิธีการเข้ารหัสที่ใช้ การสนับสนุนของ WireGuard ถูกรวมเข้ากับ NetworkManager และ systemd แล้ว และแพทช์เคอร์เนลเป็นส่วนหนึ่งของการแจกแจงพื้นฐานของ Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph และ ALT
WireGuard ใช้แนวคิดของการกำหนดเส้นทางคีย์เข้ารหัส ซึ่งเกี่ยวข้องกับการผูกคีย์ส่วนตัวกับอินเทอร์เฟซเครือข่ายแต่ละอันและใช้เพื่อผูกคีย์สาธารณะ การแลกเปลี่ยนกุญแจสาธารณะเพื่อสร้างการเชื่อมต่อทำได้โดยการเปรียบเทียบกับ SSH
ในการต่อรองคีย์และเชื่อมต่อโดยไม่ต้องเริ่ม daemon แยกต่างหากในพื้นที่ผู้ใช้ ใช้กลไก Noise_IK ของ Noise Protocol Frameworkคล้ายกับการดูแลรักษาคีย์ที่ได้รับอนุญาตใน SSH ข้อมูลถูกส่งผ่านการห่อหุ้มในแพ็คเก็ต UDP รองรับการเปลี่ยนที่อยู่ IP ของเซิร์ฟเวอร์ VPN (โรมมิ่ง) โดยไม่รบกวนการเชื่อมต่อและกำหนดค่าไคลเอนต์ใหม่โดยอัตโนมัติ
สำหรับการเข้ารหัสจะใช้การเข้ารหัสสตรีม ChaCha20 และอัลกอริธึมการตรวจสอบความถูกต้องของข้อความ Poly1305 (MAC) นี้อยู่ในตำแหน่งที่เร็วกว่าและปลอดภัยกว่าอะนาล็อกของ AES-256-CTR และ HMAC ซึ่งการใช้งานซอฟต์แวร์ช่วยให้บรรลุเวลาดำเนินการคงที่โดยไม่ต้องรองรับฮาร์ดแวร์พิเศษ
หลังจากนั้นไม่นาน WireGuard ก็จะรวมอยู่ใน Linux
มีการพยายามโปรโมตหลายครั้ง รหัสของ WireGuard ภายใน Linux แต่พวกเขาไม่ประสบความสำเร็จเนื่องจากการเชื่อมโยงของการใช้งานฟังก์ชันการเข้ารหัสของตนเองซึ่งถูกนำมาใช้เพื่อเพิ่มผลผลิต
ในตอนแรกฟังก์ชันเหล่านี้ถูกเสนอให้เคอร์เนลเป็น API ระดับต่ำเพิ่มเติมซึ่งสามารถแทนที่ Crypto API ปกติได้ในที่สุด
หลังจากการเจรจาในการประชุมสูตรเคอร์เนล ผู้สร้าง WireGuard ในเดือนกันยายนพวกเขาตัดสินใจประนีประนอมเพื่อเปลี่ยนแพตช์ เพื่อใช้ Crypto core API ซึ่งนักพัฒนา WireGuard มีข้อร้องเรียนในแง่ของประสิทธิภาพและความปลอดภัยทั่วไป
มีการตัดสินใจว่า API จะยังคงพัฒนาต่อไป แต่เป็นโครงการแยกต่างหาก
ต่อมาในเดือนพฤศจิกายนนักพัฒนาเคอร์เนลได้ให้คำมั่นสัญญา และพวกเขาตกลงที่จะโอนรหัสบางส่วนไปยังเคอร์เนลหลัก ในความเป็นจริงส่วนประกอบบางอย่างจะถูกโอนไปยังเคอร์เนล แต่ไม่ใช่เป็น API แยกต่างหาก แต่เป็นส่วนหนึ่งของระบบย่อย Crypto API
ตัวอย่างเช่น Crypto API มีการใช้งานที่รวดเร็วซึ่งจัดเตรียมโดย Wireguard อยู่แล้ว ของอัลกอริทึม ChaCha20 และ Poly1305
เกี่ยวกับการผ่อนชำระ 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 แต่จนถึงขณะนี้ผู้ใช้ยังมีโอกาสและต้องการแพตช์เวอร์ชันแยกต่างหากจะได้รับการสนับสนุนในรูปแบบการทำงาน