เมื่อต้นปีนี้ เราได้เปิดตัว a โปรแกรมรางวัลบั๊ก มุ่งเน้นไปที่การค้นหาปัญหาในข้อกำหนดเฉพาะของบีคอนเชน และ/หรือในการใช้งานไคลเอ็นต์ (ประภาคาร, Nimbus, Teku, Prysm ฯลฯ…) ผลลัพธ์ (และรายงานช่องโหว่) ได้รับการให้ความกระจ่างเช่นเดียวกับบทเรียนที่ได้รับพร้อมกับการแก้ไขปัญหาที่อาจเกิดขึ้น
ในซีรี่ส์ใหม่นี้ เรามุ่งหวังที่จะสำรวจและแบ่งปันข้อมูลเชิงลึกบางส่วนที่เราได้รับจากงานด้านความปลอดภัยจนถึงปัจจุบันและในขณะที่เราก้าวไปข้างหน้า
โพสต์แรกนี้จะวิเคราะห์การส่งบางส่วนที่กำหนดเป้าหมายไปที่ BLS ดั้งเดิมโดยเฉพาะ
ข้อสงวนสิทธิ์: ข้อบกพร่องทั้งหมดที่กล่าวถึงในโพสต์นี้ได้รับการแก้ไขแล้ว
BLS มีอยู่ทั่วไป

