Score:7

ค้นหาพารามิเตอร์ Elliptic Curve, a และ b โดยกำหนดสองจุดบนเส้นโค้ง

ธง th

ฉันยังใหม่กับ Elliptic Curve Cryptography และกำลังทำงานกับความท้าทาย CTF ที่ใช้ Elliptic Curves ขณะนี้ฉันกำลังพยายามหาเครื่องกำเนิด $G$และได้รับคีย์สาธารณะและส่วนตัว $พี$ และ $k$, เซนต์. $P = [k]G$เช่นเดียวกับจุดสุ่มอีกจุดหนึ่งบนเส้นโค้ง ฉันรู้คำสั่ง $n$ของกลุ่ม และฉันรู้จำนวนเฉพาะสองตัว $p$ และ $คิว$ซึ่งเป็นปัจจัยเดียวของ $n$.

ฉัน อ่าน หากคุณมีคีย์ส่วนตัวและคีย์สาธารณะ คุณสามารถคำนวณตัวสร้างเป็น ...

$$G = [k^{-1}]P\pmod n$$

... ที่ไหน $k^{-1} = n - k$.

ทั้งหมดนี้ยอดเยี่ยม แต่น่าเสียดายที่ฉันไม่ทราบพารามิเตอร์ $a$ และ $ข$ของเส้นโค้งวงรี $y^2 = x^3 + ขวาน + b$ดังนั้นฉันจึงมีปัญหาในการคูณจุด EC ด้วย $k^{-1}$.

ฉันกำลังคิด เนื่องจากฉันรู้ค่าของจุดสองจุดบนเส้นโค้ง ฉันจึงมีระบบสมการเชิงเส้นต่อไปนี้:

\begin{จัด} y_1^2 &= x_1^3 + ax_1 + b\ y_2^2 &= x_2^3 + ax_2 + b\ \end{แนว}

ฉันพยายามแก้ปัญหานี้โดยใช้ตัวแก้ทฤษฎีบท z3 แต่ได้รับคำตอบโดยยืนยันว่าระบบไม่น่าพอใจ จากนั้นฉันลองแก้ไขระบบสมการของฉันเพื่อให้ทั้งสองด้านของสมการได้รับการคำนวณแบบโมดูโล $n$แต่สิ่งนี้ส่งผลให้ z3 ใช้เวลาตลอดไปในการหาทางออก ซึ่งน่าจะเป็นเพราะ $a$ และ $ข$ เป็นตัวเลข 128 บิต และ $n$ เป็นตัวเลข 512 บิต สิ่งนี้ทำให้ฉันนึกย้อนกลับไปในชั้นเรียนวิทยาการคอมพิวเตอร์ระดับปริญญาตรีของฉัน ซึ่งฉันจำได้ว่าได้เรียนรู้เกี่ยวกับปัญหาต่างๆ ในวิทยาการคอมพิวเตอร์ และดูเหมือนว่าจะคล้ายกับ การเขียนโปรแกรมจำนวนเต็มซึ่งสมบูรณ์ NP

ดังนั้นจึงเป็นไปได้ไหมที่จะคำนวณพารามิเตอร์อย่างมีประสิทธิภาพ $a$ และ $ข$ของเส้นโค้งวงรี ถ้าฉันรู้ลำดับ $n$ และสองจุด $พี$ และ $คิว$ บนทางโค้ง?

knaccc avatar
es flag
ในการกลับค่า $k$ เพื่อให้ได้ $k^{-1}$ คุณต้องทำ "โมดูโลการคูณผกผัน" ดู https://en.wikipedia.org/wiki/Modular_multiplicative_inverse
Score:8
ธง in

กำหนดสองจุดบนเส้นโค้ง $P=(x_1,y_1), Q=(x_2,y_2)$ เราสามารถกำหนดพารามิเตอร์ของแบบฟอร์ม Weierstrass แบบสั้นได้ $y^2 = x^2 + ขวาน +b$. ใส่พิกัดของจุดลงในสมการเส้นโค้งเพื่อให้ได้สองสมการตามที่คุณทำ

\begin{จัด} y_1^2 &= x_1^3 + ax_1 + b &\pmod{n} \ y_2^2 &= x_2^3 + ax_2 + b &\pmod{n}\ \hline & & \text{subtract}\ y_1^2 - y_2^2 &= x_1^3 - x_2^3 + a (x_1 - x_2) &\pmod{n}\ (y_1^2 - y_2^2) -(x_1^3 - x_2^3)&= ก (x_1 - x_2) &\pmod{n}\ [(y_1^2 - y_2^2) -(x_1^3 - x_2^3)] \cdot (x_1 - x_2)^{-1}&= a &\pmod{n}\ \end{แนว}

ที่จะสามารถหาได้ $a$ ปัญหาเดียวคือการมีอยู่ของ ผกผันการคูณแบบโมดูลาร์ ของ $(x_1 - x_2)$ ไปที่ $\bmod n$.

  • ถ้า $\gcd((x_1 - x_2),n) = 1$ จากนั้นจึงมีการผกผันการคูณแบบโมดูลาร์และสามารถหาได้ง่ายด้วย อัลกอริทึมแบบยุคลิดแบบขยาย (Ext-GCD)
  • ถ้า $\gcd((x_1 - x_2),n) \neq 1$ จากนั้นจะไม่มีการผกผัน (ดูจะเกิดอะไรขึ้นถ้าด้านล่าง)
  • โปรดทราบว่าในกรณีนี้ $x_1 - x_2 = 0$ ถ้าอย่างนั้นเราก็มี $\gcd(0,n) = n.$ กล่าวอีกนัยหนึ่งไม่มีการผกผัน

