เทคโนโลยี

WireGuard คืออะไร? โปรโตคอล VPN ที่ใช้โดยแอป StageVPN 8 คำถามและ 8 คำตอบ

WireGuard สร้างคีย์เซสชันด้วยการจับมือแบบไปกลับครั้งเดียว และเปลี่ยนทุกๆ สองนาทีโดยประมาณ และระบุอุปกรณ์ด้วยคีย์สาธารณะ แทนที่จะเป็น IP เพื่อรักษาการเชื่อมต่อแม้ว่าจะเปลี่ยนจาก Wi-Fi เป็น LTE ก็ตาม เทคนิคการเข้ารหัส การหมุนเวียนคีย์ การกำหนดเส้นทางคีย์การเข้ารหัส และการกำหนดค่าแอป StageVPN ได้รับการอธิบายด้วยตารางและไดอะแกรม

ทีมงาน StageVPNอ่าน 23 นาที

ภาพประกอบ 3 มิติแสดงการไหลของข้อมูลผ่านอุโมงค์สีน้ำเงินที่ส่องสว่าง

WireGuardเป็นโปรโตคอล VPN ที่สร้างการเชื่อมต่อเครือข่ายเสมือน (ทันเนล) ที่เข้ารหัสระหว่างอุปกรณ์สองเครื่องที่ระบุซึ่งกันและกันด้วยรหัสสาธารณะ

แอป StageVPN (iPhone·iPad·Android) ใช้ WireGuard นี้เพื่อส่งการสื่อสาร IPv4/IPv6 และการสืบค้น DNS สำหรับอุปกรณ์ทั้งหมดไปยังเซิร์ฟเวอร์ VPN บทความนี้ถามคำถามแปดข้อเพื่ออธิบายว่าทำไม WireGuard ถึงได้รับการจัดอันดับว่าตรวจสอบได้ง่ายและรวดเร็ว สำหรับคำถามแต่ละข้อ อันดับแรกฉันเขียนคำตอบสองประโยค จากนั้นจึงอธิบายหลักการด้วยตารางและแผนภาพด้านล่าง ตัวเลขอ้างอิงจากเอกสารทางเทคนิคของ WireGuard และเอกสารโปรโตคอลอย่างเป็นทางการ

ประมาณ 4,000 เส้น
ขนาดโค้ดของการใช้งานเคอร์เนล Linux ณ เวลาที่เผยแพร่สมุดปกขาวในปี 2560
1 รอบ
จำนวนการส่งข้อความไปกลับที่จำเป็นสำหรับการจับมือกันเพื่อสร้างคีย์เซสชัน
120 วินาที
เมื่อใดที่จะเริ่มเปลี่ยนคีย์เซสชันด้วยการจับมือใหม่
1 สิ่ง
จำนวนชุดรหัสผ่านคงที่ที่ใช้โดยไม่มีการเจรจา

รูปภาพด้านล่างรวบรวมคุณสมบัติที่สำคัญที่สุดสามประการในบทความนี้ไว้ในหน้าเดียว อุปกรณ์และเซิร์ฟเวอร์เห็นด้วยกับคีย์เซสชันในการส่งข้อมูลไปกลับครั้งเดียว คีย์จะรีเฟรชทุกๆ สองนาทีโดยประมาณ เซิร์ฟเวอร์จดจำอุปกรณ์อื่นด้วยรหัสสาธารณะ ไม่ใช่ที่อยู่ IP อ่านต่อไปเพื่อดูว่าที่พักทั้งสามแห่งตอบคำถามใด

คีย์เซสชันถูกสร้างขึ้นในการเดินทางไปกลับหนึ่งครั้งและเปลี่ยนแปลงทุกๆ สองนาทีโดยประมาณ
คีย์เซสชันถูกสร้างขึ้นในการเดินทางไปกลับหนึ่งครั้งและเปลี่ยนแปลงทุกๆ สองนาทีโดยประมาณ

ถาม WireGuard คืออะไร ใครเป็นผู้สร้าง และเพราะเหตุใด

WireGuard เป็นโปรโตคอล VPN และการนำไปใช้งานที่ออกแบบโดย Jason A. Donenfeld และเปิดตัวในปี 2017 เป้าหมายคือการลดจำนวนรายการการกำหนดค่า แก้ไขวิธีการเข้ารหัสเหลือเพียงวิธีเดียว และทำให้เป็นขนาดที่ผู้เชี่ยวชาญสามารถอ่านและตรวจสอบโค้ดทั้งหมดได้

โปรโตคอล VPN คือชุดกฎสำหรับอุปกรณ์และเซิร์ฟเวอร์ในการระบุซึ่งกันและกัน แบ่งปันคีย์การเข้ารหัส และจัดทำแพ็คเกจและแลกเปลี่ยนข้อมูล โปรโตคอลที่มีอยู่มีตัวเลือกและขั้นตอนการเจรจามากมายเพื่อปรับให้เข้ากับสภาพแวดล้อมต่างๆ ตัวเลือกเพิ่มเติมส่งผลให้โค้ดมีขนาดใหญ่ขึ้น ความเป็นไปได้ในการสร้างการกำหนดค่าที่อ่อนแอเนื่องจากข้อผิดพลาดในการกำหนดค่าก็เพิ่มขึ้นเช่นกัน WireGuard ใช้แนวทางตรงกันข้าม เราลดจำนวนตัวเลือกและทำให้โค้ดสั้นลง

