0Pricing
Cryptology Academy · บทเรียน

ลายเซ็น BLS และโครงร่างลายเซ็นรวม

สำรวจ pairing ของ BLS12-381 การรวมลายเซ็น และวิธีที่ Ethereum 2.0 ใช้ BLS เพื่อลดภาระของผู้ตรวจสอบ

ลายเซ็น BLS และโครงร่างลายเซ็นรวม เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจับคู่แบบทวิ-เชิงเส้น: พื้นฐานทางคณิตศาสตร์

ลายเซ็น BLS อาศัยการจับคู่แบบทวิ-เชิงเส้น ซึ่งเป็นการดำเนินการทางคณิตศาสตร์บนเส้นโค้งวงรี การจับคู่ e: G1 x G2 -> GT จะแปลงคู่จุดจากสองกลุ่ม (G1, G2) ไปเป็นกลุ่มเป้าหมาย GT คุณสมบัติสำคัญคือความเป็นทวิ-เชิงเส้น: e(aP, bQ) = e(P, Q)^(ab) สำหรับสเกลาร์ a, b และจุด P, Q คุณสมบัตินี้ทำให้ตรวจสอบความสัมพันธ์ระหว่างสมาชิกของกลุ่มได้โดยไม่ต้องทราบลอการิทึมไม่ต่อเนื่อง เส้นโค้งสำหรับการจับคู่ที่ใช้มากที่สุดในการเข้ารหัสคือ BLS12-381 ซึ่งเลือกใช้เนื่องจากมีระดับความปลอดภัย 128 บิต ขนาดสมาชิกกลุ่มเล็ก (48 ไบต์ใน G1 และ 96 ไบต์ใน G2) และคำนวณการจับคู่ได้อย่างมีประสิทธิภาพ

โครงสร้างลายเซ็น BLS

ลายเซ็น BLS (Boneh-Lynn-Shacham) ทำงานดังนี้ การสร้างกุญแจ: กุญแจส่วนตัว x เป็นสเกลาร์แบบสุ่ม ส่วนกุญแจสาธารณะคือ PK = x * G โดย G เป็นตัวสร้างของ G2 การลงนาม: เมื่อมีข้อความ m ให้คำนวณ H = hash-to-curve(m) ใน G1 จากนั้นคำนวณ sigma = x * H ลายเซ็น sigma เป็นจุด G1 เพียงจุดเดียว (48 ไบต์บน BLS12-381) การตรวจสอบ: ตรวจสอบว่า e(sigma, G) == e(H, PK) ตามคุณสมบัติทวิ-เชิงเส้น e(x*H, G) = e(H, G)^x = e(H, x*G) = e(H, PK) ความปลอดภัยอาศัยข้อสมมติ co-CDH: การคำนวณ x*H เมื่อทราบ H และ x*G เป็นเรื่องยากหากไม่ทราบ x

การรวมลายเซ็น: นวัตกรรมสำคัญ

ลายเซ็น BLS รองรับการรวมแบบไม่โต้ตอบ เมื่อมีลายเซ็น sigma_1, ..., sigma_n บนข้อความ m_1, ..., m_n จากกุญแจสาธารณะ PK_1, ..., PK_n ผู้รวมสามารถคำนวณ sigma_agg = sigma_1 + sigma_2 + ... + sigma_n (การบวกจุดบนเส้นโค้งวงรี) ลายเซ็นรวมมีขนาดเพียง 48 ไบต์ไม่ว่า n จะมีค่าเท่าใด การตรวจสอบต้องใช้การดำเนินการจับคู่ n+1 ครั้ง โดยตรวจสอบว่า e(sigma_agg, G) == product(e(H_i, PK_i)) สำหรับกรณีทั่วไปที่ผู้ลงนามทุกคนลงนามในข้อความเดียวกัน การตรวจสอบจะลดเหลือการจับคู่ 2 ครั้ง: e(sigma_agg, G) == e(H, sum(PK_i))

การโจมตีด้วยกุญแจโกงและการป้องกัน

