Score:3

เคล็ดลับ Strauss-Shamir ในการคูณ EC ด้วยสเกลาร์

ธง cn

ฉันกำลังศึกษา ECDSA และบทความที่มีรายละเอียดเกือบทั้งหมดพูดถึงการใช้กลอุบายของ Strauss-Shamir ในขั้นตอนการยืนยัน
จากนั้นฉันก็ค้นหาและพบ นี้ คำอธิบาย (เหมือนการระบุ) สำหรับอัลกอริทึม จากนั้น อื่น ๆ นี้ pdf (หน้า 7) ที่อธิบายรายละเอียดเพิ่มเติมอีกเล็กน้อย แต่ไม่มีใครให้คำอธิบาย ทำไม มันได้ผล.
ฉันต้องการให้มีการสาธิตหรือตัวอย่างทีละขั้นตอน ? อะไรก็ตามที่มาจาก Shamir-Straus สำหรับหุ่นเชิด สำหรับการสาธิตที่เป็นทางการหรือการอ้างอิงถึงผลงานใดๆ สำหรับฉัน คณิตศาสตร์ไม่ควรเป็นปัญหา

fgrieu avatar
ng flag
คุณเข้าใจเคล็ดลับ Shamir พื้นฐานที่ใช้ใน (ไม่ใช่ EC) DSA เพื่อคำนวณ $g^u\,y^v\bmod p$ เร็วกว่าอย่างเห็นได้ชัด $(g^u\bmod p)\,(y ^v\bmod p)\bmod p$? มันจะใช้ใน ECDSA ด้วย ฉันคิดว่าเคล็ดลับ Strauss-Shamir เป็นส่วนเสริม ฉันไม่คุ้นเคยกับมัน
cn flag
ฉันเกรงว่าฉันไม่เคยได้ยินเรื่องนี้
fgrieu avatar
ng flag
อา ฉันคิดว่าเคล็ดลับ Shamir เป็นขั้นตอนที่มีประโยชน์ ก่อนหน้านี้: คุณเข้าใจการยกกำลังแบบแยกส่วนด้วยกำลังสองและการคูณด้วยการสแกนเลขยกกำลังที่เริ่มจากบิตที่สำคัญที่สุดหรือไม่ เช่น. เราสามารถคำนวณ $g^{21}\bmod p$ ด้วย 4 modular squaring และ 2 modular multiplications โดยมีขั้นกลาง $g^2\bmod p$, $g^4\bmod p$, $g^5\bmod p$, $g^{10}\bmod p$, $g^{20}\bmod p$ และสุดท้าย $g^{21}\bmod p$ ?
cn flag
ฉันได้ดู [คำถามนี้](https://math.stackexchange.com/questions/119374/modular-exponentiation-by-repeated-squaring)เพื่อทำความเข้าใจสิ่งที่คุณพูด และฉันก็สรุปได้ว่า ชนิดของความคิดที่อยู่เบื้องหลังมัน $ g^{21} = g^{(10101)_2} = g^{16}*g^{4}*g $ ดังนั้น คุณต้องคำนวณ $g^{20} $ โดยการคำนวณการคูณที่น้อยที่สุดเท่านั้น ของพลังที่ต่ำที่สุดเท่าที่จะเป็นไปได้เพื่อให้ได้ผลลัพธ์ (ฉันยังไม่เข้าใจเคล็ดลับของ Shamir-Strauss ในการคูณ EC ด้วยสเกลาร์)
cn flag
แต่การทำความเข้าใจสิ่งที่คุณแนะนำทำให้ฉันมีสติปัญญาที่จะลองและเข้าใจการอ้างอิงที่ระบุไว้อย่างลึกซึ้งยิ่งขึ้น ขอบคุณ !
pe flag
[แบบสำรวจของเบิร์นสไตน์](https://cr.yp.to/papers/pippenger-20020118-retypeset20220327.pdf)เกี่ยวกับวิธีการยกกำลังรวมถึงวิธีของ[Straus](https://www.jstor.org/stable/2310929)ในส่วน 3.
Score:3
ธง ng

ฉันจะอธิบายเคล็ดลับ Shamir มาตรฐานที่ปรับให้เข้ากับบริบทของ การตรวจสอบลายเซ็น ECDSA. การลดดัชนีลง ส่วนที่แพงในการคำนวณคือการคำนวณ $$u\cdot G+v\cdot Q$$ ที่ไหน $u$ และ $v$ คือ (เราถือว่าเป็นจำนวนเต็มบวกอย่างเคร่งครัด) $G$ และ $คิว$ เป็นจุด Elliptic Curve และ $+$ เป็นการเพิ่มจุด (ซึ่งสำหรับการทำให้เข้าใจง่ายฉันถือว่าเป็นกล่องดำซึ่งการดำเนินการควบคุมค่าใช้จ่ายในการคำนวณ) จำได้ว่าโดยความหมายแล้ว $$u\cdot G=\underbrace{G+G+\ldots+G+G}_{u\text{ เงื่อนไข}}$$

ทราบดี $\mathbin\|u\mathbin\|$ สำหรับจำนวนบิตที่เป็นจำนวนเต็ม $u$, นั่นคือ $\left\floor\log_2(u)+1\right\rfloor$; เหมือนกันสำหรับ $\mathbin\|v\mathbin\|$.

วิธีทั่วไปของการคำนวณ $u\cdot G$ คือการ

  • ชุด $R:=G$
  • สำหรับบิต $ข$ คัดลอกมาจากการแทนเลขฐานสองของ $u$, เริ่มต้นที่ดัชนี $\mathbin\|u\mathbin\|-1$ (บิตแรกทางขวาของซ้ายสุด $1$ บิต) ลงไปที่ $0$ (บิตขวาสุด)
    • ชุด $R:=R+R$
    • ถ้า $b=1$, ชุด $R:=R+G$

วิธีพื้นฐานในการคำนวณ $u\cdot G+v\cdot Q$ น่าจะเป็นการคำนวณ $u\cdot G$, แล้ว $v\cdot Q$ ด้วยวิธีการเดียวกัน แล้วนำผลลัพธ์ทั้งสองมาบวกกัน เคล็ดลับของ Shamir ดีขึ้น:

  • ชุด $H:=G+Q$
  • ถ้า $\mathbin\|u\mathbin\|>\mathbin\|v\mathbin\|$, ชุด $R:=G$;
  • อย่างอื่นถ้า $\mathbin\|u\mathbin\|<\mathbin\|v\mathbin\|$, ชุด $R:=คิว$;
  • อื่น (นั่นคือถ้า $\mathbin\|u\mathbin\|=\mathbin\|v\mathbin\|$ ), ชุด $R:=H$;
  • สำหรับบิต $ข$ (ตอบกลับ $ค$) คัดลอกมาจากการแสดงเลขฐานสองของ $u$ (ตอบกลับ $v$) โดยมีตัวแทนของ $u$ หรือ $v$ เบาะซ้ายด้วยศูนย์เท่าที่จำเป็น ที่ดัชนีจาก $\max(\mathbin\|u\mathbin\|,\mathbin\|v\mathbin\|)-1$ ลงไป $0$
    • ชุด $R:=R+R$
    • ถ้า $b=1$ และ $ค=0$, ชุด $R:=R+G$
    • (อื่น ๆ ) ถ้า $b=0$ และ $ค=1$, ชุด $R:=R+Q$
    • (อื่น ๆ ) ถ้า $b=1$ และ $ค=1$, ชุด $R:=R+H$

ข้อความนี้เกือบจะเทียบเท่ากับข้อความที่ระบุใน คำตอบนี้ ภายใต้ชื่อ Strauss-Shamir trick (พอรู้ว่าเป็นกลลวงของชามีร์) ตัวแปรที่ฉันให้หลีกเลี่ยงความจำเป็นในการรู้จักกลุ่มที่เป็นกลาง แต่ต้องการ $\max(u,v)>0$.

ความถูกต้องของการคูณจุดมาตรฐานและเคล็ดลับของ Shamir สามารถพิสูจน์ได้อย่างเป็นทางการโดยการอุปนัย

สำหรับการสุ่มขนาดใหญ่ $u$ และ $v$ ของ $k$ บิต อัลกอริทึมไร้เดียงสาในการคำนวณ $u\cdot G+v\cdot Q$ ดำเนินการโดยเฉลี่ย $\ประมาณ3k$ การเพิ่มจุดเคล็ดลับของ Shamir ช่วยลดสิ่งนั้นลง $\ประมาณ1.75k$เช่น น้อยกว่า 42% (ผลประโยชน์ด้านต้นทุนต่ำกว่า ส่วนใหญ่เป็นเพราะจุดสองเท่า $R:=R+R$ เป็นการเพิ่มจุดที่เร็วที่สุดและจุดที่ลดลงมากที่สุด) มีการปรับปรุงเพิ่มเติมที่เป็นไปได้ เช่น จัดกลุ่มบิตทีละสองหรือมากกว่านั้น อาจมี "หน้าต่างเลื่อน" เมื่อ $b=0=c$.

โปรดสังเกตว่าในบริบทของการตรวจสอบลายเซ็น $u$, $v$, $G$ และ $คิว$ ทั้งหมดเป็นแบบสาธารณะ ดังนั้นแชนเนลด้านข้าง (การจับเวลา การดึงพลังงาน การปล่อย แคชâ¦) จึงไม่ใช่ปัญหาด้านความปลอดภัย เนื่องจากอยู่ในการสร้างลายเซ็น

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

โพสต์คำตอบ

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