ตารางที่ 1. ประวัติหลักของ WireGuard (ณ เดือนกันยายน 2569)
มุมมองกรณีความหมาย
2017เอกสารไวท์เปเปอร์นำเสนอในการประชุม NDSSเป้าหมายการออกแบบ การจับมือกัน และการกำหนดเส้นทางคีย์การเข้ารหัสที่ระบุไว้ในเอกสารสาธารณะ
มีนาคม 2020รวมไว้เป็นค่าเริ่มต้นในเคอร์เนล Linux 5.6สามารถใช้บนเซิร์ฟเวอร์ Linux ได้โดยไม่ต้องติดตั้งโมดูลแยกกัน
หลังจากที่สมุดปกขาวถูกเผยแพร่การใช้งานอย่างเป็นทางการที่เผยแพร่สำหรับ Windows, macOS, iOS และ Androidแอพสมาร์ทโฟนเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้โปรโตคอลเดียวกัน
วันนี้รวบรวมงานวิจัยการตรวจสอบรูปแบบ เช่น Tamarin และ CryptoVerifความปลอดภัยของการออกแบบเกณฑ์วิธีได้รับการตรวจสอบทางวิชาการแล้ว

ขนาดโค้ดขึ้นอยู่กับการใช้งานและระยะเวลา ดังนั้นไม่ควรอ่าน 'ประมาณ 4,000 บรรทัด' เป็นค่าปัจจุบันที่แน่นอน แต่เป็น 'ลำดับความสำคัญที่เล็กกว่าการใช้งาน VPN อื่น ๆ ' แอป StageVPN ใช้การใช้งาน WireGuard นี้บน iPhone·iPad และ Android StageVPN สำหรับ Chrome ซึ่งเป็นส่วนขยายของ Chrome เป็นพร็อกซี HTTPS แทนที่จะเป็น WireGuard ข้อแตกต่างระหว่างทั้งสองวิธีก็คือ เบราว์เซอร์ VPN กับ App VPNมันถูกปกคลุมอยู่ใน

ถาม: การเชื่อมต่อ WireGuard ทำตามลำดับใด

การเชื่อมต่อถูกสร้างขึ้นด้วยการจับมือกันของสองข้อความ หนึ่งรอบการเดินทาง เมื่อผู้ริเริ่มส่งข้อความเริ่มต้นและผู้ตอบกลับส่งคืนข้อความตอบกลับ ทั้งสองฝ่ายจะคำนวณคีย์เซสชันเดียวกันและแลกเปลี่ยนข้อมูลทันที

  1. ข้อความเริ่มต้นผู้ริเริ่ม (อุปกรณ์) จะส่งคีย์สาธารณะชั่วคราว คีย์สาธารณะของตนเองที่เข้ารหัส และการประทับเวลาที่เข้ารหัส
  2. ข้อความตอบกลับผู้ตอบกลับ (เซิร์ฟเวอร์) จะส่งรหัสสาธารณะชั่วคราวและตรวจสอบตัวเริ่มต้น
  3. การคำนวณคีย์เซสชันจากผลการแลกเปลี่ยนคีย์ ทั้งสองฝ่ายได้รับคีย์สมมาตรคู่หนึ่งสำหรับการส่งและรับ
  4. การถ่ายโอนข้อมูลแต่ละแพ็กเก็ตถูกเข้ารหัสด้วย ChaCha20-Poly1305 และกำหนดหมายเลขลำดับ (ตัวนับ)
รูปที่ 1 การจับมือ WireGuard และลำดับการถ่ายโอนข้อมูล (หนึ่งรอบ)

การจับมือกันเป็นกระบวนการที่ทั้งสองฝ่ายระบุกันและกันและตกลงเกี่ยวกับคีย์เข้ารหัสก่อนที่จะเริ่มการสื่อสาร การจับมือของ WireGuard เป็นไปตามรูปแบบ IK ของกรอบเสียงรบกวน รูปแบบ IK กำหนดให้ผู้ริเริ่มทราบรหัสสาธารณะของผู้ตอบกลับล่วงหน้า แอป StageVPN เป็นไปตามเงื่อนไขนี้เนื่องจากได้รับรหัสสาธารณะของเซิร์ฟเวอร์เพื่อเชื่อมต่อในการกำหนดค่า VPN

ตารางที่ 2. ข้อความ WireGuard สี่ประเภท (ตามเอกสารโปรโตคอลอย่างเป็นทางการ)
ข้อความขนาดเนื้อหารวมอยู่ด้วยบทบาท
การเริ่มจับมือ (แบบที่ 1)148 ไบต์กุญแจสาธารณะชั่วคราว, กุญแจสาธารณะแบบคงที่ที่เข้ารหัส, การประทับเวลาที่เข้ารหัส, 2 MACหลักฐานการระบุตัวตนของผู้ริเริ่ม บล็อกการโจมตีแบบเล่นซ้ำ
การตอบสนองของการจับมือ (ประเภท 2)92 ไบต์ตอบกลับรหัสสาธารณะชั่วคราว ข้อความว่างสำหรับการตรวจสอบ MAC 2 เครื่องข้อตกลงที่สำคัญเสร็จสมบูรณ์
การตอบสนองของคุกกี้ (ประเภท 3)64 ไบต์คุกกี้ที่เข้ารหัสตรวจสอบที่อยู่ต้นทางเมื่อเซิร์ฟเวอร์โอเวอร์โหลด
ข้อมูล (ประเภทที่ 4)ส่วนหัว 16 ไบต์และไซเฟอร์เท็กซ์หมายเลขผู้รับ ตัวนับ แพ็กเก็ต IP ที่เข้ารหัส และแท็กการตรวจสอบสิทธิ์การส่งมอบการสื่อสารที่เกิดขึ้นจริง