การรวมลายเซ็น BLS แบบพื้นฐานมีช่องโหว่ต่อการโจมตีด้วยกุญแจโกง ผู้โจมตีลงทะเบียน PK_adv = x_adv*G - PK_honest ทำให้กุญแจรวม PK_agg = PK_honest + PK_adv = x_adv*G ซึ่งผู้โจมตีควบคุมได้ทั้งหมด ทางเลือกในการป้องกันมีดังนี้ (1) หลักฐานการครอบครอง (PoP): ผู้ลงนามแต่ละรายพิสูจน์ว่าตนรู้กุญแจส่วนตัวของตน โดยลงนามในกุญแจสาธารณะของตนเองระหว่างการลงทะเบียน (2) การเสริมข้อความ: ใส่กุญแจสาธารณะของผู้ลงนามแต่ละรายไว้ในข้อความของผู้ลงนามนั้น (3) การทำให้ไม่เป็นเชิงเส้น (BGLS): คูณกุญแจสาธารณะแต่ละดอกด้วย hash(PK_i, all_PKs) ก่อนรวม ซึ่งทำลายความเป็นเชิงเส้นที่ทำให้เกิดการโจมตี Ethereum ใช้ PoP ในการลงทะเบียนผู้ตรวจสอบ

การใช้งาน BLS ใน Ethereum 2.0

เลเยอร์ฉันทามติของ Ethereum (Beacon Chain) ใช้การรวม BLS12-381 อย่างกว้างขวาง ในแต่ละช่องเวลา ผู้ตรวจสอบที่ทำงานอยู่ประมาณ 400,000 รายขึ้นไปจะรับรองหัวโซ่ หากไม่รวมลายเซ็น การจัดเก็บลายเซ็นทั้งหมดจะต้องใช้พื้นที่ประมาณ 400,000 * 96 ไบต์ = 38 MB ต่อช่องเวลา เมื่อรวมลายเซ็นแยกตามคณะกรรมการ (โดยทั่วไปมีผู้ตรวจสอบ 512 ราย) คณะกรรมการแต่ละชุดจะสร้างลายเซ็นรวมขนาด 96 ไบต์หนึ่งรายการ ทำให้ข้อมูลลายเซ็นทั้งหมดลดลงเหลือระดับกิโลไบต์ต่อช่องเวลา เนื้อหาบล็อกของ Beacon Chain จะมีการรับรองที่รวมไว้ ซึ่งประกอบด้วยฟิลด์บิตที่ระบุว่าผู้ตรวจสอบรายใดเข้าร่วม และลายเซ็น BLS รวมหนึ่งรายการสำหรับแต่ละคณะกรรมการ

ประสิทธิภาพของ BLS เทียบกับ ECDSA

การดำเนินการลายเซ็น BLS มีลักษณะด้านประสิทธิภาพแตกต่างจาก ECDSA การลงนามด้วย BLS ต้องใช้การแฮชลงเส้นโค้งหนึ่งครั้งและการคูณสเกลาร์หนึ่งครั้ง (~1 มิลลิวินาทีบนฮาร์ดแวร์สมัยใหม่) การตรวจสอบ BLS ต้องใช้การดำเนินการจับคู่สองครั้ง (~3-5 มิลลิวินาทีต่อครั้ง รวมประมาณ ~6-10 มิลลิวินาที) การลงนามด้วย ECDSA ต้องใช้การคูณจุดหนึ่งครั้ง (~0.2 มิลลิวินาที) ส่วนการตรวจสอบต้องใช้การคูณจุดสองครั้ง (~0.4 มิลลิวินาที) การตรวจสอบ BLS ช้ากว่าต่อลายเซ็นหนึ่งรายการ แต่เร็วกว่าอย่างมากเมื่อรวมหลายรายการ: การตรวจสอบลายเซ็น BLS 1000 รายการที่รวมกันใช้เวลารวมประมาณ ~10 มิลลิวินาที เทียบกับ ~400 มิลลิวินาทีสำหรับการตรวจสอบ ECDSA 1000 รายการแยกกัน จุดคุ้มทุนอยู่ที่ประมาณ 2-3 ลายเซ็น

ลายเซ็น BLS แบบมีขีดจำกัด

