Finney Attack คืออะไร?
Finney Attack คือเมื่อ miners เตรียมบล็อกเงียบๆ ที่ใช้จ่ายเหรียญคืนให้ตัวเอง จากนั้นชำระกับผู้ค้าโดยใช้เหรียญเดียวกันด้วยธุรกรรมที่ยังไม่ยืนยัน หากผู้ค้ามอบสินค้าก่อนที่การยืนยันจะมาถึง นักขุดจะปล่อยบล็อกที่เตรียมไว้ ปฏิเสธการชำระเงินนี้ คิดได้ว่าเหมือนการแสดงการโอนที่ยังอยู่ในสถานะรออยู่ที่เคาน์เตอร์ จากนั้นธนาคารก็ย้อนการทำธุรกรรม
ผู้คนมักเชื่อว่าฟินนี่แยคต้องมีการควบคุมเครือข่ายมากกว่าครึ่งหนึ่ง แต่ไม่ใช่ นั่นคือ 51% attack ซึ่งเป็นสัตว์ร้ายอีกแบบ Finney Attack ต้องการเพียง miner เดี่ยวที่พบบล็อกแบบส่วนตัว แล้วจังหวะการซื้อก่อนปล่อยบล็อกนั้น
วิธีทำงานของ Finney Attack
นี่คือแผนแบบตรงไปตรงมา นักขุดตั้งค่าการชำระเงินด้วยตนเองในบล็อก เก็บไว้ในความลับ แล้วจ่ายเหรียญเดียวกันกับผู้ขายที่รับการชำระเงินที่ยังไม่ยืนยัน หลังจากออกจากร้านพร้อมสินค้า เขาจะเผยแพร่บล็อกส่วนตัว ซึ่งยกเลิกการขาย
- Setup: ผู้โจมตีเป็นส่วนหนึ่งของ mining ดังนั้นพวกเขาจึงสามารถค้นหาบล็อกและเลือกสิ่งที่จะอยู่ในนั้นได้
- Private: พวกเขาขุดบล็อกในความลับที่ส่งเหรียญกลับไปยังตัวเอง โอกาสในการค้นหาบล็อกนั้นขึ้นอยู่กับเครือข่าย hash rates และโชค
- Spend: พวกเขาชำระกับผู้ค้าด้วยเหรียญเดียวกันโดยใช้ธุรกรรมที่ยังไม่ยืนยันที่เคาน์เตอร์
- Accept: หากผู้ค้าจัดส่งสินค้าก่อนการยืนยันใดๆ ผู้โจมตีเผยแพร่บล็อกส่วนตัวของตน
- Reorg: เครือข่ายยอมรับบล็อกส่วนตัว ยืนยันการชำระเงินด้วยตนเอง และการชำระเงินของผู้ค้าหายไป ผู้โจมตีเก็บเหรียญและสินค้าทั้งสองไว้
รวดเร็ว แอบแฝง และใช้งานได้เฉพาะเมื่อยืนยันแบบ zero confirmation
ทำไม Finney Attack ถึงสำคัญ
แล้วคุณควรรับรู้อะไรบ้างจากเรื่องนี้?
- ประโยชน์: การรู้ว่ามีอยู่ช่วยให้คุณหลีกเลี่ยงการได้สินค้าฟรีจากมิจฉาชีพและการสูญเสียเงินของคุณ
- มุมมอง: มันเป็นรูปแบบเฉพาะของ double spending และมันเป็นการล่อใจด้วยความใจร้อนที่จุดชำระเงิน
- ความเกี่ยวข้อง: คุณจะเห็นการพูดถึงในการชำระเงิน Crypto ในร้านค้าปลีก ที่ทำธุรกรรมด้วยตนเอง และตลาดที่รับธุรกรรมที่ยังไม่ยืนยัน
สำหรับสิ่งที่เสียไปยากๆ ให้รอการยืนยันอย่างน้อยหนึ่งครั้ง หรือใช้ escrow หรือการชำระเงินแบบ lightning style การยืนยันแบบ zero confirmation ใช้ได้กับการซื้อขนาดเล็ก แต่ตั้งขีดจำกัดและฝึกพนักงานให้ไม่กดปุ่มยืนยันอย่างเร่งด่วน
ลักษณะหลักของ Finney Attack
คุณลักษณะที่สังเกตได้ชัดเจนเมื่อรู้จักแล้วคือ:
- Preload: บล็อกส่วนตัวรวมการชำระเงินด้วยตนเองก่อนที่การซื้อจะเกิดขึ้น
- Miner: ใช้ได้เฉพาะถ้าผู้โจมตีสามารถ mining บล็อกได้ ไม่ใช่แค่ใครก็ตามที่มีกระเป๋า
- Timing: หน้าต่างสั้น ระหว่างการขายและการเผยแพร่บล็อกส่วนตัวนั้น
- Target: ผู้ค้าหรือ peers ที่รับธุรกรรมที่ยังไม่ยืนยัน
- Scope: ไม่ต้องการการควบคุมส่วนใหญ่ เป็นกลยุทธ์เชิงจงใจ
Variations
การเคลื่อนไหวที่เกี่ยวข้องที่คุณอาจได้ยิน รวมถึงการผสมผสานที่พบบ่อย:
- Race: ผู้โจมตีเผยแพร่การชำระเงินสองรายการที่ขัดแย้งกัน และหวังว่าการชำระของผู้ค้าจะชนะก่อน แล้วจะถูกยืนยันเมื่ออีกอันถูกยืนยัน
- Vector76: การผสมผสานที่รวมการสร้างบล็อกส่วนตัวกับการแข่งเครือข่าย โดยปกติแข่งกับ exchanges หรือผู้ขายรายใหญ่
- Premine: ไม่ใช่เหมือนกับ pre mining เหรียญ ซึ่งหมายถึงการจัดสรรซัพพลายก่อนเปิดตัว
- Tooling: บางรายสคริปต์มันเหมือนกับ exploit ทำให้การปล่อยบล็อกเกิดทันทีเมื่อการขายถูกเคลียร์
การยืนยันมีไว้เพื่อเหตุผล หากคุณยอมรับการชำระเงินที่ยังไม่ยืนยันจากคนแปลกหน้า total stranger อาจมี Finney Attack อยู่บนโต๊ะ โดยเฉพาะถ้าเขาดูมีอารมณ์เร่งรีบให้คุณกดยืนยันตอนนี้
ตัวอย่าง
ร้านอิเล็กทรอนิกส์ขนาดเล็กรับการชำระเงินแบบ zero confirmation สำหรับแล็ปท็อป ผู้ซื้อออกไป จากนั้นบล็อกที่ขุดเป็นความลับปรากฏขึ้นที่ยกเลิกการขาย นี่คือตัวอย่าง Finney Attack แบบคลาสสิก
ข้อเท็จจริงสนุกๆ
ตั้งชื่อตาม Hal Finney ตำนาน Bitcoin รุ่นแรกและผู้รับธุรกรรมแรกจาก Satoshi เขาเขียนถึงกลอนี้เพื่ออธิบายว่าทำไมการรอการยืนยันถึงสำคัญ
Wrap-Up
ถ้าคุณจำได้หนึ่งอย่าง ให้จำไว้นี่: Finney Attack เกิดขึ้นเฉพาะเมื่อคุณไว้ใจการชำระเงินที่ยังไม่ยืนยัน