การประทับเวลาในข้อความเริ่มต้นจะป้องกันการโจมตีซ้ำ การโจมตีแบบเล่นซ้ำคือการโจมตีที่ผู้โจมตีบันทึกข้อความปกติและส่งอีกครั้งในภายหลัง เซิร์ฟเวอร์จะละทิ้งข้อความหากการประทับเวลาเก่ากว่าการส่งครั้งก่อนจากอุปกรณ์เดียวกัน

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

ถาม WireGuard ใช้เทคนิคการเข้ารหัสแบบใด

ตั้งค่าวิธีการเข้ารหัสเพียงวิธีเดียวสำหรับแต่ละบทบาท และใช้โดยไม่ต้องเจรจา หากพบปัญหาเกี่ยวกับเทคนิค แทนที่จะเพิ่มตัวเลือก เราจะเปลี่ยนเวอร์ชันของโปรโตคอลเพื่อให้การใช้งานทั้งหมดเคลื่อนไปพร้อมกัน

ชื่อเต็มของการจับมือตามที่เขียนไว้ในเอกสารอย่างเป็นทางการคือ Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s ชื่อคือโครงร่าง IK ย่อมาจาก Handshake Pattern, psk2 ย่อมาจาก Pre-shared Key, 25519 ย่อมาจาก Key Exchange Curve, ChaChaPoly ย่อมาจาก Data Cipher และ BLAKE2s ย่อมาจาก Hash

ตารางที่ 3. เทคนิคการเข้ารหัสที่แก้ไขโดย WireGuard และเอกสารประกอบ
บทบาทเทคนิคเอกสารประกอบลักษณะเฉพาะ
การออกแบบการจับมือกันรูปแบบ Noise_IKpsk2กรอบโปรโตคอลเสียงรบกวนการรับรองความถูกต้องร่วมกัน ข้อตกลงหลัก และการปกป้องข้อมูลประจำตัวของผู้ริเริ่มในการเดินทางไปกลับครั้งเดียว
การแลกเปลี่ยนกุญแจCurve25519(X25519)อาร์เอฟซี 7748คีย์สาธารณะขนาด 32 ไบต์ เส้นโค้งรูปไข่ที่ออกแบบมาเพื่อลดข้อผิดพลาดในการใช้งาน
การเข้ารหัสข้อมูลและความสมบูรณ์ชาช่า20-โพลี1305อาร์เอฟซี 8439ประมวลผลการเข้ารหัสและการตรวจสอบการปลอมแปลงในครั้งเดียว รวดเร็วแม้ไม่มีการเร่งฮาร์ดแวร์ก็ตาม
การเข้ารหัสคุกกี้XChaCha20-Poly1305เอกสารโปรโตคอล WireGuardการปรับเปลี่ยนเพื่อการเขียนค่าสุ่มแบบยาวอย่างปลอดภัย
แฮชและ MACเบลค2sอาร์เอฟซี 7693แฮชด่วนยังใช้สำหรับการคำนวณ MAC แบบคีย์ด้วย
ที่มาที่สำคัญสคบอาร์เอฟซี 5869แยกเซสชันคีย์ออกจากผลลัพธ์การแลกเปลี่ยนคีย์
ตารางแฮชภายในซิพแฮช24กระดาษ Aumasson·Bernsteinป้องกันการโจมตีด้วยการบิดเบือนโดยกำหนดเป้าหมายไปที่ตารางแฮช

สิ่งสำคัญคือต้องทราบว่าไม่มีขั้นตอนการเจรจา ในโปรโตคอลที่แลกเปลี่ยนรายการการเข้ารหัส เช่น TLS หรือ IKEv2 มีการศึกษาการโจมตีแบบดาวน์เกรดเพื่อหลอกให้ผู้โจมตีเลือกการเข้ารหัสที่อ่อนแอ WireGuard ไม่มีรายการของตัวเองให้เลือก ดังนั้นจึงไม่มีประเด็นใดที่การโจมตีดังกล่าวจะเกิดขึ้น

psk2 หรือคีย์ที่แบ่งใช้ล่วงหน้าเป็นคุณลักษณะทางเลือก ด้วยการเพิ่มเลเยอร์ของคีย์สมมาตรที่ด้านบนของการเข้ารหัสคีย์สาธารณะ จะเป็นการป้องกันเพิ่มเติมในการปกป้องเนื้อหาการสื่อสาร แม้ว่าคอมพิวเตอร์ควอนตัมในอนาคตจะทำลาย Curve25519 ก็ตาม นี่เป็นคุณสมบัติเสริม ดังนั้นความพร้อมใช้งานจึงแตกต่างกันไปตามบริการ StageVPN ไม่มีการเข้ารหัสแบบต้านทานควอนตัมเป็นคุณสมบัติที่นำเสนอ

ความปลอดภัยของการออกแบบได้รับการตรวจสอบทางวิชาการหลายครั้ง โครงการ WireGuard รวบรวมการวิจัยการตรวจสอบอย่างเป็นทางการบนเว็บไซต์อย่างเป็นทางการ รวมถึงการตรวจสอบเชิงสัญลักษณ์โดยใช้เครื่องพิสูจน์ Tamarin และการพิสูจน์การคำนวณโดยใช้ CryptoVerif อย่างไรก็ตาม การตรวจสอบอย่างเป็นทางการถือเป็นข้อพิสูจน์ของการออกแบบโปรโตคอล เราไม่รับประกันคุณภาพการใช้งานหรือการทำงานของเซิร์ฟเวอร์ของแต่ละแอป ดังนั้นจึงจำเป็นต้องอัปเดตแอปให้ทันสมัยอยู่เสมอและตรวจสอบนโยบายการบันทึกของผู้ให้บริการ

ถาม คีย์เซสชันเปลี่ยนแปลงบ่อยแค่ไหน?

