Score:3

วิธีค้นหาระยะห่างระหว่างคีย์ส่วนตัวของจุด EC สองคีย์อย่างมีประสิทธิภาพ

ธง es

มีคีย์ส่วนตัว EC สองคีย์ $x_1$ และ $x_2$โดยที่คีย์สาธารณะที่สอดคล้องกันบนจุดฐานที่รู้จักกันดี $G$ เป็น $X_1=x_1G$ และ $X_2=x_2G$ ตามลำดับ ลำดับของกลุ่มวงจรที่สร้างโดย $G$ เป็น $\ell$.

คีย์ส่วนตัวเหล่านั้นได้รับเลือกเช่นระยะทาง $d=|x_1-x_2|\ (mod\ \ell)$ น้อยกว่า $2^n$สำหรับมูลค่าที่ประกาศเป็น $n$.

ที่ให้ไว้ $X_1$เราจะกำหนดได้อย่างไร $d$ มีประสิทธิภาพมากกว่าการบวก/ลบซ้ำๆ $G$ ถึง $X_1$ จนกว่าจะมีการแข่งขันกับ $X_2$?

Score:2
ธง ng

เราสามารถใช้ตัวแปรรองของ ขั้นตอนทารก / ขั้นตอนยักษ์ การค้นหา $d$ ด้วยในลำดับที่ $3\,2^{n/2}$ การเพิ่มจุด (และการทำให้เป็นมาตรฐานเพื่อการแสดงจุดเฉพาะ) เราทำขั้นตอนทารกจาก $X_1$และบันไดยักษ์จาก $X_2$ (ในทั้งสองทิศทางในภายหลังเพื่อชดเชยสัญญาณที่ไม่รู้จักของ $x_1-x_2$). มันไป:

  • อนุญาต $m=\lceil2^{n/2}\rceil$
  • อนุญาต $W_0:=X_1$
  • สำหรับ $i$ จาก $1$ ถึง $m-1$ (ขั้นตอนทารก)
    • ชุด $W_i=W_{i-1}+G$
      หมายเหตุ: ที่นี่ $W_i=X_1+i\,G$
  • อนุญาต $H=m\,G$ (ซึ่งสามารถได้รับเป็น $H=W_{m-1}+G-W_0$ )
  • อนุญาต $U:=X_2$ และ $V:=X_2-H$
  • อนุญาต $j=0$
  • ทำซ้ำ (ขั้นตอนยักษ์)
    หมายเหตุ: ที่นี่ $U=X_2+(j\,m)\,G$ และ $V=X_2-((j+1)\,m)\,G$
    • ถ้า $U$ พบได้ใน $W_i$
      • เอาต์พุต $|j\,m-i|$ และหยุด
    • ถ้า $วี$ พบได้ใน $W_i$
      • เอาต์พุต $(j+1)\,m+i$ และหยุด
    • อนุญาต $U:=U+H$ และ $V:=V-H$
    • อนุญาต $j:=j+1$

หากเป็นไปตามเงื่อนไขที่ระบุไว้ในหมายเหตุว่าอัลกอริทึมนี้จะหยุดที่เอาต์พุตเสมอ $d$ หลังจากนั้นประมาณ $d/2^{n/2}$ (ที่มากที่สุด $m$) การวนซ้ำของการวนซ้ำ ขอให้สังเกตว่าการใช้โครงสร้างข้อมูลที่เหมาะสม ค่าใช้จ่ายในการค้นหา $U$ และ $วี$ ในตารางของ $W_i$ เป็นค่าคงที่ w.r.t. $n$ดังนั้นต้นทุนการคำนวณหลักคือการเพิ่มจุด (และการทำให้เป็นมาตรฐานของผลลัพธ์เพื่อให้ $W_i$ สามารถค้นหาได้อย่างมีประสิทธิภาพ)

ปัญหาคือสิ่งนี้ต้องการหน่วยความจำจำนวนมากสำหรับตารางของ $W_i$และอัลกอริทึมตามที่ระบุไว้เป็นลำดับ สิ่งนี้สามารถแก้ไขได้ และการค้นหากระจายไปตามเครื่องต่างๆ โดยใช้เทคนิคใน Paul C. van Oorschot และ Michael J. Wiener's การค้นหาการชนกันแบบขนานด้วยแอปพลิเคชัน Cryptanalytic, ใน วารสารวิทยาการเข้ารหัสลับ, 2542.

cn flag
สิ่งนี้ตอบคำถามในเนื้อหา แต่ไม่ใช่คำถามในชื่อ เนื่องจากอัลกอริทึมที่แนะนำมีประสิทธิภาพ *มากกว่า* แต่ไม่มีประสิทธิภาพ *จริง* อย่างแน่นอน
knaccc avatar
es flag
ขอบคุณ ฉันนำวิธีการของคุณไปใช้และได้ผลอย่างสมบูรณ์! เมื่อ n=24 ฉันจะได้รับความเร็วเพิ่มขึ้นประมาณ 100x เทียบกับวิธีที่ไร้เดียงสา
fgrieu avatar
ng flag
@knaccc: สำหรับ n=24 ฉันคาดหวังว่าจะมีความเร็วเพิ่มขึ้นจากปัจจัยเช่น 1,000 สำหรับโครงสร้างข้อมูลที่มีประสิทธิภาพในการค้นหา $U$ และ $V$ ใน $W_i$
knaccc avatar
es flag
@fgrieu ฉันคิดว่าเป็นเพราะไลบรารี EC ที่ฉันใช้ให้ผลลัพธ์ของการบวก/ลบในพื้นที่พิกัด P3 (XYZT) และดังนั้นจึงมีค่าใช้จ่ายจากการคูณองค์ประกอบฟิลด์เพื่อทำให้ค่า Z co-ord เป็นมาตรฐานก่อนหน้า การเปรียบเทียบ P3 กับ P3 หรืออีกทางเลือกหนึ่งคือต้องมีองค์ประกอบฟิลด์ที่จำเป็นในการแปลงจาก P3 เป็นพิกัดเดียวที่มีลายเซ็นสำหรับวัตถุประสงค์ของการเปรียบเทียบพิกัดเดียว
fgrieu avatar
ng flag
@knaccc: อ่า มันสมเหตุสมผลแล้ว หากปัจจัยขนาดใหญ่ $\alpha$ เร็วกว่าในการทดสอบการเพิ่มจุดที่ถึงจุดเป็นกลางมากกว่าที่จะทำให้การแสดงจุดปกติตามที่จำเป็นสำหรับการค้นหา การเร่งความเร็วที่คาดไว้จะลดลงโดยปัจจัยที่ใกล้กับ $\alpha$
Score:2
ธง bd

คุณสามารถใช้ได้ เบบี้สเต็ปยักษ์สเต็ป หรือว่า .. แทน อัลกอริทึมแลมบ์ดา (หรือจิงโจ้) ของพอลลาร์ด การค้นหา $d$ โดยใช้ $O(2^{n/2})$ การดำเนินการแบบกลุ่มซึ่งจะมีประสิทธิภาพดีกว่าการค้นหาเชิงเส้นของคุณแบบคร่าว ๆ $2^n$ การดำเนินงานของกลุ่มถ้า $n$ ไม่เล็กเกินไป

โพสต์คำตอบ

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