ไม่กี่ปีที่ผ่านมา ดิเอโก เอฟ. อรันฮา ได้มาบรรยายที่ การประชุมเชิงปฏิบัติการครั้งที่ 21 เรื่องการเข้ารหัส Elliptic Curve มีชื่อเรื่อง: การจับคู่ยังไม่ตายเพียงแค่พักผ่อน เป็นคำทำนายอย่างไร
เราอยู่ในปี 2021 และการจับคู่เป็นหนึ่งในนักแสดงหลักที่อยู่เบื้องหลังการเข้ารหัสลับแบบดั้งเดิมจำนวนมากที่ใช้ในพื้นที่บล็อกเชน (และอื่น ๆ): บีแอลเอส ลายเซ็นรวม ระบบ ZK-SNARKS ฯลฯ
งานพัฒนาและกำหนดมาตรฐานที่เกี่ยวข้องกับลายเซ็น BLS เป็นโครงการต่อเนื่องสำหรับนักวิจัยของ EF มาระยะหนึ่งแล้ว โดยได้รับแรงผลักดันบางส่วนจาก จัสติน เดรค และสรุปไว้ใน โพสต์ล่าสุดของเขาใน Reddit–
ล่าสุดและยิ่งใหญ่ที่สุด
ในระหว่างนี้ก็มีการอัพเดตมากมาย BLS12-381 ปัจจุบันได้รับการยอมรับในระดับสากลว่าเป็น เส้นโค้งการจับคู่ ที่จะใช้ ด้วยความรู้ของเราในปัจจุบัน–
ร่าง IRTF ที่แตกต่างกันสามแบบกำลังอยู่ระหว่างการพัฒนา:
นอกจากนี้ ข้อมูลจำเพาะของห่วงโซ่บีคอน ได้ครบกำหนดและใช้งานบางส่วนแล้ว ตามที่กล่าวไว้ข้างต้น ลายเซ็น BLS เป็นส่วนสำคัญของปริศนาที่อยู่เบื้องหลัง Proof-of-Stake (PoS) และสายสัญญาณบีคอน
บทเรียนล่าสุดที่ได้เรียนรู้
หลังจากรวบรวมการส่งที่กำหนดเป้าหมาย BLS ดั้งเดิมที่ใช้ในเลเยอร์ฉันทามติแล้ว เราสามารถแบ่งข้อบกพร่องที่รายงานออกเป็นสามส่วน:
- ร่างการกำกับดูแล IRTF
- ข้อผิดพลาดในการดำเนินการ
- การละเมิดการดำเนินการร่าง IRTF
เรามาซูมเข้าไปในแต่ละส่วนกันดีกว่า
ร่างการกำกับดูแล IRTF
ผู้สื่อข่าวคนหนึ่ง (เหงียนถ่อยมินห์กวน) พบความคลาดเคลื่อนใน ร่าง IRTFและตีพิมพ์เอกสารไวท์เปเปอร์สองฉบับพร้อมข้อค้นพบ:
ในขณะที่ความไม่สอดคล้องกันโดยเฉพาะยังคงมีอยู่ สำหรับการอภิปรายเขาพบสิ่งที่น่าสนใจ การดำเนินการ ปัญหา ในขณะที่ทำการวิจัยของเขา
ข้อผิดพลาดในการดำเนินการ
กุยโด วรันเคน สามารถค้นพบปัญหา “เล็กๆ น้อยๆ” หลายประการได้ บีแอลเอสที โดยใช้ การคลุมเครือที่แตกต่างกัน– ดูตัวอย่างด้านล่าง:
เขาปิดท้ายด้วยการค้นพบช่องโหว่ระดับปานกลางที่ส่งผลกระทบต่อ ฟังก์ชัน blst_fp_eucl_inverse ของ BLST–
การละเมิดการดำเนินการร่าง IRTF
ข้อผิดพลาดประเภทที่สามเกี่ยวข้องกับการละเมิดการใช้งานร่าง IRTF คนแรกส่งผลกระทบต่อ ลูกค้าปริซึม–
เพื่ออธิบายสิ่งนี้ เราต้องให้ข้อมูลพื้นฐานเล็กน้อยก่อน ที่ ลายเซ็น BLS ร่าง IRTF ประกอบด้วย 3 โครงการ:
- โครงการพื้นฐาน
- การเพิ่มข้อความ
- หลักฐานการครอบครอง
ที่ ลูกค้าปริซึม ไม่ได้สร้างความแตกต่างระหว่าง 3 ใน API ซึ่งมีลักษณะเฉพาะในการใช้งาน (เช่น py_ecc– ความพิเศษอย่างหนึ่งเกี่ยวกับ โครงการพื้นฐาน เป็น การอ้างอิงคำต่อคำ– ‘ฟังก์ชันนี้ช่วยให้แน่ใจว่าข้อความทั้งหมดมีความแตกต่างกันก่อน’ – สิ่งนี้ไม่รับประกันใน รวมตรวจสอบ การทำงาน. Prysm แก้ไขความคลาดเคลื่อนนี้โดย การเลิกใช้งาน ของ รวมตรวจสอบ (ซึ่งไม่ได้ใช้ที่ใดในข้อกำหนดเฉพาะของบีคอนเชน)
ปัญหาที่สองได้รับผลกระทบ py_ecc– ในกรณีนี้ กระบวนการซีเรียลไลเซชันที่อธิบายไว้ใน ข้อมูลจำเพาะ ZCash BLS12-381 ที่เก็บจำนวนเต็มจะอยู่ในช่วงของเสมอ (0, หน้า – 1)– ที่ py_ecc การใช้งานได้ตรวจสอบกลุ่ม G2 ของ BLS12-381 เฉพาะสำหรับ ส่วนที่แท้จริง แต่ไม่ได้ดำเนินการแบบโมดูลัสสำหรับ ส่วนจินตภาพ– ปัญหาได้รับการแก้ไขแล้วด้วยคำขอดึงต่อไปนี้: การตรวจสอบความถูกต้องไม่เพียงพอใน decompress_G2 Deserialization ใน py_ecc–
ห่อขึ้น
วันนี้ เราได้ดูรายงานที่เกี่ยวข้องกับ BLS ที่เราได้รับโดยเป็นส่วนหนึ่งของเรา โปรแกรมรางวัลบั๊กแต่นี่ไม่ใช่จุดจบของเรื่องงานรักษาความปลอดภัยหรือการผจญภัยที่เกี่ยวข้องกับ BLS อย่างแน่นอน
เรา อย่างยิ่ง ให้กำลังใจ คุณ เพื่อช่วยให้แน่ใจว่าชั้นฉันทามติจะยังคงปลอดภัยยิ่งขึ้นเมื่อเวลาผ่านไป ด้วยเหตุนี้ เราหวังว่าจะได้รับการติดต่อจากคุณและสนับสนุนให้คุณ DIG! หากคุณคิดว่าคุณพบช่องโหว่ด้านความปลอดภัยหรือข้อบกพร่องใดๆ ที่เกี่ยวข้องกับบีคอนเชนหรือไคลเอนต์ที่เกี่ยวข้อง ส่งรายงานข้อผิดพลาด–