คีย์เซสชันจะถูกแทนที่ด้วยการจับมือกันใหม่ทุกๆ สองนาทีโดยประมาณ การเปลี่ยนทดแทนจะเกิดขึ้นในขณะที่สื่อสารกับคีย์ที่มีอยู่ ดังนั้นผู้ใช้จึงไม่สังเกตเห็นการหยุดชะงักใดๆ

  1. 0 วินาทีจับมือเสร็จแล้ว

    เริ่มการถ่ายโอนข้อมูลด้วยคีย์เซสชันใหม่

  2. 120 วินาทีเริ่มการจับมือกันใหม่

    เมื่อคุณมีข้อมูลที่จะส่ง ให้สร้างคีย์ใหม่ (REKEY_AFTER_TIME) คีย์จะถูกแทนที่ด้วยหากข้อความถูกส่งไปที่ยกกำลัง 2 60

  3. 180 วินาทีปฏิเสธกุญแจเก่า

    จะไม่รับแพ็กเก็ตที่มีคีย์ที่เก่ากว่าเวลานี้ (REJECT_AFTER_TIME)

  4. 540 วินาทีการล้างข้อมูลที่ไม่ได้ใช้งาน

    หลังจากสามครั้ง 180 วินาทีโดยไม่มีการจับมือใหม่ ให้ล้างคีย์ชั่วคราวและสถานะเซสชันทั้งหมด

รูปที่ 2 อายุการใช้งานของคีย์เซสชัน WireGuard (อิงตามตัวจับเวลาจากเอกสารโปรโตคอลอย่างเป็นทางการ)

เหตุผลที่คุณเปลี่ยนคีย์บ่อยครั้งก็เนื่องมาจากการรักษาความปลอดภัยล่วงหน้า การรักษาความปลอดภัยล่วงหน้าเป็นคุณสมบัติที่ป้องกันไม่ให้เนื้อหาการสื่อสารของเซสชันที่สิ้นสุดแล้วถูกเผยแพร่ แม้ว่าคีย์ส่วนตัวระยะยาวของอุปกรณ์จะถูกเปิดเผยในภายหลังก็ตาม WireGuard สร้างคีย์ชั่วคราวใหม่สำหรับการจับมือแต่ละครั้ง และล้างคีย์ที่ใช้ออกจากหน่วยความจำ แม้ว่าคีย์เซสชันเดียวจะรั่วไหล ขอบเขตของผลกระทบจะถูกจำกัดอยู่เพียงไม่กี่นาทีที่ใช้คีย์

นอกจากนี้ยังมีกฎสำหรับการพยายามจับมือกัน หากไม่มีการตอบสนอง จะพยายามอีกครั้งทุกๆ 5 วินาที (REKEY_TIMEOUT) หากไม่มีการตอบสนองเป็นเวลา 90 วินาที (REKEY_ATTEMPT_TIME) ความพยายามจะหยุดลง หากไม่มีข้อมูลที่จะส่งภายใน 10 วินาที (KEEPALIVE_TIMEOUT) หลังจากได้รับข้อมูล จะมีการส่งแพ็กเก็ต Keepalive ที่ว่างเปล่าเพื่อให้อีกฝ่ายสามารถยืนยันการตอบสนองได้

WireGuard ได้รับการออกแบบมาเพื่อไม่ทำการจับมือหากไม่มีข้อมูลที่จะส่ง อย่างไรก็ตาม อุปกรณ์ที่อยู่หลังเราเตอร์หรืออุปกรณ์ของผู้ให้บริการ (NAT) มักใช้การตั้งค่า (PersistentKeepalive) ที่จะส่งแพ็กเก็ตว่างเป็นระยะๆ เพื่อป้องกันไม่ให้ข้อมูลการเชื่อมต่อถูกลบ คำแนะนำอย่างเป็นทางการแนะนำช่วงเวลา 25 วินาที การกำหนดค่า VPN ของแอป StageVPN จะใช้เวลา 25 วินาทีตามค่าเริ่มต้นด้วย (ณ เดือนกันยายน 2569)

ความแตกต่างระหว่างขนาดโค้ดและวิธีการเจรจารหัสผ่าน
ความแตกต่างระหว่างขนาดโค้ดและวิธีการเจรจารหัสผ่าน

ถาม WireGuard แตกต่างจาก OpenVPN และ IKEv2/IPsec อย่างไร

WireGuard เป็นโปรโตคอลที่ลดตัวเลือกและลดรหัส OpenVPN และ IKEv2/IPsec เป็นโปรโตคอลที่มีการเจรจาและตัวเลือกมากมายเพื่อให้เหมาะกับสภาพแวดล้อมที่หลากหลาย

รูปด้านบนแสดงความแตกต่างในขนาดโค้ด วิธีการส่ง และวิธีการเจรจารหัสผ่าน ตารางด้านล่างสรุปความแตกต่างที่เหลือซึ่งไม่แสดงในรูป ปัจจุบันทั้งสามอย่างนี้มีการใช้กันอย่างแพร่หลาย แต่ปรัชญาการออกแบบของพวกเขานั้นแตกต่างออกไป มากกว่าที่จะมีความเหนือกว่าอย่างไม่มีเงื่อนไข

