ข้ามไปยังเนื้อหา

การโจมตีระยะไกลในระบบ PoS: คีย์ในอดีต ความเสี่ยงระหว่างเริ่มต้นระบบ และจุดตรวจสอบ

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

อัปเดต

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

คำตอบโดยตรง

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

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

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

จุดตรวจสอบไม่ใช่เพียงหมายเลขบล็อกที่หยิบใช้ได้สะดวก แต่ผูกเครือข่ายและสถานะฉันทามติที่เจาะจงเข้ากับรากหรือแฮช ณ epoch, slot หรือความสูงหนึ่ง เมื่อยืนยันแหล่งที่มาแล้ว จุดตรวจสอบจะจำกัดว่าประวัติใดที่โหนดจะนำมาพิจารณา จากนั้นจึงตรวจสอบส่วนที่เหลือของเชนตามกฎโปรโตคอลโดยเริ่มจากหลักยึดนี้ได้ นี่คือภาวะอัตวิสัยแบบอ่อน กล่าวคือ รับข้อมูลภายนอกในขอบเขตจำกัดตอนเริ่มต้นระบบ แล้วตรวจสอบอย่างเป็นปรนัยภายในช่วงเวลาตามสมมติฐาน แทนการเชื่อถือหัวเชนล่าสุดที่ peer รายหนึ่งแจ้งอย่างถาวร

เส้นทางการโจมตีและการตรวจสอบ

  1. เลือกจุดแยกเชนเก่า ผู้โจมตีระบุสถานะในอดีตที่อำนาจของผู้ตรวจสอบเปลี่ยนผ่านไปแล้ว หรือยากที่โหนดใหม่จะยืนยันแหล่งที่มาได้อย่างเป็นอิสระ
  2. รวบรวมอำนาจลงนามในอดีตให้เพียงพอ หลังผู้ตรวจสอบออกจากระบบ คีย์อาจถูกซื้อ ขโมย เก็บไว้ กู้คืนจากข้อมูลสำรอง หรือรั่วไหลผ่านระบบลงนามที่ถูกเจาะ น้ำหนักและประเภทข้อความที่ต้องใช้ขึ้นอยู่กับโปรโตคอล การมีคีย์เก่าของผู้เสนอบล็อกเพียงคีย์เดียวจึงไม่ได้เพียงพอโดยอัตโนมัติ
  3. สร้างประวัติทางเลือกที่ถูกต้องตามโปรโตคอล ผู้โจมตีสร้างบล็อก คะแนนเสียง ใบรับรอง และการเปลี่ยนชุดผู้ตรวจสอบที่ผ่านการตรวจสอบประวัติของไคลเอนต์ฝ่ายเหยื่อ อย่างไรก็ตาม การเปลี่ยนสถานะที่ไม่ถูกต้อง โดเมนผิด เวลาที่เป็นไปไม่ได้ หรือหลักฐานที่ขาดหาย ยังทำให้เชนแยกเป็นโมฆะได้
  4. ต่อและนำเสนอเชนแยก การสร้างลายเซ็นด้วยต้นทุนต่ำอาจช่วยให้ผู้โจมตีเติมประวัติได้ยาว แต่จำนวนบล็อกเพียงอย่างเดียวไม่ใช่ตัวตัดสิน เชนสาขานั้นต้องชนะหรือหลบผ่านกระบวนการคัดเลือกที่โหมดการซิงค์ดังกล่าวใช้จริง
  5. ควบคุมมุมมองตอนเริ่มต้นระบบ เหยื่อถูกแยกออกจากจุดตรวจสอบล่าสุดที่ยืนยันแหล่งที่มาแล้วหรือหลักฐานจาก peer สุจริต และเห็นประวัติทางเลือกเป็นตัวเลือกเดียวหรือตัวเลือกที่ดูดีกว่า
  6. ทำให้ระบบปลายทางนำข้อมูลไปใช้ หากโหนดยอมรับสถานะผิด RPC กระเป๋าสินทรัพย์ดิจิทัล ตัวจัดทำดัชนี ตัวเฝ้าติดตามบริดจ์ หรือแอปพลิเคชัน อาจรายงานยอดคงเหลือ เหตุการณ์ และสมาชิกผู้ตรวจสอบที่ถูกต้องตามโปรโตคอลบนเชนแยกของผู้โจมตี แม้เครือข่ายที่ทำงานอยู่จะติดตามอีกเชนหนึ่ง

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