BLS แบบมีขีดจำกัดขยายการรวมลายเซ็นไปสู่การแบ่งปันความลับ ในโครงร่างแบบมีขีดจำกัด (t, n) กุญแจส่วนตัวจะถูกแบ่งออกเป็นส่วนแบ่ง n ส่วนโดยใช้การแบ่งปันความลับของ Shamir เหนือฟิลด์สเกลาร์ของ BLS ผู้ถือส่วนแบ่งแต่ละราย i จะสร้างลายเซ็นบางส่วน sigma_i = sk_i * H(m) สามารถรวมลายเซ็นบางส่วนจำนวน t รายการใด ๆ ได้โดยใช้สัมประสิทธิ์การแทรกพหุนามของ Lagrange: sigma = sum(lambda_i * sigma_i) ผลลัพธ์เหมือนกับลายเซ็นที่สร้างโดยกุญแจเดิมทุกประการ แต่ไม่มีฝ่ายใดฝ่ายหนึ่งถือกุญแจทั้งหมด ลายเซ็น BLS แบบมีขีดจำกัดใช้ในเทคโนโลยีผู้ตรวจสอบแบบกระจาย (DVT) กระเป๋า MPC และบริการลงนามแบบมีขีดจำกัด เช่น Fireblocks และ Web3Auth

BLS ในเครือข่าย Filecoin

Filecoin ใช้ลายเซ็น BLS สำหรับระบบหลักฐานพื้นที่จัดเก็บและการลงนามธุรกรรม นักขุดพื้นที่จัดเก็บรวมหลักฐานหลายรายการด้วยการรวม BLS เพื่อลดต้นทุนการตรวจสอบบนเชน กลุ่มข้อความของ Filecoin ยังรวมลายเซ็นธุรกรรมหลายรายการเป็นลายเซ็นรวมเดียว เพื่อลดขนาดบล็อก การนำไปใช้งานของ Filecoin ใช้มาตรฐาน BLS ฉบับร่างของ IETF (การแฮชลงเส้นโค้งตาม RFC 9380 และเส้นโค้ง BLS12-381) พร้อมรูปแบบขนาดกุญแจสาธารณะขั้นต่ำ ซึ่งกุญแจสาธารณะอยู่ใน G1 (48 ไบต์) และลายเซ็นอยู่ใน G2 (96 ไบต์) ซึ่งตรงข้ามกับแนวทางของ Ethereum

BLS ใน Zcash และโพรโทคอลความเป็นส่วนตัว

แม้ว่า Zcash จะใช้หลักฐาน Groth16 zk-SNARK เป็นหลัก แต่การจับคู่ BLS เป็นพื้นฐานของโครงสร้างแบบพิสูจน์ความรู้เป็นศูนย์จำนวนมาก สมการตรวจสอบของ Groth16 เป็นการตรวจสอบการจับคู่: e(A, B) = e(alpha, beta) * e(vk, C) โดย A, B, C เป็นองค์ประกอบของหลักฐาน ข้อผูกมัดพหุนาม KZG (ซึ่งใช้ในธุรกรรมบล็อบของ Ethereum ตาม EIP-4844 และระบบ ZK rollup ต่าง ๆ) ก็อาศัยการจับคู่ BLS12-381 เช่นกัน โดยข้อผูกมัดของพหุนาม f(x) คือ C = f(tau)*G และหลักฐานค่าที่ประเมินจะได้รับการตรวจสอบด้วยการจับคู่ BLS12-381 ได้รับการเลือกมาโดยเฉพาะเนื่องจากมีการดำเนินการจับคู่ที่มีประสิทธิภาพและระดับความปลอดภัย 128 บิต

ลายเซ็นแบบรวมได้นอกเหนือจาก BLS

BLS ไม่ใช่โครงร่างลายเซ็นแบบรวมได้เพียงแบบเดียว ลายเซ็น Schnorr รองรับการรวมกุญแจ (MuSig2 ซึ่งใช้ใน Bitcoin Taproot) โดยผู้ลงนามหลายรายจะสร้างลายเซ็น Schnorr เดียวที่แยกไม่ออกจากลายเซ็นของผู้ลงนามเพียงรายเดียว FROST (ลายเซ็น Schnorr แบบมีขีดจำกัดที่ยืดหยุ่นและปรับรอบให้เหมาะสม) ให้ลายเซ็น Schnorr แบบมีขีดจำกัดโดยใช้สองรอบ อย่างไรก็ตาม การรวม Schnorr ต้องมีการโต้ตอบระหว่างผู้ลงนาม (ต่างจากการรวมแบบไม่โต้ตอบของ BLS) จึงเหมาะสมน้อยกว่าสำหรับชุดผู้ตรวจสอบขนาดใหญ่ BLS ยังคงเป็นตัวเลือกที่ได้รับความนิยมสำหรับฉันทามติของบล็อกเชน เนื่องจากรองรับการรวมแบบไม่โต้ตอบและการตรวจสอบเป็นชุดที่มีประสิทธิภาพ