ตารางที่ 4. ความแตกต่างการออกแบบระหว่างสามโปรโตคอล (ขึ้นอยู่กับเอกสารอย่างเป็นทางการและ RFC สำหรับแต่ละโครงการ)
รายการWireGuardโอเพ่น VPNIKEv2/IPsec
เปิด/มาตรฐานเอกสารไวท์เปเปอร์ปี 2017 รวมถึงเคอร์เนล Linux ปี 2020เปิดตัวครั้งแรกในปี 2544 โดยมีโปรโตคอลโอเพ่นซอร์สของตัวเองมาตรฐาน IETF (IKEv2 คือ RFC 7296)
วิธีการยืนยันพันธมิตรกุญแจสาธารณะขนาด 32 ไบต์ใบรับรอง X.509 ส่วนใหญ่เป็นชื่อผู้ใช้และรหัสผ่านสามารถรวมกันได้ใบรับรอง คีย์ที่แชร์ล่วงหน้า EAP และอื่นๆ
ข้อตกลงสำคัญไป-กลับไป-กลับ 1 ครั้ง (2 ข้อความ)หลายครั้งรวมถึงการจับมือ TLSการแลกเปลี่ยนขั้นต่ำ 2 ครั้ง (4 ข้อความ)
การเปลี่ยนแปลงเครือข่ายเป็นผลมาจากพฤติกรรมเริ่มต้น (โรมมิ่ง)ส่วนใหญ่เป็นการเชื่อมต่อใหม่ การสนับสนุนบางอย่างขึ้นอยู่กับการตั้งค่าต่อด้วยการสนับสนุน MOBIKE (RFC 4555)
รายการการตั้งค่าไม่กี่บรรทัด: คีย์ ที่อยู่ IP ที่อนุญาต ฯลฯใบรับรองและตัวเลือกมากมายมีวิธีการรับรองความถูกต้องและรายการนโยบายมากมาย
ระบบปฏิบัติการในตัวเคอร์เนล Linux ในตัว และอื่นๆ ที่ให้มาเป็นแอปติดตั้งโปรแกรมแยกต่างหากในตัวสำหรับ Windows, iOS, Android ฯลฯ

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

ถาม: 'การกำหนดเส้นทางคีย์การเข้ารหัส' คืออะไร โดยที่คีย์สาธารณะกลายเป็นที่อยู่

การกำหนดเส้นทางคีย์การเข้ารหัสเป็นวิธีการที่รวมคีย์สาธารณะของอีกฝ่ายและช่วงที่อยู่ IP (AllowedIP) ที่อีกฝ่ายสามารถใช้ได้ และใช้ชุดรวมนี้เพื่อกำหนดทั้งเมื่อส่งและรับแพ็กเก็ต เมื่อส่ง ให้พิจารณาว่ากุญแจสาธารณะใดที่จะเข้ารหัสด้วยที่อยู่ปลายทาง และเมื่อได้รับ ให้ตรวจสอบว่ากุญแจสาธารณะที่ถอดรหัสสำเร็จนั้นมีคุณสมบัติที่จะใช้ที่อยู่ต้นทางหรือไม่

โครงสร้างนี้มีข้อดีสองประการ: ประการแรก เซิร์ฟเวอร์จะรับรู้แพ็กเก็ตจาก IP ทันเนลที่เป็นของแท้ก็ต่อเมื่อมีการถอดรหัสด้วยคีย์สาธารณะที่เชื่อมโยงกับ IP นั้น แม้ว่าอุปกรณ์อื่นจะเลียนแบบ IP ของช่องสัญญาณ แต่ก็ไม่สามารถถอดรหัสได้และแพ็กเก็ตจะถูกละทิ้ง ประการที่สอง กฎไฟร์วอลล์และกฎรหัสผ่านจะรวมกันเป็นหนึ่งเดียว ผู้ดูแลระบบจะต้องคงไว้เพียงบรรทัดเดียว: 'รหัสสาธารณะนี้คือช่วงที่อยู่นี้'

หากคุณตั้งค่า AllowedIPs เป็น 0.0.0.0/0 และ ::/0 บนอุปกรณ์ผู้ใช้ การสื่อสาร IPv4 และ IPv6 ทั้งหมดจะกลายเป็นช่องทางแบบเต็มไปยังเซิร์ฟเวอร์เดียว แอป StageVPN ใช้วิธีนี้ รายการหลักของการกำหนดค่า WireGuard ที่แอปได้รับจากเซิร์ฟเวอร์มีดังต่อไปนี้

ตารางที่ 5. รายการการกำหนดค่า WireGuard สำหรับแอป StageVPN (ณ เดือนกันยายน 2569)
รายการการกำหนดค่าการตั้งค่าแอป StageVPNความหมายสำหรับผู้ใช้
IP ที่อนุญาต0.0.0.0/0, ::/0ปกป้องอุปกรณ์ทั้งหมดที่การสื่อสาร IPv4/IPv6 ทั้งหมดผ่านอุโมงค์
DNSเซิร์ฟเวอร์ DNS ที่ระบุในการกำหนดค่า VPN และการสืบค้นจะถูกส่งต่อไปยังทันเนลด้วยความยากลำบากในการดูโดเมนที่ผู้ให้บริการหรือผู้ให้บริการ Wi-Fi ค้นหา
อุโมงค์ IP (ที่อยู่)กำหนดที่อยู่ภายในภายในเซิร์ฟเวอร์ให้กับแต่ละบัญชีเซิร์ฟเวอร์ระบุอุปกรณ์โดยใช้กุญแจสาธารณะและที่อยู่ภายใน
มธค่าเริ่มต้น 1280 อาจแตกต่างกันไปขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์ลดปัญหาการตัดทอนแพ็กเก็ตในเครือข่ายมือถือและการห่อหุ้มสองชั้น
ถาวร Keepaliveค่าเริ่มต้น 25 วินาทีรักษาข้อมูลการเชื่อมต่อแม้อยู่ด้านหลังเราเตอร์หรืออุปกรณ์ของผู้ให้บริการ
ตำแหน่งการเชื่อมต่อเลือกจากประเทศเซิร์ฟเวอร์ที่ผู้ให้บริการจัดการหรือเลือกอัตโนมัติIP ของเซิร์ฟเวอร์ที่เลือกจะแสดงบนเว็บไซต์ที่เยี่ยมชม

