• โปรเจกต์โอเพนซอร์สนี้นำ 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 ประสิทธิภาพสูงไปใช้บนฮาร์ดแวร์ โดยมีจุดเด่นด้านต้นทุนต่ำ ความโปร่งใส และการนำไปใช้ได้รวดเร็ว
  • แม้ยังอยู่ในช่วงเริ่มต้นของการพัฒนา แต่คาดว่าจะมีบทบาทสำคัญต่อโครงสร้างพื้นฐานเครือข่ายแบบเปิดในอนาคต ทั้งในด้านความปลอดภัยและการเข้าถึง

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น