แนวโน้มของ BLS ในยุคหลังควอนตัม

ลายเซ็น BLS อาศัยการจับคู่บนเส้นโค้งวงรี ซึ่งเสี่ยงต่อคอมพิวเตอร์ควอนตัมที่ใช้อัลกอริทึมของ Shor คอมพิวเตอร์ควอนตัมที่มีประสิทธิภาพเพียงพออาจคำนวณลอการิทึมไม่ต่อเนื่องใน BLS12-381 ได้ ทำให้ลายเซ็น BLS ที่มีอยู่ทั้งหมดถูกทำลายและทำลายความปลอดภัยของฉันทามติของ Ethereum กรอบเวลายังไม่แน่นอน แต่ NIST ประเมินว่าอาจใช้เวลา 15-20 ปีกว่าจะมีคอมพิวเตอร์ควอนตัมที่มีความสามารถเพียงพอต่อการเข้ารหัส Ethereum และเชนอื่นที่พึ่งพา BLS จะต้องย้ายไปใช้แบบแผนลายเซ็นหลังยุคควอนตัม (CRYSTALS-Dilithium/ML-DSA หรือ SPHINCS+/SLH-DSA) ก่อนที่ภัยคุกคามนี้จะเกิดขึ้นจริง การย้ายระบบต้องปรับเปลี่ยนระดับโพรโทคอลสำหรับการลงทะเบียนผู้ตรวจสอบความถูกต้อง รูปแบบการรับรอง และการตรวจสอบการรวม

แบบทดสอบการรวมลายเซ็น BLS

ข้อได้เปรียบหลักของการรวมลายเซ็น BLS ในชั้นฉันทามติของ Ethereum คืออะไร

ทบทวนลายเซ็น BLS

ลายเซ็น BLS ใช้การจับคู่แบบบิลิเนียร์บนเส้นโค้ง BLS12-381 ลายเซ็นเป็นจุด G1 ขนาด 48 ไบต์ ส่วนกุญแจสาธารณะเป็นจุด G2 ขนาด 96 ไบต์ตามรูปแบบที่ Ethereum ใช้ การรวมแบบไม่โต้ตอบจะรวมลายเซ็น n รายการเป็นค่าเดียวขนาด 48 ไบต์ ซึ่งตรวจสอบด้วยการจับคู่ n+1 ครั้ง การโจมตีด้วยกุญแจปลอมได้รับการบรรเทาด้วยหลักฐานการครอบครองระหว่างการลงทะเบียนผู้ตรวจสอบความถูกต้อง Ethereum ใช้ BLS เพื่อบีบอัดการรับรองจากผู้ตรวจสอบความถูกต้องกว่า 400,000 รายการต่อช่วงเวลาให้เหลือเพียงไม่กี่กิโลไบต์ BLS แบบกำหนดเกณฑ์ช่วยให้มีผู้ตรวจสอบความถูกต้องแบบกระจายศูนย์โดยไม่มีผู้ถือกุญแจเพียงรายเดียว BLS อาศัยการจับคู่และไม่ปลอดภัยต่อคอมพิวเตอร์ควอนตัม จึงจำเป็นต้องย้ายระบบในอนาคต

คำถามที่พบบ่อย

บทเรียน “ลายเซ็น BLS และโครงร่างลายเซ็นรวม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลายเซ็น BLS และโครงร่างลายเซ็นรวม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลายเซ็น BLS และโครงร่างลายเซ็นรวม”

สำรวจ pairing ของ BLS12-381 การรวมลายเซ็น และวิธีที่ Ethereum 2.0 ใช้ BLS เพื่อลดภาระของผู้ตรวจสอบ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ลายเซ็น BLS และโครงร่างลายเซ็นรวม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กลไกการเข้ารหัสของ Proof-of-Stake
  2. โพรโทคอล BFT: PBFT และ Tendermint
  3. ฟังก์ชันสุ่มที่ตรวจสอบได้ในระบบเอกฉันท์
  4. ลายเซ็น BLS และโครงร่างลายเซ็นรวม
← กลับไปที่ Cryptology Academy