Score:2

การขนส่ง Ed25519 ถึง X25519

ธง ru

โดยใช้

montgomeryX = (edwardsY + 1)*ผกผัน(1 - edwardsY) mod p

เป็นไปได้ที่จะขนส่งจุดโค้ง Edwards (เอ็ด25519 กุญแจสาธารณะ) ไปยังเส้นโค้งมอนต์โกเมอรี่ มันมีผลข้างเคียงไหมถ้า เอ็ด25519 รหัสสาธารณะไม่ถูกต้อง ในกรณีของกลุ่มย่อยขนาดเล็กหรือการโจมตีแบบโค้งที่ไม่ถูกต้อง เป็นต้น?

และถ้าใช่ อะไรจะเป็นทางออกที่ดีที่สุดในการจัดการอย่างถูกต้อง?

kelalaka avatar
in flag
ทำไมคุณต้องการที่จะแปลง? คุณต้องการใช้คีย์เดียวกันสำหรับ ed25519 และ DHKE X25519 หรือไม่ คุณกำลังถาม [การตรวจสอบจุด 25519] (https://crypto.stackexchange.com/q/87709/18298) หรือ [การแลกเปลี่ยนคีย์ X22519](https://crypto.stackexchange.com/a/68129/18298)?
FooBar avatar
ru flag
เป้าหมายของฉันคือสร้างความลับที่ใช้ร่วมกันโดยใช้ x25519 ECDH แต่โปรโตคอลที่มีอยู่ใช้คีย์ ed25519 ร่วมกัน ค่อนข้างจะสับสนทั้งคู่
kelalaka avatar
in flag
คุณกำลังพูดถึงโปรโตคอลใด X25519 ออกแบบมาสำหรับ ECDH ผู้ที่ใช้ Ed25529 สำหรับ ECDH ใช้อย่างไม่ถูกต้อง ดูลิบโซเดียม..
FooBar avatar
ru flag
ไม่ใช่โปรโตคอลสาธารณะ นั่นคือขั้นตอนเริ่มต้นการเข้ารหัสภายในของการเริ่มต้นการเชื่อมต่อของเรา แผนคือการสร้างความลับที่ใช้ร่วมกันโดยใช้เส้นโค้งมอนต์โกเมอรีที่ขนส่งคีย์สาธารณะ ed25519 แน่นอน ECDH บน ed25519 ไม่ใช่เป้าหมาย
kelalaka avatar
in flag
สร้างคีย์สุ่มแบบเดียวกันดีกว่าและใช้ KDF เช่น HKDF มีสองคีย์ที่แตกต่างกัน ดีกว่าใช้คีย์เดียวสำหรับทั้งสอง ตัวเดียวหายเกลี้ยง!
kelalaka avatar
in flag
และการแปลงคือ $$x = \frac{u}{v}\sqrt{-486664}, \quad y = \frac{u - 1}{u + 1}$$ และใช้ XEd25519 ที่ใช้โดย Signal ใช้ Curve25519?
FooBar avatar
ru flag
ฉันสามารถเห็นจุดของคุณ จนถึงตอนนี้ฉันได้เห็นการใช้งานจำนวนหนึ่งที่ทำ x25519 ECDH โดยใช้คู่คีย์ ed25519 ซึ่งข้ามเส้นโค้ง edwards ไปยังเส้นโค้ง montgomery เป็นการปฏิบัติที่ไม่ดีหรือไม่?
kelalaka avatar
in flag
ระวัง สัญญาณใช้ [double rachet สำหรับ ECHE](https://dspace.cvut.cz/bitstream/handle/10467/76230/F8-DP-2018-Rubin-Jan-thesis.pdf?sequence=-1) เพื่อจะได้มีกุญแจชั่วคราว
knaccc avatar
es flag
มีเหตุผลหรือไม่ที่คุณไม่สามารถสร้างคู่คีย์ X25519 ใหม่ชั่วคราวสำหรับแต่ละ ECDH และให้แต่ละฝ่ายลงนามในคีย์สาธารณะ X25519 ด้วยคีย์ Ed25519 ของตน ที่จะให้ความลับไปข้างหน้า และถ้ามีเหตุผลที่ดีที่จะมีคีย์ระยะยาวสำหรับ ECDH มีเหตุผลหรือไม่ที่ผู้คนไม่สามารถแสดงทั้งคีย์สาธารณะ Ed25519 และคีย์สาธารณะ X25519 แก่ผู้อื่น มีขนาดเพียง 32 ไบต์เท่านั้น
kelalaka avatar
in flag
@knaccc ใช่นั่นคือวิธี ฉันเห็นความคิดเห็นของคุณแล้ว
Score:3
ธง in

Curve25519 และ Ed25519

เส้นโค้งมอนต์โกเมอรี่ ที่กำหนดไว้ในฟิลด์ $K$ กำหนดเป็น; $$M_{A,B}: Bv^2 = u^3 + Au^2 + u$$ แน่นอน $A,B \ใน K$ และด้วย $B(A^2-4) \neq 0$.

Curve25519 ใช้นายก $q = 2^{255} â 19$ เพื่อสร้างเขตข้อมูลจำกัด $\mathbb{F}_q$ และกำหนดครั้งแรกสำหรับ ECDH และตั้งชื่อในภายหลัง X25519. สมการมอนต์โกเมอรีคือ $$v^2 = u^3+486662 u^2+u$$ กับ $486664$ เป็นรูปสี่เหลี่ยมจัตุรัส $\mathbb{Z}_p$เช่น เป็น Quadratic Residue (QR) $u = 9$ ได้เลือกเป็นฐาน แบบฟอร์ม Weierstrass (สิ่งที่จำเป็นสำหรับ SageMath)

$$y^2 = x^3 + A x + B $$

เส้นโค้ง âCurve25519â คือ เทียบเท่ากัน เกิน $\mathbb{Z}_p$ ถึงโค้งเอ็ดเวิร์ด เอ็ด25519 $$x^2 + y^2 = 1 + (121665/121666)x^2y^2$$ กับ;

$$x = \frac{\sqrt{486664}u}{v}, \quad y = \frac{(u â 1)}{(u + 1)}$$

การดำเนินการย้อนกลับคือ;

$$u = \frac{(y + 1)}{(1 - y)}, \quad v = \frac{\sqrt{486664}u}{x}$$

รูปร่างเอ็ดเวิร์ดมีเส้นโค้งแบบไอโซมอร์ฟิค

$$-x^2 + y^2 = 1 - (121665/121666)x^2y^2$$ เนื่องจาก $-1$ คือ QR ใน a $\mathbb Z_p$


คำถาม

montgomeryX = (edwardsY + 1)*ผกผัน(1 - edwardsY) mod p เป็นไปได้ที่จะขนส่งจุดเส้นโค้ง edwards (คีย์สาธารณะ ed25519) ไปยังเส้นโค้งมอนต์โกเมอรี่

ใช่ ตามที่ระบุข้างต้น จากมอนต์โกเมอรีถึงเอ็ดเวิร์ด $$u = \frac{(y + 1)}{(1 - y)}$$

มีผลข้างเคียงหรือไม่หากคีย์สาธารณะ ed25519 ไม่ถูกต้อง ในกรณีของกลุ่มย่อยขนาดเล็กหรือการโจมตีแบบโค้งที่ไม่ถูกต้อง เป็นต้น

คีย์ Edward25519 สามารถแปลงเป็น Curve25519 ได้ และหากสร้างคีย์ลับแล้วด้วย ความรับผิดชอบของผู้ใช้ที่ถูกต้องตามกฎหมาย

  • ผู้ใช้ที่ถูกต้องตามกฎหมายจะถือว่าสร้างรหัสลับแบบสุ่มที่เป็นอิสระจากกัน ตัวอย่างเช่น ผู้ใช้สามารถสร้าง 32 ไบต์แบบสุ่มแบบเดียวกัน ล้างบิต 0, 1, 2 ของไบต์แรก ล้างบิต 7 ของไบต์สุดท้าย และตั้งค่าบิต 6 ของไบต์สุดท้าย

ในคำจำกัดความที่ตั้งไว้ เราต้องการให้รหัสลับของ X25519 เป็น

$$\{n: n \in 2^{254} +8\{0,1,2,\dots,2^{251}-1 \}\},$$ กล่าวอีกนัยหนึ่ง ให้เลือกหมายเลขสุ่มที่เหมือนกันระหว่าง $[0,2^{251}-1]$ คูณด้วย $8$ กว่าเพิ่ม $2^{254}$.

ลำดับของจุดฐานคือ (little-endian);

edd3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010

การหักบัญชี $0,1,2$ ตรวจสอบให้แน่ใจว่า

ด้านล่างคือค่าสูงสุด (little-endian) และเราจะเห็นว่ามีคีย์ส่วนตัวสองคีย์สามารถมีคีย์สาธารณะเดียวกันได้ อย่างไรก็ตาม นี่เป็นเหตุการณ์เล็กน้อยแต่หาได้

0x8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7

จึงไม่มีความจำเป็นเนื่องจากความเท่าเทียมกันแบบทวิภาคจะสร้างคะแนนที่ไม่มีลำดับเล็กน้อยหากผู้ใช้ที่ถูกต้องใช้กฎอยู่แล้ว

ภายใต้การสมมูลแบบสองเหตุผลของ Curve25519 และ edwards25519 คีย์สาธารณะ X25519 แต่ละคีย์จะสอดคล้องกับคีย์สาธารณะ Ed25519 ที่เป็นไปได้สองคีย์). X25519 ใช้เท่านั้น $x$ ประสานงาน (ที่มาของชื่อ) และ เอ็ด25519 ใช้พิกัดของจุด เมื่อเรามีเพียง $x$ พิกัดของจุด มีสองจุดที่เป็นไปได้ $(x,y)$ และ $(x,-y)$ ยกเว้น $y=0$.

และถ้าใช่ อะไรจะเป็นทางออกที่ดีที่สุดในการจัดการอย่างถูกต้อง?

ไม่มีอันตรายจาก ตรวจสอบคะแนน.


พิเศษบางอย่าง

โดยใช้คีย์เดียวกัน

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

อาจดีกว่าถ้ามีคีย์สุ่ม 256 บิตหนึ่งชุดและได้สองคีย์ที่มี HKDF-expand สำหรับทั้ง X25519 และ Ed25519

X25519

โปรดจำไว้ว่ารหัสสาธารณะได้รับการแก้ไขและเมื่อคุณเรียกใช้ DHKE หมายความว่าคุณมี DHKE แบบคงที่ สิ่งนี้ไม่มีความลับส่งต่อ สิ่งที่ดีกว่าคือสิ่งที่ Signal protocol ทำ วงล้อคู่ และคุณสามารถลงนามรหัสสาธารณะใหม่ด้วย Ed25519

โพสต์คำตอบ

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