ตัวอย่างแบบละเอียด

สมมติว่าชุดผู้ตรวจสอบ V_old ควบคุมเชน PoS สมมติ ณ epoch 120,000 หลายปีต่อมา น้ำหนักในอดีตมากกว่า 2/3 ออกจากระบบแล้วและไม่อยู่ภายใต้บทลงโทษของโปรโตคอลอีก ผู้โจมตีได้คีย์เก่าเหล่านั้นและเริ่มประวัติที่ขัดแย้งทันทีหลังจุดตรวจสอบ C_old

บนเชนสาขาที่สร้างขึ้น ผู้โจมตีลงนามคะแนนเสียงตามที่โปรโตคอลสมมตินี้กำหนด เปลี่ยนสมาชิกผู้ตรวจสอบในเวลาต่อมา และดำเนินประวัติจนถึง epoch 420,000 เครือข่ายสุจริตก็มาถึง epoch 420,000 เช่นกัน ดังนั้นหมายเลข epoch ที่เท่ากันหรือไฟล์ที่ยาวกว่าไม่ได้บอกโหนดที่กำลังเริ่มต้นระบบว่าสาขาใดเป็นเชนหลักที่ชุมชนและการใช้งานจริงยอมรับ แม้แต่การพิจารณาว่าเชนสาขาที่สร้างขึ้นนั้นรับได้หรือไม่ก็ขึ้นอยู่กับกฎทุกข้อของโปรโตคอลตลอดประวัติศาสตร์

โหนด N_live เคยเห็นจุดตรวจสอบจริง C_recent ซึ่งยืนยันขั้นสุดท้ายแล้ว ณ epoch 419,936 เนื่องจากเชนแยกของผู้โจมตีไม่ได้สืบทอดจาก C_recent โหนด N_live จึงปฏิเสธ ในทางกลับกัน โหนด N_new เริ่มจากบล็อกกำเนิด เชื่อมต่อเฉพาะ peer ของผู้โจมตี และไม่มีหลักยึดล่าสุดที่ยืนยันแหล่งที่มาแล้ว หากโปรโตคอลและโหมดการซิงค์ไม่อาจแยกประวัติทั้งสองด้วยหลักฐานภายในเพียงอย่างเดียว โหนดนี้อาจยอมรับเชนสาขาของผู้โจมตี

การส่งคู่ข้อมูลที่ยืนยันแล้ว C_recent = (root, 419,936) ให้ N_new จะเปลี่ยนขอบเขตการตัดสินใจ ไคลเอนต์ต้องกำหนดให้เส้นทางการซิงค์มีจุดตรวจสอบนี้ตรงกันทุกประการ และหยุดอย่างปลอดภัยหากทำไม่ได้ ค่า epoch และเกณฑ์ 2/3 ในตัวอย่างนี้ใช้แสดงการออกแบบที่อาศัยการยืนยันขั้นสุดท้ายรูปแบบหนึ่ง ไม่ใช่พารามิเตอร์สากลของ PoS หรือค่าปัจจุบันของเครือข่ายใดที่ระบุชื่อ

มาตรการควบคุมและรายการตรวจสอบ

การออกแบบโปรโตคอล

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

