BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

รหัสส่วนตัวของ Ethereum นั้นสุ่มไม่เพียงพอ แฮ็กเกอร์ถอดรหัสรหัสส่วนตัวเพื่อขโมยเหรียญ

秦晓峰
Odaily资深作者
@QinXiaofeng888
บทความนี้มีประมาณ 1800 คำ การอ่านทั้งหมดใช้เวลาประมาณ 3 นาที
คีย์ส่วนตัวไม่ปลอดภัยอีกต่อไป
สรุปโดย AI
คีย์ส่วนตัวไม่ปลอดภัยอีกต่อไป

ผลิตโดย Odaily

ผู้แต่ง | ฉิน เสี่ยวเฟิง

บรรณาธิการ | หลู่ เสี่ยวหมิง

(ภาพจากcryptonomist)

ตามsecurity evaluatorsผลิตโดย Odaily

บรรณาธิการ | หลู่ เสี่ยวหมิง

คำอธิบายภาพ

(ภาพจาก

ตาม

ข่าว สำนักงานประเมินความปลอดภัยอิสระ (ISE) เพิ่งเปิดตัวการศึกษาใหม่ที่เรียกว่า Ethercombing ซึ่งมุ่งเน้นไปที่ความปลอดภัยของคีย์ส่วนตัวของกระเป๋าเงิน Ethereum

ISE พบว่าขณะนี้มีคีย์ส่วนตัว 732 รายการบน Ethereum blockchain ที่มีความเสี่ยงที่จะถูกขโมยเนื่องจากการสุ่มที่ต่ำ นอกจากนี้ ตั้งแต่ปีที่แล้ว กลุ่มแฮ็กเกอร์ที่ชื่อว่า "Blockchainbandit" ได้ดำเนินกิจกรรมการขโมยผ่านคีย์ส่วนตัวที่มีความปลอดภัยต่ำ สูงถึง 37,926 ETH (มูลค่า 54 ล้านดอลลาร์ในขณะนั้น) จนถึงวันนี้องค์กรยังไม่หยุดนิ่ง

ชื่อเรื่องรอง

  • 0x47579DA2BEA463533DBFAD6FCF8E90876C2FE9760DC1162ACC4059EE37BDDB5C

การสุ่มคีย์ส่วนตัวไม่สูง

  • 0x0000000000000000000000000000000000000000000000000000000037BDDB5C

การสร้างรหัสสาธารณะและที่อยู่ Ethereum ขึ้นอยู่กับรหัสส่วนตัว ด้วยรหัสส่วนตัว สามารถสร้างรหัสสาธารณะและที่อยู่ได้ และสามารถใช้ Ethereum (ETH) ในที่อยู่ที่เกี่ยวข้องได้

คีย์ส่วนตัวเป็นตัวเลขสุ่มโดยพื้นฐานแล้ว อาร์เรย์มี 32 ไบต์ 1 ไบต์เท่ากับไบนารี 8 บิต และไบนารีมีเพียงสองค่าเท่านั้น: 0 หรือ 1 ดังนั้นจำนวนคีย์ส่วนตัวทั้งหมดจึงเกือบ 2^(8*32)=2^256 และความน่าจะเป็นของการถอดรหัสคีย์ส่วนตัวคือ 1/2^256

Adrian Bednarek นักวิจัยของ ISE กล่าวว่าแม้ว่าจะยังมีความเป็นไปได้ในทางทฤษฎี แต่จริงๆ แล้วเป็นไปไม่ได้เลยที่จะบังคับถอดรหัสคีย์ส่วนตัว แม้ว่าเราจะใช้ทรัพยากรในการประมวลผลที่ช่วยให้เราสร้างคีย์ได้ 100 ล้านล้านคีย์ต่อวินาที แต่ก็จะใช้เวลาประมาณสองสามปี และเราไม่มีทรัพยากรในการประมวลผลดังกล่าวเลย

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

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

สำหรับคอมพิวเตอร์ การถอดรหัสคีย์ส่วนตัวแบบ 32 บิตนั้นยากน้อยกว่าคีย์ส่วนตัวแบบ 256 บิตมาก

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

นักวิจัยของ ISE พบในการทดลองว่าปัจจุบันมีคีย์ส่วนตัว 732 คีย์บนบล็อกเชน Ethereum ซึ่งการสุ่มไม่แข็งแรงและมีความเสี่ยงที่จะรั่วไหล คีย์ส่วนตัวเหล่านี้ยังคงทำงานอยู่และเชื่อมโยงกับธุรกรรม 49,060 รายการบนเชน

เพื่อทดสอบคีย์ส่วนตัวที่มีความปลอดภัยต่ำที่พบ นักวิจัยของ ISE ได้โอน ETH มูลค่า $1 ไปยังที่อยู่แห่งใดแห่งหนึ่ง และโทเค็นก็ถูกโอนออกไปในไม่กี่วินาทีต่อมา

การติดตามของ ISE พบว่าในที่สุดโทเค็นก็ไหลไปยังกระเป๋าเงินขององค์กรแฮ็กเกอร์ที่เรียกว่า "Blockchainbandit" องค์กรได้ขโมยคีย์ส่วนตัวโดยมีการรักษาความปลอดภัยที่อ่อนแอตั้งแต่เดือนมกราคม 2018 เมื่อถึงจุดสูงสุด ยอดคงเหลือของที่อยู่สูงถึง 37,926 ETH ซึ่งมีมูลค่า 54 ล้านดอลลาร์ในขณะนั้น จนถึงวันนี้องค์กรยังไม่หยุดนิ่ง

  • ชื่อเรื่องรอง

  • Ethereum เองก็ไม่มีปัญหา

  • หากมีปัญหากับคีย์ส่วนตัวแสดงว่ามีช่องโหว่ในเทคโนโลยีของ Ethereum blockchain เองหรือไม่? Hu Jingyu นักวิจัย Ethereum บอกกับ Odaily ว่าคีย์ส่วนตัวที่มีความปลอดภัยต่ำซึ่งปรากฏอยู่ในปัจจุบันนั้นเป็นปัญหาส่วนใหญ่ของกระเป๋าเงินและไม่มีส่วนเกี่ยวข้องกับ Ethereum เอง Chen Changwu ผู้พัฒนาหลักของ Ethereum เชื่อว่าไม่มีปัญหากับอัลกอริทึมของ Ethereum เอง

  • Chen Changwu เสริมว่านอกเหนือจากตัวเลขสุ่มแล้ว ค่า K ที่ใช้ในกระบวนการลายเซ็นจะส่งผลต่อความปลอดภัยของคีย์ส่วนตัวด้วย "ค่า K ลับจะใช้ในกระบวนการสร้างลายเซ็น ปัจจุบันทั้ง BTC และ ETH ใช้ RFC6979 เพื่อสร้างค่านี้ ค่า K นี้ต้องเป็นค่าสุ่มและไม่ซ้ำกัน อย่างไรก็ตาม โปรแกรมเมอร์บางคนที่ไม่คุ้นเคยกับการเขียนโปรแกรมอัลกอริทึมการเข้ารหัส มีแนวโน้มที่จะเพิกเฉยรายละเอียดเหล่านี้นำไปสู่การรั่วไหลของคีย์ส่วนตัว”

  • ในตอนท้ายของรายงาน ISE ยังให้คำแนะนำแก่นักพัฒนาและผู้ใช้:

  • สำหรับนักพัฒนา:

  • สร้างตัวเลขสุ่มโดยใช้ไลบรารีที่รู้จักกันดีหรือโมดูลเฉพาะแพลตฟอร์ม

ใช้ตัวสร้างตัวเลขสุ่มหลอกที่ปลอดภัยด้วยการเข้ารหัส

  • ตรวจสอบซอร์สโค้ดและคอมไพล์โค้ดที่สร้างขึ้นเพื่อตรวจสอบว่าคีย์ที่สร้างขึ้นแบบสุ่มไม่ได้ถูกตัดทอน

  • ใช้แหล่งเอนโทรปีหลายแหล่ง

  • ใช้คำสั่งการสร้างหมายเลขสุ่มของฮาร์ดแวร์ที่สอดคล้องกับ NIST (RDRAND/RDSEED) ซึ่งจัดทำโดย AMD/Intel*

ดูคำแนะนำ NIST/FIPS เกี่ยวกับการสร้างตัวเลขสุ่มแบบเข้ารหัส

ตรวจสอบและใช้ NIST Statistical Test Suite (NIST SP 800-22)Arvind Krishna สำหรับผู้ใช้ที่ใช้กระเป๋าเงิน:

开发者
ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android