MTU คือขนาดสูงสุดของแพ็กเก็ตที่สามารถส่งได้ในคราวเดียว WireGuard เข้ารหัสแพ็กเก็ตดั้งเดิมและนำกลับเข้าไปในแพ็กเก็ต UDP โดยเพิ่มขนาดตามส่วนหัว ดังนั้น ต้องตั้งค่า MTU ในทันเนลให้เล็กกว่า MTU ในบรรทัด เพื่อป้องกันไม่ให้แพ็กเก็ตถูกแยกส่วนหรือละทิ้ง บันทึกการเข้าถึงข้อมูลใดบ้างและจำนวนเท่าใดที่จะถูกเก็บไว้? ประกาศการจัดเก็บบันทึกการเข้าถึงมันเปิดให้ประชาชนทั่วไป

ถาม: หาก WireGuard มีความแข็งแกร่ง การใช้งานอินเทอร์เน็ตทั้งหมดของฉันจะปลอดภัยหรือไม่

เลขที่. ส่วนที่ WireGuard ปกป้องนั้นมาจากอุปกรณ์ของคุณไปยังเซิร์ฟเวอร์ VPN และความปลอดภัยนอกเหนือจากนั้นจะถูกกำหนดโดย HTTPS ของไซต์และนโยบายการบันทึกของผู้ให้บริการ

  1. อุปกรณ์ของฉันแอป StageVPN
  2. เครือข่าย Wi-Fi/การสื่อสารสาธารณะคาเฟ่·LTE
  3. เซิร์ฟเวอร์วีพีเอ็นStageVPN
  4. เว็บไซต์/เซิร์ฟเวอร์แอปธนาคาร/ไปรษณีย์
  • การเข้ารหัส VPN
  • HTTPS ของไซต์
  • พื้นที่ที่อาจสัมผัสได้
รูปที่ 3 เส้นทางที่ข้อมูลใช้เมื่อเปิดแอป StageVPN และวิธีที่แต่ละส่วนได้รับการปกป้อง

ในสองส่วนด้านซ้ายของรูปภาพ ผู้ใช้ Wi-Fi สาธารณะ ผู้ให้บริการ Wi-Fi และผู้ให้บริการรายอื่นจะดูเนื้อหาและปลายทางของการสื่อสารได้ยาก หลังจากที่คุณออกจากเซิร์ฟเวอร์ VPN มันก็เหมือนกับอินเทอร์เน็ตทั่วไป ขอย้ำอีกครั้งว่าที่อยู่นั้นเป็นไซต์ที่ขึ้นต้นด้วย https:// หรือไม่ ความเสี่ยงนอกระเบียบการจะต้องจัดทำแยกกัน

  • ส่วนหลังเซิร์ฟเวอร์ VPN: ไซต์ที่ไม่ใช้ HTTPS จะไม่ถูกเข้ารหัสจากเซิร์ฟเวอร์ VPN ไปยังไซต์
  • ไว้วางใจในผู้ประกอบการ: เนื่องจากโครงสร้างของเซิร์ฟเวอร์ WireGuard จึงทราบรหัสสาธารณะ, IP ของช่องสัญญาณ และที่อยู่การเข้าถึงล่าสุดของแต่ละอุปกรณ์ นี่คือที่ที่คุณสามารถดู IP ปลายทางของการเชื่อมต่อของคุณได้ เพื่อให้เป็นไปตามพระราชบัญญัติคุ้มครองความลับในการสื่อสาร StageVPN จะลบบันทึกการเข้าถึงโดยอัตโนมัติหลังจาก 93 วัน และไม่บันทึกเนื้อหาการสื่อสาร เหตุผลก็คือ เหตุใดเราจึงเปิดเผยนโยบายการเก็บรักษาบันทึกการเข้าถึงของเราอธิบาย
  • ภัยคุกคามภายในอุปกรณ์ของคุณ: แอพที่เป็นอันตรายหรือหน้าฟิชชิ่งคือปัญหาที่เกิดขึ้นภายในอุโมงค์นั่นคือบนอุปกรณ์ของคุณ โปรโตคอลไม่ได้หยุดมัน การแบ่งคือ VPN ใดที่ป้องกันและไม่สามารถป้องกันได้โปรดดูที่
  • ทันทีที่การเชื่อมต่อขาดหายไป: ในขณะที่อุโมงค์ถูกตัดการเชื่อมต่อ การสื่อสารสามารถออกไปตามเส้นทางปกติได้ ตรวจสอบสถานะการเชื่อมต่อของแอปก่อนดำเนินการใดๆ ที่ละเอียดอ่อน นิสัยบนเครือข่ายสาธารณะ กฎความปลอดภัย Wi-Fi สาธารณะฉันจัดมันไว้ใน.
  • DNS และ IPv6: หากแอป VPN อื่นหรือการตั้งค่า DNS แยกของอุปกรณ์ของคุณเปลี่ยนเส้นทาง ข้อความค้นหาอาจออกจากอุโมงค์ วิธีการตรวจสอบ คำแนะนำเกี่ยวกับการรั่วไหลของ DNS และการรั่วไหลของ WebRTCมันอยู่ใน

เมื่อคุณเชื่อมต่อครั้งแรก iPhone จะขอให้คุณเพิ่มการกำหนดค่า VPN และ Android จะขอให้คุณอนุญาตคำขอเชื่อมต่อ VPN คุณต้องอนุญาตเพื่อให้แอปสามารถสร้างอุโมงค์ WireGuard ได้ สั่งซื้อตามอุปกรณ์ เริ่มต้นใช้งานบน iPhone/iPadและ เริ่มต้นใช้งานบน Androidและขอบเขตของบทบัญญัติคือ คุณสมบัติและขอบเขตของการเสนอขายคุณสามารถตรวจสอบได้ที่นี่

