Wireguard FPGA
(github.com/chili-chips-ba)- โปรเจกต์โอเพนซอร์สนี้นำ Wireguard VPN ไปใช้งานบนฮาร์ดแวร์ โดยใช้ Artix7 FPGA ราคาประหยัดและชุดเครื่องมือโอเพนซอร์ส
- จุดเด่นคือให้ ความเร็วใกล้เคียง wire-speed และต้นทุนต่ำ เมื่อเทียบกับแนวทางซอฟต์แวร์แบบเดิม
- ไฟล์ออกแบบทั้งหมดถูก เปิดเผยอย่างสมบูรณ์ ทำให้สามารถตรวจสอบแบ็กดอร์หรือช่องโหว่ด้านความปลอดภัยได้อย่างละเอียด
- อัลกอริทึมเข้ารหัสสมัยใหม่ของ Wireguard อย่าง ChaCha20-Poly1305, Curve25519, BLAKE2 ถูกนำไปใช้ด้วยการผสานฮาร์ดแวร์/ซอฟต์แวร์
- โปรเจกต์นี้ยังอยู่ในระยะเริ่มต้นแบบ "Proof of Concept" และมีแผน ขยายฟังก์ชันและปรับแต่งประสิทธิภาพต่อไป
บทนำและความสำคัญ
โปรเจกต์โอเพนซอร์ส Wireguard FPGA นี้นำ Wireguard VPN ไปใช้งานบนฮาร์ดแวร์ด้วย Artix7 FPGA ราคาประหยัด ทำให้ VPN ซึ่งเป็นองค์ประกอบสำคัญของโครงสร้างพื้นฐานด้านความปลอดภัยเครือข่าย สามารถเข้าถึงได้ด้วยต้นทุนต่ำและความเร็วสูงสุดสำหรับทุกคน ฮาร์ดแวร์โซลูชันแบบเดิมต้องพึ่งพา FPGA เชิงพาณิชย์ราคาสูงและทูลเชนแบบปิด แต่โปรเจกต์นี้แตกต่างอย่างชัดเจนทั้งในด้านความโปร่งใสและการเข้าถึงที่กว้างขึ้น ด้วยการออกแบบและเครื่องมือบนพื้นฐานโอเพนซอร์ส รวมถึงการเปิดเผยซอร์สโค้ดทั้งหมด
ที่มาและเป้าหมายของโปรเจกต์
- OpenVPN, IPSec และโซลูชันเดิมอื่น ๆ มีข้อจำกัดทั้งด้านประสิทธิภาพและการจัดการ ทำให้ Wireguard กำลังกลายเป็นทางเลือกสมัยใหม่ที่ปลอดภัยกว่า
- การนำ Wireguard ไปใช้บนฮาร์ดแวร์ที่มีอยู่ในปัจจุบันยังต้องพึ่งอุปกรณ์ราคาแพงและ IP แบบปิด ขณะที่ประสิทธิภาพของซอฟต์แวร์ก็ยังไปไม่ถึงความเร็วของลิงก์เครือข่าย
- โปรเจกต์นี้สร้าง Wireguard ที่พัฒนาด้วย SystemVerilog เพื่อให้ทุกคนสามารถนำไปใช้บนสภาพแวดล้อม FPGA ราคาประหยัดและโอเพนซอร์สได้ ❨รวมถึงเพื่อการตรวจสอบและการศึกษา❩
การเปรียบเทียบกับโปรเจกต์ที่เกี่ยวข้อง
- โปรเจกต์ Blackwire (ฮาร์ดแวร์ Wireguard ระดับ 100Gbps) ใช้ Alveo U50 ราคาสูงและ Vivado toolchain แบบปิด จึงเข้าถึงได้ยาก
- ทีมของโปรเจกต์นี้เคยพัฒนาโมดูลแกนหลักอย่างอัลกอริทึม Balanced Binary Tree Search มาก่อน แต่พบข้อจำกัดจากความล้มเหลวในการทำเชิงพาณิชย์และปัญหาด้านกรรมสิทธิ์
- โปรเจกต์ Wireguard FPGA เน้นย้ำการใช้ HDL มาตรฐานอุตสาหกรรม (SystemVerilog), การรองรับเครื่องมือโอเพนซอร์ส, ฮาร์ดแวร์ราคาประหยัดสำหรับการใช้งานทั่วไป และนโยบายโอเพนซอร์สที่โปร่งใส
สถาปัตยกรรมฮาร์ดแวร์และซอฟต์แวร์
ฮาร์ดแวร์ (HW)
- Control plane: ซอฟต์ CPU ที่เชื่อมต่อกับ boot ROM และคอนโทรลเลอร์ DDR3 SDRAM รับผิดชอบการจัดการโปรโตคอล Wireguard, การเราต์, การจัดการเซสชัน/คีย์ เป็นต้น
- Data plane: พัฒนาด้วย RTL เพื่อประมวลผลการเข้ารหัส/ถอดรหัสแพ็กเก็ต การเราต์ และการส่งข้อมูลจริงของโปรโตคอล Wireguard ที่ระดับ wire-speed
- องค์ประกอบหลัก
- PHY Controller, 1G MAC, Rx/Tx FIFO, Header Parser, Packet {Dis/As}sembler, โมดูลเข้ารหัส/ยืนยันตัวตน ChaCha20-Poly1305, เอนจิน IP Lookup เป็นต้น
- โมดูลเข้ารหัสและยืนยันตัวตนทั้งหมดถูกพัฒนาตามมาตรฐาน RFC7539
ซอฟต์แวร์ (SW)
- Wireguard Agent: ทำหน้าที่ดูแล protocol handshake, การคงอยู่ของเซสชัน, การจัดการตารางคีย์/การเราต์
- โมดูลที่เกี่ยวข้องกับการเข้ารหัส
- Curve25519: การแลกเปลี่ยนคีย์แบบ ECDH
- ChaCha20-Poly1305, XChaCha20-Poly1305: การเข้ารหัส/ยืนยันตัวตนด้วย symmetric key แบบ AEAD และการป้องกัน nonce
- BLAKE2s: การยืนยันตัวตนแบบ MAC และแฮช
- รวมถึง HKDF, Timer, SipHash, CLI, ไดรเวอร์ HAL/CSR เป็นต้น
แผนการพัฒนาและการดำเนินงาน
ระยะของโปรเจกต์
- ระยะที่ 1: ทำให้บอร์ดทำงานและวางพิมพ์เขียวของการออกแบบ ทำความคุ้นเคยกับแพลตฟอร์ม HW/SW วิเคราะห์การนำไปใช้ที่มีอยู่ แบ่งส่วนและจัดทำเอกสารการออกแบบ
- ระยะที่ 2: พัฒนาและรวมเส้นทางข้อมูลฮาร์ดแวร์พื้นฐานสำหรับช่องทาง Wireguard แบบคงที่ พร้อมย้ายอัลกอริทึมเข้ารหัส (โดยเฉพาะ ChaCha20-Poly1305) ไปทำบน HW
- ระยะที่ 3: พัฒนาซอฟต์แวร์จัดการบนโปรเซสเซอร์ RISC-V แบบซอฟต์ และผสาน HW/SW โดยให้ซอฟต์แวร์รับผิดชอบงานโอเวอร์เฮดต่ำ เช่น การจัดการเซสชัน/คีย์
- ระยะที่ 4: ทำเวิร์กโฟลว์เต็มตั้งแต่การเริ่มต้น การคงอยู่ ไปจนถึงการยุติ VPN tunnel อย่างปลอดภัย
- ระยะที่ 5: ทดสอบประสิทธิภาพ ปรับแต่ง ขยายการรองรับโอเพนซอร์สทูลเชนอื่น ๆ (OpenXC7) และดูแลเอกสาร/CI ของชุมชนอย่างต่อเนื่อง
- ระยะที่ 6 (ทางเลือก) : พัฒนาซอฟต์แวร์ควบคุมการไหลของข้อมูลใน VPN tunnel เพื่อให้ส่งและจัดการข้อมูลได้อย่างเสถียร
สถาปัตยกรรม HW/SW ร่วมกัน
- เนื่องจากโหนด WireGuard มีบทบาทคล้าย IP router จึงสามารถแบ่งได้อย่างมีประสิทธิภาพเป็น โครงสร้าง 2 ชั้น (control/data plane)
- มีการแยกทราฟฟิกควบคุม (ข้อความของโปรโตคอล) ออกจากทราฟฟิกข้อมูล (แพ็กเก็ตเข้ารหัส/แพ็กเก็ตผู้ใช้ทั่วไป) และออกแบบเส้นทางกับโครงสร้างการประมวลผลที่เหมาะสมสำหรับแต่ละประเภท
ระบบจำลองและการตรวจสอบความถูกต้อง
- สามารถเลือกใช้ CPU แบบเสมือน (VProc) หรือ softcore RTL (เช่น RISC-V) และวิเคราะห์แพ็กเก็ตทีละขั้นตามสถานการณ์ทราฟฟิก Wireguard จริง
- Co-simulation HAL: ใช้ peakrdl เพื่อสร้างรีจิสเตอร์ควบคุม/สถานะระหว่าง HW/SW และ API โดยอัตโนมัติ ทำให้ทดสอบการเชื่อมต่อ SW/HW ได้อย่างรวดเร็วในการทำงานจริง
โอเพนซอร์สและความโปร่งใส
- วงจร (gateware), ซอฟต์แวร์ฝังตัว, ระบบบิลด์, bitstream และส่วนงานติดตั้งใช้งานทั้งหมดถูกเปิดเผยอย่างสมบูรณ์ภายใต้สัญญาอนุญาต BSD-3-Clause
- เน้นโครงสร้างแบบเปิดเพื่อให้ชุมชนสามารถตรวจสอบปัญหาอย่างแบ็กดอร์ ช่องโหว่ และกรรมสิทธิ์ทางกฎหมายได้โดยตรง
ข้อมูลอื่น ๆ
- สามารถดูขั้นตอนการพัฒนา คำอธิบายรายละเอียดแยกตามส่วน แหล่งอ้างอิงหลัก และโมดูลที่ทำภายนอกได้จากไฟล์ README และไดเรกทอรีย่อย (1.hw, 2.sw, 3.build เป็นต้น)
- ได้รับการสนับสนุนจาก NLnet Foundation
บทสรุป
- โปรเจกต์นี้มุ่งสู่การเป็นมาตรฐานโอเพนซอร์สสำหรับการนำ Wireguard VPN ประสิทธิภาพสูงไปใช้บนฮาร์ดแวร์ โดยมีจุดเด่นด้านต้นทุนต่ำ ความโปร่งใส และการนำไปใช้ได้รวดเร็ว
- แม้ยังอยู่ในช่วงเริ่มต้นของการพัฒนา แต่คาดว่าจะมีบทบาทสำคัญต่อโครงสร้างพื้นฐานเครือข่ายแบบเปิดในอนาคต ทั้งในด้านความปลอดภัยและการเข้าถึง
ยังไม่มีความคิดเห็น