ครั้งหนึ่ง $a$ พบสำเร็จพบ $ข$ ง่ายกว่า แทนค่าที่ทราบลงในสมการแล้วแก้เฉพาะค่าที่ไม่ทราบ $ข$.


SageMath สำหรับโมดูลาร์ผกผัน;

Zn = จำนวนเต็ม(12)
ก = สังกะสี(5)
ข = ก^-1
ก

ถ้าตั้งค่า $a = 4$ จากนั้นคุณจะได้รับข้อผิดพลาด: ZeroDivisionError: ไม่มีส่วนผกผันของ Mod (4, 12).


เกิดอะไรขึ้นถ้า ไม่มีการผกผันของ $(x_1 - x_2)$ ถึง $\bmod{n}$. เราสามารถหาวิธีแก้ปัญหาด้านล่างได้หรือไม่?

$$(y_1^2 - y_2^2) -(x_1^3 - x_2^3)= a (x_1 - x_2) \pmod{n} \label{a}\tag{1}$$

ใช่ เรายังคงสามารถหาวิธีแก้ไขได้ $\ref{a}$ แต่พวกเขาจะไม่ซ้ำกัน

บทแทรก: ถ้า $d$ เป็นตัวหารร่วมมากของ a และ m แล้วก็ความสอดคล้องเชิงเส้น $ax \equiv b \pmod m$ มีวิธีแก้ไขก็ต่อเมื่อ $d$ แบ่ง $ข$. ถ้า $d$ แบ่ง $ข$แล้วมีอยู่ว่า $d$ โซลูชั่น

เพื่อค้นหาพวกเขาจาก $a/d \cdot x \equiv b/d \pmod{m/d}$. เป็นที่ชัดเจนว่า $\gcd(a/d,m/d)=1$. จากนั้นเราสามารถกลับด้านได้ $a/d$ และแก้ปัญหาสำหรับ $x$. แล้ว $\{x, x+\dfrac{m}{d},x+\dfrac{2m}{d}, \ldots, x+\dfrac{(d-1)m}{d} \}$ คือ $d$ คำตอบสำหรับสมการ $\ref{a}$.

สำหรับแต่ละโซลูชั่นก็คาดว่าจะมีความแตกต่างกัน $ข$ดังนั้นสำหรับการกำหนดข้อมูลเพิ่มเติมจะต้องไม่ซ้ำกัน

2.71828-asy avatar
in flag
สมการ $ab = c (\text{mod} n)$ สามารถคงค่าไว้ได้แม้ว่า a หรือ b จะไม่มีค่าผกผันการคูณก็ตาม เงื่อนไขที่ถูกต้องไม่ควรเป็น $(y_1^2 - y_2^2) - (x_1^3 - x_2^3)$ หาร $\gcd(x_1 - x_2, n)$ หรือไม่
kelalaka avatar
in flag
@2.71828-asy ใช้กรณี $4x \equiv 6 \bmod 10$, $4x = 6 + 10 k$ หารด้วย 2, เรามี $2x = 3 \bmod 5$ ดังนั้น $x = 4$ และอีกอันคือ $x+5$ เนื่องจากทั้งสองเป็นไปตาม $4x \equiv 6 \bmod 10$ ทั้งคู่จึงเป็นโซลูชัน อย่างไรก็ตามสิ่งที่ตรงกันข้ามจะต้องไม่ซ้ำกัน!
2.71828-asy avatar
in flag
โอเค เนื่องจากเรารู้ว่าต้องมี $a$ ที่ไม่ซ้ำกัน เราจึงรู้ว่าเรากำลังมองหาการผกผันและไม่ใช่วิธีแก้ปัญหา
kelalaka avatar
in flag
@2.71828-asy ในขณะที่ตอบในกรณีแรก ฉันกำลังพิจารณากรณีนี้ด้วย อย่างไรก็ตาม ฉันไม่คิดว่า OP จะต้องการให้เข้มข้นมากขนาดนั้นกับโซลูชันเฉพาะ เพิ่มส่วนสำหรับสิ่งนั้น ในการดูครั้งที่สอง ฉันเห็นว่าพวกเขาอาจต้องการ เพิ่มเป็น **What if** ขอบคุณ นี่เป็นปัญหาที่พบบ่อยมากในโซลูชัน Hill cipher ที่เราเสนอให้ดู...
jinscoe123 avatar
th flag
@kelalaka ขอบคุณ! คำอธิบายของคุณช่วยให้ฉันตระหนักถึงความผิดพลาดของฉัน ฉันทำการหารปกติด้วย $(x_1 - x_2)$ แทนที่จะเป็นการหารแบบแยกส่วน
kelalaka avatar
in flag
@ jinscoe123 ECC ค่อนข้างซับซ้อนเนื่องจากมีฟิลด์มากกว่าที่พิกัดกำลังสร้างกลุ่มภายใต้กฎหมายเพิ่มเติม อย่างไรก็ตาม การดำเนินการทุกอย่างจะกระทำกับฟิลด์ฐาน ฉันได้ใส่ Sagemath เพื่อสังเกตว่าต้องมีคำสั่งพิเศษเพื่อให้ $a \in \mathbb Z_5$ หรือจัดการตัวเองในภาษาโปรแกรมอื่น ๆ

โพสต์คำตอบ

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