ถาม: เหตุใดการเชื่อมต่อจึงยังคงอยู่แม้ว่าจะเปลี่ยนจาก Wi-Fi เป็น LTE แล้ว

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

วิธีแยกแยะการเชื่อมต่อด้วยที่อยู่ IP

  • การเชื่อมต่อที่มีอยู่จะหายไปเมื่อเครือข่ายเปลี่ยนแปลง
  • จำเป็นต้องตรวจสอบสิทธิ์อีกครั้งและยอมรับคีย์
  • การสื่อสารผ่านแอปมีแนวโน้มที่จะหยุดลงในขณะที่มีการเปลี่ยนแปลง

WireGuard (แตกต่างด้วยกุญแจสาธารณะ)

  • แพ็คเก็ตจากที่อยู่ใหม่จะได้รับการยอมรับว่าเป็นฝ่ายเดียวกันหากถูกถอดรหัสด้วยกุญแจสาธารณะเดียวกัน
  • อัปเดตที่อยู่ที่เซิร์ฟเวอร์ตอบกลับด้วยที่อยู่ใหม่
  • หากชีวิตที่สำคัญยังคงอยู่ ชีวิตจะดำเนินต่อไปทันทีโดยไม่ต้องจับมือกัน
รูปที่ 4 ความแตกต่างในวิธีการเชื่อมต่อเมื่อเปลี่ยนจาก Wi-Fi เป็น LTE

ลักษณะการทำงานนี้เรียกว่าการโรมมิ่ง สมาร์ทโฟนสลับระหว่าง Wi-Fi ที่บ้าน Wi-Fi ร้านกาแฟ และ LTE/5G ขณะเดินทางหลายครั้งต่อวัน หากเชื่อมต่อ VPN ใหม่ตั้งแต่ต้นทุกครั้ง จะมีช่วงเวลาที่ข้อความและการสตรีมจะหยุดลง WireGuard จัดการการเปลี่ยนแปลงนี้เป็นพฤติกรรมเริ่มต้นของโปรโตคอล ไม่จำเป็นต้องตั้งค่าแยกต่างหาก

WireGuard ใช้ UDP เท่านั้น UDP เป็นวิธีการรับส่งข้อมูลแบบน้ำหนักเบาที่ไม่ต้องมีขั้นตอนการสร้างการเชื่อมต่อ ไม่ทับซ้อนกับการควบคุมการส่งสัญญาณซ้ำของการสื่อสาร TCP ไปมาภายในอุโมงค์ มีปัญหาที่ทราบกันว่าเมื่อ TCP ถูกเลเยอร์บน TCP เมื่อเกิดการสูญเสีย ทั้งสองเลเยอร์จะส่งอีกครั้งพร้อมกันและความเร็วจะลดลงอย่างมาก WireGuard หลีกเลี่ยงปัญหานี้ในทางสถาปัตยกรรม

ในขณะเดียวกัน StageVPN จะบันทึกที่อยู่ IP ที่อุปกรณ์เข้าถึงเซิร์ฟเวอร์ VPN เมื่อมีการเปลี่ยนแปลง เป็นหนึ่งในบันทึกการเชื่อมต่อตามกฎหมาย ความจริงที่ว่าการโรมมิ่งเกิดขึ้นหมายความว่ามันยังคงอยู่บนเซิร์ฟเวอร์

โปรดทราบ มีข้อจำกัดในการออกแบบที่ใช้เฉพาะ UDP เท่านั้น เครือข่ายโรงแรม บริษัท และโรงเรียนบางแห่งบล็อกการสื่อสาร UDP นอกเหนือจากการเข้าถึงเว็บ การเชื่อมต่อ WireGuard อาจไม่ทำงานในที่ดังกล่าว ในกรณีนี้ ลองเปลี่ยนไปใช้ Wi-Fi หรือข้อมูลมือถืออื่น หากยังคงใช้งานไม่ได้ ให้ระบุรุ่นอุปกรณ์ ระบบปฏิบัติการและเวอร์ชันแอป และเวลาที่เกิดเหตุการณ์ การสนับสนุนลูกค้ากรุณาติดต่อเรา

แม้ว่า IP จะเปลี่ยนแปลง อุปกรณ์จะได้รับการยอมรับโดยใช้กุญแจสาธารณะ ดังนั้นการเชื่อมต่อจึงไม่ถูกสร้างขึ้นใหม่
แม้ว่า IP จะเปลี่ยนแปลง อุปกรณ์จะได้รับการยอมรับโดยใช้กุญแจสาธารณะ ดังนั้นการเชื่อมต่อจึงไม่ถูกสร้างขึ้นใหม่

อภิธานคำศัพท์

ฉันได้จัดระเบียบคำศัพท์ในบทความนี้ทีละประโยค ความหมายเดียวกันนี้ใช้ในการอ่านเอกสาร VPN อื่น ๆ

