[Blockchain] ประเด็นความปลอดภัยในการใช้บล็อกแฮชและเวลาการประกาศบล็อก

Thanwa Jindarattana
1 min readSep 2, 2020

--

ทำไมบล็อกแฮชถึงมีความปลอดภัยต่ำ?

คำนิยาม

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

โดยกฎพื้นฐาน บล็อกแฮชจะมีความปลอดภัยก็ต่อเมื่อผลตอบแทนที่ได้จากการใช้บล็อกแฮชมีมูลค่าต่ำกว่ารางวัลของนักขุดที่ได้จากการปิดบัญชี 1 ครั้ง

ตัวอย่าง

สัญญาอัจฉริยะฉบับหนึ่งได้ใช้บล็อกแฮชในการสร้างตัวเลขสุ่มเทียม ซึ่งได้ระบุเงื่อนไขสำหรับการจ่ายรางวัลให้ผู้ชนะลอตเตอรี่รางวัลที่หนึ่งเป็นจำนวนเงิน 500 อีเธอเรียม ในขณะที่ผู้โจมตีสามารถใช้เงินเพียง 300 อีเธอเรียม ในการเช่าโนดเพื่อทำการขุดเพื่อให้ความสูงของบล็อกมากกว่าค่าความสูงของบล็อกในเครือข่ายบล็อกเชนปัจจุบันโดยที่ยังไม่ได้ประกาศออกสู่สาธารณะ โดยเมื่อโนดของผู้โจมตีสามารถคำนวณค่าบล็อกแฮชที่ทำให้ชนะลอตเตอรี่ ผู้โจมตีจะทำการประกาศบล็อกนั้น ๆ เข้าสู่เครือข่ายบล็อกเชนสาธารณะ เป็นผลทำให้บล็อกตั้งแต่ที่ผู้โจมตีทำการแยกออกมาที่ถูกปิดบัญชีโดยนักขุดอื่น ๆ เป็นโมฆะ และผู้โจมตีก็ได้รางวัลจากสัญญาอัจฉริยะซึ่งคิดเป็นกำไร 200 อีเธอเรียม

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

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

ทำไมเวลาการประกาศบล็อกถึงมีความปลอดภัยต่ำ?

คำนิยาม

เวลาการประกาศบล็อก (block timestamp) คือเวลาที่นักขุดทำการบันทึกลงในบล็อกใด ๆ โดยค่านี้จะมีความใกล้เคียงกับเวลานักขุดทำการปิดบัญชี

เวลาการประกาศบล็อก เป็นอีกหนึ่งในตัวแปรสาธารณะที่ถูกบันทึกอยู่ภายในบล็อกแต่ละบล็อกของบล็อกเชน

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

1. หากความต่างระหว่างเวลาการประกาศบล็อกกับเวลาที่นักขุดสามารถปิดบัญชีได้อยู่ห่างออกไปในอนาคตมาก ๆ จะส่งผลทำให้นุกขุดอื่น ๆ ไม่สามารถนำบล็อกใหม่มาต่อจากบล็อกนี้ได้

2. นักขุดไม่สามารถบันทึกเวลาการประกาศบล็อกโดยที่เวลานั้นอยู่ก่อนจากเวลาการประกาศบล็อกของบล็อกผู้ปกครอง (parent block)

ณ ขณะนี้ยังไม่มีวิธีวิธีที่จะตรวจสอบเวลาการประกาศบล็อกด้วยวิธีการเข้ารหัส (no cryptographic way to verify the timestamp itself)

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

--

--