การเริ่มต้นและการดำเนินงานโหนด

  • ก่อนซิงค์ ให้บันทึกรากของจุดตรวจสอบหรือแฮชบล็อก epoch หรือความสูง รหัสเชน เครือข่าย รุ่นการแยกโปรโตคอล เวลาที่ได้รับ และผู้ให้ข้อมูล
  • รับหลักยึดผ่านช่องทางที่ยืนยันตัวตน และเปรียบเทียบแหล่งข้อมูลที่เป็นอิสระอย่างแท้จริงหลายแห่ง เว็บไซต์หลายแห่งที่ใช้โหนดหรือผู้ดำเนินการรายเดียวกันไม่ถือว่าเป็นอิสระ
  • ปฏิเสธจุดตรวจสอบที่เก่าเกินไป รูปแบบผิด มาจากเครือข่ายผิด หรือขัดแย้งกัน อย่ากลับไปซิงค์โดยไม่มีหลักยึดอย่างเงียบ ๆ หลังการตรวจสอบล้มเหลว
  • กำหนดให้เชนที่ซิงค์มีหลักยึดตรงกันทุกประการ และตรวจสอบบล็อกที่สืบทอดทั้งหมดด้วยไคลเอนต์ฉันทามติและไคลเอนต์ประมวลผลที่ตั้งใจใช้
  • ใช้ peer ไคลเอนต์ ผู้ดำเนินการ และ RPC ที่หลากหลาย พร้อมเฝ้าระวังภาวะถูกปิดล้อม ความแตกต่างของรากที่ยืนยันขั้นสุดท้าย การย้อนกลับผิดปกติ และความล้มเหลวของการยืนยันขั้นสุดท้ายที่ยืดเยื้อ
  • ตรวจหลักยึดอีกครั้งหลังการกู้คืนฐานข้อมูลหรือข้อมูลสำรองเก่า และอัปเดตภายในช่วงปลอดภัยที่โปรโตคอลระบุไว้

การนำข้อมูลไปใช้ในแอปพลิเคชัน

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

ความเข้าใจผิดที่พบบ่อย

  • เชน PoS ทุกระบบมีช่องโหว่แบบเดียวกัน การต้านทานการโจมตีระยะไกลขึ้นอยู่กับการเปลี่ยนผู้ตรวจสอบ ลายเซ็น การยืนยันขั้นสุดท้าย การเลือกเชน จุดตรวจสอบ และสมมติฐานการซิงค์ของแต่ละโปรโตคอล
  • คีย์เก่าเขียนธุรกรรมใดใหม่ได้โดยไม่มีข้อจำกัด ผู้โจมตียังต้องสร้างประวัติที่ผ่านกฎตรวจสอบทั้งหมดของฝ่ายเหยื่อ อำนาจในอดีตจำเป็นต่อโครงสร้างการโจมตีเพียงบางแบบและอาจยังไม่เพียงพอ
  • เชนที่มีบล็อก epoch หรือลายเซ็นมากกว่าคือเชนจริง การคัดเลือกใช้ความถูกต้อง น้ำหนัก ใบรับรอง และหลักยึดตามข้อกำหนดของโปรโตคอล ไม่ใช่การเทียบความยาวแบบสากล
  • การยืนยันขั้นสุดท้ายเพียงอย่างเดียวทำให้โหนดที่เริ่มจากบล็อกกำเนิดระบุเชนที่สังคมยอมรับได้ ประวัติที่ยืนยันขั้นสุดท้ายและถูกต้องภายในสองชุดอาจแยกไม่ออกสำหรับโหนดที่ไม่มีมุมมองล่าสุดซึ่งยืนยันแหล่งที่มาแล้ว การยืนยันขั้นสุดท้ายปกป้องโหนดที่รู้จุดตรวจสอบที่เกี่ยวข้องอยู่ก่อน
  • การตัด Stake ยับยั้งการโจมตีได้เสมอ ผู้ตรวจสอบที่ถอนสินทรัพย์ทั้งหมดแล้วอาจไม่มีหลักประกันเหลือให้ลงโทษ และหลักฐานต้องระบุตัวผู้กระทำได้พร้อมถูกประมวลผลในขณะที่ยังบังคับใช้บทลงโทษได้
  • จุดตรวจสอบหมายถึงต้องเชื่อบริษัทเดียวตลอดไป สามารถจำกัดความไว้วางใจไว้ที่หลักยึดล่าสุดที่เจาะจง และลดความเสี่ยงด้วยการเผยแพร่ผ่านช่องทางยืนยันตัวตน การตรวจสอบข้ามแหล่งอิสระ และการตรวจสอบในเครื่องหลังจากนั้น
  • การลบคีย์ของผู้ตรวจสอบที่ออกแล้วแก้ปัญหาของโปรโตคอล การลบอย่างปลอดภัยลดความเสี่ยงจากการถูกเจาะ แต่กฎฉันทามติและการเริ่มต้นระบบที่แข็งแรงต้องทนต่อกรณีที่คีย์ในอดีตบางส่วนถูกเปิดเผยได้

หัวข้อที่เกี่ยวข้อง

แหล่งที่มา

การนำทาง

ค้นหาในวิกิ...