วันนี้ Linus ย้ายสาขา net-next ที่มีอินเทอร์เฟซ VPN ไปไว้ที่ตัวเขาเอง
การรวบรวมโค้ดสำหรับเคอร์เนล Linux 5.6 ใหม่กำลังดำเนินการอยู่ WireGuard เป็น VPN ยุคใหม่ที่รวดเร็วที่ใช้การเข้ารหัสสมัยใหม่ เดิมทีได้รับการพัฒนาให้เป็นทางเลือกที่ง่ายและสะดวกกว่าสำหรับ VPN ที่มีอยู่ ผู้เขียนคือ Jason A. Donenfeld ผู้เชี่ยวชาญด้านความปลอดภัยข้อมูลชาวแคนาดา ในเดือนสิงหาคม 2018 WireGuard
“ฉันเห็นว่า Jason ได้ส่งคำขอดึงเพื่อรวม WireGuard ไว้ในเคอร์เนล” Linus เขียนเมื่อวันที่ 2 สิงหาคม 2018 — ฉันสามารถประกาศความรักต่อ VPN นี้อีกครั้งและหวังว่าจะมีการควบรวมกิจการในเร็วๆ นี้ได้หรือไม่? โค้ดอาจไม่สมบูรณ์แบบ แต่ฉันลองดูแล้ว และเมื่อเทียบกับความน่าสะพรึงกลัวของ OpenVPN และ IPSec แล้ว มันเป็นงานศิลปะที่แท้จริง”
แม้ว่า Linus จะปรารถนา แต่การควบรวมกิจการก็ดำเนินไปเป็นเวลาหนึ่งปีครึ่ง ปัญหาหลักกลายเป็นว่าเชื่อมโยงกับการใช้งานฟังก์ชันการเข้ารหัสที่เป็นกรรมสิทธิ์ซึ่งใช้เพื่อปรับปรุงประสิทธิภาพ หลังจากการเจรจากันอย่างยาวนานในเดือนกันยายน 2019 ก็เป็นเช่นนั้น
ในที่สุด เมื่อวันที่ 9 ธันวาคม 2019 David S. Miller รับผิดชอบระบบย่อยเครือข่ายของเคอร์เนล Linux
และวันนี้วันที่ 29 มกราคม 2020 การเปลี่ยนแปลงไปที่ Linus เพื่อรวมไว้ในเคอร์เนล
ข้อได้เปรียบที่อ้างสิทธิ์ของ WireGuard เหนือโซลูชัน VPN อื่น ๆ:
- ง่ายต่อการใช้.
- ใช้การเข้ารหัสที่ทันสมัย: กรอบโปรโตคอลเสียงรบกวน, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF ฯลฯ
- โค้ดขนาดกะทัดรัด อ่านง่าย ตรวจสอบช่องโหว่ได้ง่ายขึ้น
- ประสิทธิภาพสูง
- ชัดเจนและซับซ้อน
สเปค .
ตรรกะหลักทั้งหมดของ WireGuard ใช้โค้ดน้อยกว่า 4000 บรรทัด ในขณะที่ OpenVPN และ IPSec ต้องใช้โค้ดหลายแสนบรรทัด
“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) '
ผลการวิจัย
แบนด์วิธ (เมกะบิต/วินาที)
ปิง (มิลลิวินาที)
การกำหนดค่าการทดสอบ:
- Intel Core i7-3820QM และ Intel Core i7-5200U
- การ์ด Gigabit Intel 82579LM และ Intel I218LM
- Linux 4.6.1
- การกำหนดค่า WireGuard: ChaCha256 20 บิตพร้อม Poly1305 สำหรับ MAC
- การกำหนดค่า IPsec แรก: ChaCha256 20 บิตพร้อม Poly1305 สำหรับ MAC
- การกำหนดค่า IPsec ที่สอง: AES-256-GCM-128 (พร้อม AES-NI)
- การกำหนดค่า OpenVPN: ชุดการเข้ารหัสเทียบเท่า AES 256 บิตพร้อม HMAC-SHA2-256, โหมด UDP
- วัดประสิทธิภาพโดยใช้
iperf3
แสดงผลเฉลี่ยตลอด 30 นาที
ตามทฤษฎีแล้ว เมื่อรวมเข้ากับสแต็กเครือข่ายแล้ว WireGuard ควรทำงานเร็วยิ่งขึ้นอีก แต่ในความเป็นจริงแล้ว สิ่งนี้ไม่จำเป็นเสมอไปเนื่องจากการเปลี่ยนไปใช้ฟังก์ชันการเข้ารหัสลับ Crypto API ที่สร้างไว้ในเคอร์เนล บางทีอาจไม่ใช่ทั้งหมดที่ได้รับการปรับให้เหมาะสมกับระดับประสิทธิภาพของ WireGuard ดั้งเดิม
“จากมุมมองของฉัน โดยทั่วไปแล้ว WireGuard นั้นเหมาะสำหรับผู้ใช้ การตัดสินใจระดับต่ำทั้งหมดนั้นกำหนดไว้ในข้อกำหนด ดังนั้นกระบวนการเตรียมโครงสร้างพื้นฐาน VPN ทั่วไปจึงใช้เวลาเพียงไม่กี่นาที แทบจะเป็นไปไม่ได้เลยที่จะทำให้การกำหนดค่าเสียหาย -
เขียน กับฮาเบรในปี 2018 — ขั้นตอนการติดตั้งอธิบายโดยละเอียด บนเว็บไซต์อย่างเป็นทางการ ฉันต้องการแยกหมายเหตุที่ยอดเยี่ยมออกจากกันรองรับ OpenWRT . ความสะดวกในการใช้งานและความกะทัดรัดของฐานโค้ดนี้เกิดขึ้นได้โดยการกำจัดการกระจายคีย์ ไม่มีระบบใบรับรองที่ซับซ้อนและเรื่องน่ากังวลขององค์กรทั้งหมด คีย์เข้ารหัสแบบสั้นมีการกระจายเหมือนกับคีย์ SSH”
โครงการ WireGuard ได้รับการพัฒนามาตั้งแต่ปี 2015 ได้รับการตรวจสอบและ
ที่มา: will.com