การจับมือกัน
นี่เป็นกระบวนการที่อุปกรณ์ทั้งสองระบุซึ่งกันและกันและยอมรับคีย์เข้ารหัสก่อนที่จะเริ่มการสื่อสาร
1-RTT (ไป-กลับ 1 รอบ)
ซึ่งหมายความว่ากระบวนการจะเสร็จสมบูรณ์เพียงแค่ส่งข้อความเพียงครั้งเดียวและส่งคืนเพียงครั้งเดียว
คีย์คงที่ (คีย์สาธารณะ/คีย์ส่วนตัว)
คู่กุญแจที่ถูกเก็บไว้ในอุปกรณ์ของคุณเป็นเวลานานและใช้ในการยืนยันตัวตนของคุณ อีกฝ่ายรู้จักรหัสสาธารณะ และรหัสส่วนตัวจะไม่ถูกส่งออกจากอุปกรณ์
กุญแจชั่วคราว
คีย์นี้ถูกสร้างขึ้นใหม่สำหรับการจับมือแต่ละครั้งและถูกลบเมื่อสิ้นสุดเซสชัน
คีย์เซสชัน
คีย์สมมาตรที่สร้างขึ้นจากการจับมือที่เข้ารหัสข้อมูลจริง
ส่งต่อการรักษาความปลอดภัย
คุณสมบัตินี้ป้องกันไม่ให้เนื้อหาของเซสชันที่สิ้นสุดแล้วถูกเผยแพร่ แม้ว่าคีย์ส่วนตัวระยะยาวจะถูกเปิดเผยในภายหลังก็ตาม
เออีดี
ChaCha20-Poly1305 เป็นวิธีการเข้ารหัสที่ประมวลผลการเข้ารหัสและการตรวจจับการปลอมแปลงในครั้งเดียว
แม็ค
นี่เป็นค่าสั้นๆ ที่คำนวณและแนบไปกับคีย์เพื่อให้แน่ใจว่าข้อความไม่ได้ถูกปลอมแปลง
เล่นซ้ำการโจมตี
นี่คือการโจมตีที่หลอกระบบด้วยการบันทึกข้อความปกติและส่งอีกครั้งในภายหลัง
การกำหนดเส้นทางคีย์การเข้ารหัส
วิธีการผูกกุญแจสาธารณะของ WireGuard และช่วง IP ที่อนุญาตเพื่อกำหนดว่ากุญแจใดที่จะเข้ารหัสและแพ็กเก็ตใดที่จะยอมรับ
IP ที่อนุญาต
นี่คือช่วงของที่อยู่ IP ที่คู่ของคีย์สาธารณะเฉพาะสามารถส่งและรับได้ 0.0.0.0/0 และ ::/0 หมายถึงที่อยู่ทั้งหมด
จุดสิ้นสุด
นี่คือที่อยู่อินเทอร์เน็ตและพอร์ต UDP ที่แท้จริงของอีกฝ่าย และเซิร์ฟเวอร์จะอัปเดตค่าเหล่านี้เมื่อเกิดการโรมมิ่ง
โรมมิ่ง
แม้ว่าที่อยู่ IP ของอุปกรณ์จะเปลี่ยนไป แต่อุโมงค์เดียวกันจะดำเนินต่อไป
แนท
นี่เป็นวิธีการที่เราเตอร์หรืออุปกรณ์ของบริษัทโทรคมนาคมแปลงที่อยู่ของอุปกรณ์หลายเครื่องให้เป็นที่อยู่สาธารณะเดียว
รักษาไว้
นี่คือแพ็กเก็ตแบบไม่มีเนื้อหาที่ส่งเป็นระยะเพื่อป้องกันไม่ให้ข้อมูลการเชื่อมต่อถูกลบ
มธ
นี่คือขนาดสูงสุดของแพ็กเก็ตที่สามารถส่งได้ในคราวเดียว
ยูดีพี
เป็นวิธีการส่งแบบน้ำหนักเบาที่ส่งแพ็กเก็ตโดยไม่มีขั้นตอนการสร้างการเชื่อมต่อและไม่มีการส่งสัญญาณซ้ำ

วัสดุอ้างอิง

  1. โปรโตคอลและการเข้ารหัส — รูปแบบและขนาดข้อความ, การเข้ารหัส, ค่าตัวจับเวลา (โครงการ WireGuard)
  2. WireGuard: อุโมงค์เครือข่ายเคอร์เนลรุ่นต่อไป — เป้าหมายการออกแบบ ขนาดโค้ด การกำหนดเส้นทางคีย์เข้ารหัส การโรมมิ่ง (Jason A. Donenfeld เอกสารไวท์เปเปอร์ NDSS 2017)
  3. การตรวจสอบอย่างเป็นทางการ — รายชื่อการศึกษาการตรวจสอบอย่างเป็นทางการ รวมถึง Tamarin, CryptoVerif ฯลฯ (โครงการ WireGuard)
  4. เริ่มต้นอย่างรวดเร็ว — การตั้งค่า PersistentKeepalive และช่วงเวลาที่แนะนำ (โครงการ WireGuard)
  5. กรอบโปรโตคอลเสียง — คำจำกัดความของรูปแบบการจับมือ IK (โครงการเสียง)
  6. RFC 8439: ChaCha20 และ Poly1305 สำหรับโปรโตคอล IETF — วิธีการเข้ารหัสข้อมูล (IETF)
  7. RFC 7748: เส้นโค้งรูปไข่เพื่อความปลอดภัย — Curve25519 การแลกเปลี่ยนคีย์ (IETF)
  8. RFC 7693: แฮชการเข้ารหัส BLAKE2 และ MAC - การคำนวณแฮชและ MAC (IETF)
  9. RFC 7296: Internet Key Exchange Protocol เวอร์ชัน 2 (IKEv2) — ขั้นตอนการแลกเปลี่ยน IKEv2 (IETF)
  10. RFC 4555: IKEv2 Mobility และ Multihoming Protocol (MOBIKE) — การจัดการการเปลี่ยนแปลงเครือข่ายใน IKEv2 (IETF)
  • #ไวร์การ์ด
  • #โปรโตคอล VPN
  • #การเข้ารหัส
  • #การเปรียบเทียบ OpenVPN
  • #ส่งต่อความปลอดภัย