การโจมตี 51% จะหมายถึงการกระทำโดยความตั้งใจในการสร้างห่วงโซ่ที่ยาวที่สุดของบล็อกเพื่อที่จะแทนที่บล็อกอื่นๆ บนเครือข่าย Blockchain นี้จะทำให้คุณแทนที่รายการธุรกรรมที่ถูกขุดขึ้นมาบน Blockchain
การโจมตีนี้เป็นการกระทำที่ง่ายที่สุดเมื่อคุณมีพลังการขุดส่วนใหญ่ ซึ่งนี้คือเหตุผลว่าทำไมจึงอ้างว่าเป็น “การโจมตีส่วนใหญ่” หรือ “การโจมตี 51% (51% attack)”
การโจมตี 51% (51% attack) มีการทำงานอย่างไร?
Node มักจะยอมรับห่วงโซ่ที่ยาวที่สุดของบล็อกที่มีการรับรู้ว่าเป็นเวอร์ชั่นที่ถูกต้องของ Blockchain เพราะฉะนั้นหากคุณต้องการที่จะ “ยกเลิก” รายการธุรกรรมจาก Blockchain คุณแค่ต้องสร้างห่วงโซ่ของบล็อกที่ไม่มีรายการธุรกรรมนั้นๆ ขึ้นมาใหม่
คิดซะว่าเราซื้อรถด้วย Bitcoin และขับรถออกไปพร้อมกับมัน
เมื่อ Node ได้รับห่วงโซ่ใหม่ของบล็อกที่มีความยาวมากกว่า พวกมันจะทำการปรับโครงสร้างของห่วงโซ่เพื่อที่จะปิดการใช้งานบล็อกในห่วงโซ่ที่ยาวที่สุดของพวกมันและเปิดใช้งานบล็อกนี้ในห่วงโซ่ที่ยาวที่สุดที่คุณให้พวกมันไป
รายการธุรกรรมในห่วงโซ่เก่าตอนนี้เป็นโมฆะ การจ่ายเงินเพื่อซื้อรถยนต์ของเราจะถือว่าไม่เคยเกิดขึ้น
เพราะฉะนั้น การสร้างห่วงโซ่ใหม่เพื่อที่จะแทนที่ห่วงโซ่เดิมที่มีอยู่ คุณจะต้องเขียน Blockchain ขึ้นมาใหม่และสร้างประวัติของรายการธุรกรรมสำหรับให้ทุกๆ Node บนเครือข่ายเพื่อยอมรับ ผลก็คือคุณจะทำการย้อนกลับรายการธุรกรรมที่เราเคยคิดว่าอยู่ในส่วนที่ไม่อาจจะลบทิ้งได้ของ Blockchain
อย่างไรก็ตาม การจะทำการโจมตี 51% (51% attach) นี้ไม่ได้ง่ายนัก
สามารถป้องกันการโจมตี 51% (51% Attack) ได้อย่างไร?
นักขุดทุกคนจะได้รับแรงจูงใจให้ทำงานบนห่วงโซ่ของบล็อกที่ยาวที่สุด เพราะฉะนั้นหากประมวลผลของนักขุดทั้งหมดบนเครือข่ายมากกว่าพลังประมวลผลของคุณ การทำงานได้เหนือกว่านักขุดอื่นๆ ในระบบและสร้างห่วงโซ่ที่ยาวที่สุดขึ้นมาใหม่ แทนที่ห่วงโซ่เดิมที่อยู่บนเครือข่ายจึงเป็นเรื่องที่ยากอย่างเหลือเชื่อ
นักขุดที่ทำงานด้วยกันสามารถสร้างห่วงโซ่ได้เร็วกว่าคุณซึ่งทำงานคนเดียวอย่างแน่นอน
แต่แน่นอน หากคุณมีพลังงานในการขุดมากกว่านักขุดทั้งหมดในระบบรวมกัน คุณก็จะสามารถทำการขุดได้เร็วกว่าและสร้างห่วงโซ่ที่ยาวที่สุดสำหรับให้ทุกคนในระบบนำไปใช้งานได้
หากคุณควบคุมพลังในการขุดส่วนใหญ่ของเครือข่าย การที่คุณจะสร้างห่วงโซ่ที่ยาวที่ขึ้นมาได้ก็ขึ้นอยู่กับเวลาเท่านั้น
เพราะฉะนั้น เพื่อป้องกันไม่ให้มีนักขุดคนใดคนหนึ่งควบคุมพลังงานในการขุดส่วนใหญ่เพียงผู้เดียว ระบบจึงเปิดรับนักขุดจากทั่วโลกและจูงใจนักขุดเหล่านั้นด้วยการมอบรางวัลในการขุด
นักขุดจะได้รับรางวัลเป็นสิ่งจูงใจให้เข้ามาขุดบนห่วงโซ่ที่ยาวที่สุด
ผลก็คือ นักขุดทั้งหมดบนระบบจะมุ่งมั่นทำการสร้างห่วงโซ่เดียวกัน ทำให้การที่นักขุดใดนักขุดหนึ่งจะเขียนข้อมูลบนเครือข่ายใหม่ทับข้อมูลเดิมนั้นเป็นเรื่องที่ยากอย่างมาก
ตราบเท่าที่พลังงาน CPU ส่วนใหญ่ถูกควบคุมโดย Node ที่ไม่ได้ทำงานร่วมกันเพื่อโจมตีเครือข่าย พวกมันจะสร้างห่วงโซ่ที่ยาวที่สุดและทำงานอย่างรวดเร็วจนการโจมตีไม่อาจจะเกิดขึ้นได้ – Satoshi Nakamoto
การทำการโจมตี 51% (51% Attack) มีความยากแค่ไหน?
ส่วนที่ยากก็คือมันจะต้องทำให้ฮารด์แวร์ทั้งหมดสามารถทำการโจมตีให้ได้ก่อน ซึ่งถือว่าต้องใช้ทรัพยากรที่มีราคาแพงและยากมาก อย่างไรก็ตาม หากคุณสามารถทำการควบคุมพลังงานในการขุดส่วนใหญ่ได้สำเร็จ จากนั้นการสร้างห่วงโซ่ที่มีความยาวที่สุดขึ้นมาใหม่ก็ขึ้นอยู่กับเวลาเท่านั้น
แต่ว่าไปแล้ว การทดแทนบล็อกจำนวนมากจะต้องใช้การทำงานที่มากกว่าการสร้างบล็อกขึ้นมาทดแทนเพียงไม่กี่บล็อก เพราะฉะนั้น ยิ่งย้อนรายการธุรกรรมที่อยู่บน Blockchain ลงไปมากเท่าไหร่ ก็จะยิ่งใช้พลังงานและเวลาในการเข้าถึงและย้อนกลับรายการธุรกรรมเหล่านั้นนานเท่านั้น
ยิ่งย้อนรายการธุรกรรมไปเท่าไหร่ใน Blockchain ก็จะยิ่งทำการทดแทนยากขึ้นไปเรื่อยๆ
แต่อีกครั้ง เหตุการณ์นี้อยู่บนข้อสันนิษฐานว่าคุณควบคุมพลังงานการขุด 51% เพื่อที่จะทำงานแซงหน้านักขุดอื่นๆ ขอให้โชคดีก็แล้วกัน
อย่างไรก็ตาม คุณสามารถลองดำเนินการโจมตีในรูปแบบนี้ดูได้แม้จะควบคุมพลังงานในการขุดน้อยกว่า 50% แต่ก็จะมีโอกาสเป็นไปได้ต่ำมาก
เราสามารถเขียนข้อมูล Blockchain ขึ้นมาใหม่ด้วยพลังงานการขุดที่น้อยกว่า 50% ได้ไหม?
ได้ แต่โชคต้องเข้าข้างคุณนะ
การขุดเป็นกระบวนการที่ไม่อาจจะคาดการณ์ได้ เพราะฉะนั้นหากคุณมีพลังงานในการขุดจำนวนน้อยนิด ไม่มีอะไรมากำหนดว่าคุณจะไม่โชคดี สามารถขุดบล็อกถัดไปได้ 2 บล็อกติดกัน แม้จะเกิดขึ้นไม่บ่อย แต่ก็เป็นไปได้ ความเป็นไปได้นี้จะขึ้นอยู่กับคุณมีพลังงานในการขุดเท่าไหร่ เทียบกับคนอื่นๆ
แน่นอนว่า ยิ่งรายการธุรกรรมที่อยู่บน Blockchain อยู่ล่างลงไปเท่าไหร่ คุณก็ยิ่งต้องใช้โชคในการขุดบล็อกจำนวน X ต่อกัน หากไม่มีใครควบคุมพลังงานในการขุดส่วนใหญ่ การแทนที่รายการธุรกรรมต่อไปเรื่อยๆ มันก็จะยิ่งยากเป็นทวีคูณ
ยกตัวอย่างเช่น หากนักขุดควบคุมพลังงานในการขุด 40% พวกเขาจะมีโอกาส 50% ที่จะสามารถสร้างรายการธุรกรรมที่อยู่ล่างลงไป 5 บล็อกขึ้นมาทดแทน
เพราะฉะนั้น นอกจากว่าคุณจะควบคุมส่วนหนึ่งในพลังงานในการขุดที่มีนัยยะสำคัญบนเครือข่าย Bitcoin โอกาสที่คุณจะสร้างรายการธุรกรรมมาทดแทนก็น้อยเหลือเกิน และโอกาสเหล่านั้นก็จะยิ่งลดน้อยลงอย่างรวดเร็วเมื่อยิ่งย้อนรายการธุรกรรมบนห่วงโซ่ลงไปเรื่อยๆ
นี้คือตารางของโอกาสที่จะเป็นไปได้ที่ชัดเจน:
ความเป็นไปได้ที่จะทดแทนบล็อกบนสุดจำนวน X บล็อกบน Blockchain ตามจำนวนพลังงานการขุดที่คุณควบคุม
50% Control | 40% Control | 30% Control | 20% Control | 10% Control | |
1 | 100% | 74.6% | 44.6% | 20.4% | 5.1% |
2 | 100% | 66.4% | 32.5% | 10.3% | 1.3% |
3 | 100% | 60.3% | 23.9% | 5.3% | 0.4% |
4 | 100% | 55.0% | 17.7% | 2.7% | 0.1% |
5 | 100% | 50.4% | 13.2% | 1.4% | 0.02% |
6 | 100% | 46.2% | 9.9% | 0.7% | 0.006% |
7 | 100% | 42.5% | 7.4% | 0.4% | 0.001% |
8 | 100% | 39.1% | 5.6% | 0.2% | 0.0004% |
9 | 100% | 36.0% | 4.2% | 0.1% | 0.0001% |
10 | 100% | 33.2% | 3.1% | 0.06% | 0.00003% |
ความเป็นไปได้ที่จะทำการเขียนข้อมูลบล็อกขึ้นมาใหม่อย่างตั้งใจบน Blockchain เป็นเพียงแค่ฟังก์ชั่นทางคณิตรศาสตร์ระหว่างจำนวนพลังงานในการขุดที่คุณควบคุมและจำนวนของบล็อกที่คุณต้องการที่จะพยายามทดแทนมัน
หลักฐานที่แสดงให้เห็นว่าบล็อกยิ่งอยู่ล่างห่วงโซ่เท่าไหร่ก็ยิ่งทำการทดแทนยากเท่านั้นเป็นส่วนสำคัญของการบูรณาการและความปลอดภัยของระบบ สมการนี้มาจาก Bitcoin Whitepaper (Section 11)
อย่างไรก็ตาม หากอยู่ใน Ruby Code สมการดังกล่าวจะเป็นตามด้านล่างนี้
# p = probability honest node finds the next block
# q = probability attacker finds the next block
# z = number of blocks to catch up
def attacker_success_probability(q, z)
p = 1 - q
lambda = z * (q / p) # expected number of occurrences in the poisson distribution
sum = 1.0
for k in 0..z
poisson = Math.exp(-lambda) # exp() raises e (natural logarithm) to a number
for i in 1..k
poisson *= lambda / i
end
sum -= poisson * (1 - (q/p)**(z-k) )
end
return sum
end
# Example
puts attacker_success_probability(0.4, 5) #=> 0.5506251290702077
คุณจะเห็นค่าความเป็นไปได้ที่จะแทนที่รายการธุรกรรมที่อยู่ลึกลงไปจะยิ่งต่ำลงไปเรื่อยๆ ตามความลึกของบล็อกบน Blockchain
Frequently Asked Questions
มีใครเคยทำการโจมตี 51% (51% Attack) สำเร็จแล้วบ้าง?
ไม่นะ ยังไม่เคยมี
ในประวัติศาสตร์ของ Bitcoin มีนักขุดบางคนเกือบไปถึง 50% หรือมากกว่าพลังการขุดทั้งหมด แต่ยังไม่มีใครเคยทำการโจมตี 51% attack ได้สำเร็จ
GHash.io ควบคุมการขุดใกล้เคียง 50% ในปี 2014
github.com/in3rsha/bitcoin-mining-distribution
เราต้องใช้พลัง Hash เท่าไหร่ในการทำการโจมตี 51% (51% attack)?
คุณสามารถใช้ค่าเป้าหมาย (Target) ปัจจุบันในการคาดคะเนว่าพลัง Hash เท่าไหนที่คุณใช้เพื่อที่จะควบคุมกำลังหมู่มาก
อันดับแรก เราจะหาค่าเป้าหมาย (Target) ปัจจุบันได้จากการค้นหาในขอบข่ายข้อมูล ‘Bits’ ภายในหัวบล็อก (Block Header) ของบล็อกที่เพิ่งขุดมาล่าสุด