Score:2

STARK Curve เป็น SafeCurve หรือไม่?

ธง in

เซฟเคิร์ฟ กำหนดเกณฑ์สำหรับการเลือกเส้นโค้งที่ปลอดภัยในการเข้ารหัสแบบเส้นโค้งวงรี

สตาร์ค เคิร์ฟ กำหนดเส้นโค้งวงรีที่เป็นมิตรกับสตาร์กที่สามารถใช้กับ ECDSA

ฉันสงสัยว่า: STARK Curve เป็น SafeCurve หรือไม่

kelalaka avatar
in flag
ไม่ชัดเจนว่าเหตุใดจึงเลือก $G$ ไม่มีหมายเลขใดอยู่ในแขนเสื้อของฉัน
oberstet avatar
in flag
ไม่แน่ใจว่าฉันเข้าใจสิ่งที่คุณหมายถึง (ฉันไม่ใช่ผู้เชี่ยวชาญ EC) - คุณหมายถึงจุดกำเนิดเฉพาะที่ใช้ในโครงร่าง ECDSA ที่เว็บไซต์ STARK Curve กำหนดอาจถูกเลือกโดยเฉพาะโดย Starkware (ผู้เขียน) เพื่อให้ a ซ่อน/ ประตูหลังแอบแฝงเปิดในโค้ง?
kelalaka avatar
in flag
ใช่ แค่นั้นแหละ
oberstet avatar
in flag
โอเคขอบคุณ! สมเหตุสมผล และนี่คือคำถามที่ฉันจะขุดลงไปอย่างแน่นอนมันคือ _also_ คำถาม - ไม่ใช่คำถามที่ฉันถาม แต่เป็นคำถามที่ดีมากอย่างเห็นได้ชัด;) แม้ว่ารูปแบบเส้นโค้งทั่วไปจะปลอดภัย (หากสามารถพูดได้) พารามิเตอร์เฉพาะอาจไม่ส่งผลให้เป็นเส้นโค้งคอนกรีตที่ปลอดภัย ..
poncho avatar
my flag
@kelalaka: จริง ๆ แล้ว มันพิสูจน์ได้ว่า $G$ เฉพาะนั้นแข็งแกร่งพอ ๆ กับตัวสร้างอื่น ๆ ในเส้นโค้งนั้น
kelalaka avatar
in flag
@poncho แรงในความหมายของใคร? บางทีผู้สร้างอาจสร้างตารางบันทึกให้มากที่สุดสำหรับตัวเองและยังคงดำเนินต่อไป เมื่อพิจารณาขนาดของเส้นโค้ง ข้อได้เปรียบของพวกเขาจะไม่มากไปกว่าเล็กน้อย อย่างไรก็ตาม ก็ยังถือว่าควรให้เหตุผลตามที่ชี้ไปที่เส้นโค้งนิรภัย (โอเวอร์ไฮป์?) ทำไมไม่ $x$ ตัวแรกเหมือนใน Curve25519 ในท้ายที่สุด เรารู้ว่าสิ่งที่ไม่มีอะไรอยู่ในแขนเสื้อของฉันเป็นเรื่องทางสรีรวิทยา
poncho avatar
my flag
@kelalaka: ถ้าคุณสามารถแก้ปัญหา DLog (หรือ CDH) ด้วย $G$ นั้น คุณจะสามารถแก้ปัญหา DLog (หรือ CDH) ด้วยตัวสร้างใดๆ ก็ได้ สิ่งนี้ตรงกันข้ามกับ (พูด) สมการ EC เอง บางทีพวกเขาอาจมีจุดอ่อนเฉพาะโดยคำนึงถึงเส้นโค้ง $A=1$? ความน่าจะเป็น: ไม่; ในทางกลับกัน เราไม่มีหลักฐานใดๆ
kelalaka avatar
in flag
@poncho ใช่ ฉันรู้ว่าเราสามารถแปลงฐาน dlog เป็นฐานอื่นเพื่อแก้ปัญหาที่นั่นได้ สิ่งที่ฉันอยากจะพูดคือพวกเขาอาจใช้ดัชนี dlog จำนวนมากก่อนใครก็ตาม แม้แต่ในกรณีนี้ ข้อได้เปรียบของพวกเขาก็เล็กน้อยเมื่อเทียบกับผู้โจมตีรายอื่น ใช่ สำหรับ $A=1$ เราไม่รู้ เหตุผลนี้และเหตุผลอื่นๆ ที่ต้องพิจารณาเส้นโค้งนี้ _ค่อนข้างเข้มงวด_ ขนาดเล็ก $A$ สามารถลดการคำนวณบางอย่าง ซึ่งทั้งหมดที่ฉันรู้ ขอบคุณอีกครั้ง.
poncho avatar
my flag
@kelalaka: "สิ่งที่ฉันอยากจะพูด อาจนำดัชนี dlog ขนาดใหญ่ไปใช้ก่อนใคร"; นี่เป็นความจริงโดยไม่ขึ้นอยู่กับว่าพวกเขาเลือก $G$; ดังนั้นการมีค่าที่ไม่ใช่ NUMS ไม่ได้ทำให้มีโอกาสมากขึ้น...
Score:3
ธง in
ข้อสรุป

STARK Curve ดูเหมือนจะเป็นทางเลือกที่สมเหตุสมผลสำหรับ ECDSA

เส้นโค้ง STARK

เดอะ สตาร์ค เคิร์ฟ กำหนดมากกว่า $\mathbb{F}_p$ กับ $p = 2^{251} + 17*2^{192} +1$ ด้วยสมการไวเออร์สตราสสั้นๆ

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

กับ

  • $A = 1$, และ
  • $B = 3141592653589793238462643383279502884197169399375105820974944592307816406665$
รายละเอียดจากพารามิเตอร์ที่กำหนด
  • ลำดับของกลุ่มเส้นโค้ง ( จำนวนจุด) คือ $n = \#E(\mathbf{F}_p )$ เป็น $n= 3618502788666131213697322783095070105526743751716087489154079457884512865583$

    และนี่คือจำนวนเฉพาะที่บ่งบอกว่า

    • ทุกองค์ประกอบยกเว้นตัวตน ( $\mathcal{O})$ สามารถเป็นเครื่องกำเนิดไฟฟ้าได้จำนวนที่ไม่อยู่ในอ้อมแขนของเส้นโค้งนี้ (ขอบคุณ Aria สำหรับการชี้) มาจาก $\pi$.

      ดังนั้น สตาร์กส์ค่อนข้างมีความแข็งกระด้าง อย่างน้อยก็ตอนนี้.

      ในท้ายที่สุด ตัวเลขที่ไม่มีสิ่งใดอยู่ในแขนเสื้อของฉันนั้นค่อนข้างเป็นลักษณะทางสรีรวิทยา

    • ปัจจัยร่วมคือ $h=1$ ซึ่งหมายความว่าไม่มีการเป็นตัวแทนของเส้นโค้งของมอนต์โกเมอรี่ ด้วยเหตุนี้จึงไม่มีบันไดมอนต์โกเมอรีที่เร็ว (ต้องใช้องค์ประกอบลำดับที่ 2 เช่น 2|ปัจจัยร่วม) บันไดจอยซ์ ยังคงเป็นไปได้ด้วยประสิทธิภาพที่ช้าลง ใน ECDSA สิ่งนี้มีประโยชน์ในการคำนวณ $[k]G$ เนื่องจากเท่านั้น $x$ ใช้พิกัด

    • ไม่มีการโจมตีกลุ่มเล็กๆ ให้พิจารณา แม้ว่านี่จะไม่ใช่ปัญหาสำหรับผู้ใช้ ECDSA ที่ถูกกฎหมาย หากผู้ใช้ไม่ถูกต้องตามกฎหมาย พวกเขาสามารถใช้สิ่งนี้เพื่อใช้จ่ายเหรียญซ้ำได้เหมือนที่ทำใน เคิร์ฟ25519 อย่างไรก็ตาม นี่ไม่ใช่กรณีของเส้นโค้ง STARK

    • กลุ่มเส้นโค้งเป็นแบบไอโซมอร์ฟิค $\mathbb{Z_n}$

  • เดอะ $n$ มีการแทนเลขฐานสอง 252 บิตและนี่หมายความว่ามีประมาณ $126$บิตการรักษาความปลอดภัยกับปัญหาลอการิทึมไม่ต่อเนื่องคลาสสิกที่ดีที่สุด

  • ขนาดของเส้นโค้งทำให้ไม่มีการชนกันของ $k$ หากใช้ตัวสร้างตัวเลขสุ่มที่ดี ถ้าใครยังกลัวสิ่งนี้อยู่ก็สามารถใช้ ECDSA ที่กำหนดขึ้นได้ rfc-6979.

  • การรักษาความปลอดภัยแบบบิด (ไม่เกี่ยวข้องกับ ECDSA); การบิดกำลังสองของเส้นโค้งนี้คือ $$y^2 = x^3 + 5^2*x +B*5^3$$ *

    • จำนวนของการบิด = "618502788666131213697322783095070105623107215331596699973092056135872020481"
    • ปัจจัยของกลุ่มบิด = "499669 * 26023817775804638430931 * 278275836047110893120702478691334736277272165979" และสิ่งนี้ให้ความปลอดภัยประมาณ 158 บิต ระดับปานกลาง.
  • และเรามี $2*p+2 = ออร์ด(E) + ออร์ด(\text{E_quaratic_twist})$

  • $n \neq พี$ ดังนั้นจึงไม่ใช่ เส้นโค้งที่ผิดปกติ ซึ่งสามารถแก้ไขบันทึกแยกได้อย่างรวดเร็ว

รหัส SageMath
เอ = 1
b = 3141592653589793238462643383279502884197169399375105820974944592307816406665
p = 2^251 + 17*2^192 +1

E = EllipticCurve(GF(p), [0,0,0,a,b])

พิมพ์(อี)
เอต = E.quadratic_twist()
พิมพ์ (Et)

พิมพ์ ("E abelian =", E.abelian_group())
พิมพ์ ("E บิด = ", Et.abelian_group())

การ์ด = E.cardinality()
cardEt = Et.cardinality()

พิมพ์ ("จำนวนสมาชิก E =",การ์ด)
พิมพ์ ("จำนวนสมาชิก E บิด =",การ์ด)


พิมพ์ ("ปัจจัย E", ปัจจัย (บัตร))
พิมพ์ ("ปัจจัย Et ",ปัจจัย (cardEt))

#ส่วนเครื่องกำเนิดไม่ได้สำหรับบิดกำลังสอง
#G = E(874739451078007766457464989774322083649278607533249481151382481072868806602,152666792071518830868575557812948353041420400780739481342941381225525861407)
#n = G.order()
#print("ลำดับเครื่องกำเนิดไฟฟ้า =", n)

พิมพ์(บันทึก(การ์ด,2).n()+1)

ยืนยัน (2*p+2 == การ์ด + cardEt)

*การบิดกำลังสองที่เกิดขึ้นกับ QNR 5 น่าเสียดายที่มันไม่ได้ผลตามที่ตั้งใจไว้ ขอบคุณ Poncho ที่ชี้ให้เห็นสิ่งนี้ ฉันเก็บสมการไว้เพื่อให้ใครเห็นปัญหา แต่ฉันใช้ กำลังสอง_twist ฟังก์ชั่นของ SageMath ที่ค่อนข้างช้า

oberstet avatar
in flag
Fantastic=) ขอบคุณมากสำหรับการวิเคราะห์เชิงลึกเกี่ยวกับคุณสมบัติการเข้ารหัสบางอย่างของเส้นโค้ง STARK ไม่ใช่ว่าฉันเข้าใจรายละเอียดจริงๆ;) แต่ฉันคิดว่ามันตรวจสอบ (บางส่วน) 11 ค่าสถานะสำหรับ SafeCurves ดังในตารางภาพรวมที่นั่น อย่างไรก็ตาม ฉันพยายามค้นหาตัวเลือก G โดยถามผู้ชายจาก Starkware: "สำหรับตัวเลือกเครื่องกำเนิดไฟฟ้า ฉันจำไม่ได้ ... สำหรับคำถาม คุณสามารถถาม Daira Hopwood จาก ZCash": https://electriccoin .co/blog/people-behind-zcash-technology-daira-hopwood-engineer-and-protocol-designer/ https://github.com/daira
kelalaka avatar
in flag
3 จากรายการเป็นเพียงพารามิเตอร์ จุดพื้นฐานเกี่ยวกับความแข็งแกร่ง ไม่เกี่ยวกับความปลอดภัยทั้งหมด แลดเดอร์ถามถึงมอนต์โกเมอรี่เป็นระยะ อย่างไรก็ตาม จอยซ์แลดเดอร์จัดการเรื่องนี้ ฉันจะมองหาจุดฐาน ขอบคุณที่ชี้
kelalaka avatar
in flag
ทีหลังฉันจะมองหาคนอื่นๆ ถ้าฉันทำได้...
oberstet avatar
in flag
Fwiw ต่อไปนี้คือชิ้นส่วนอื่นๆ ของการขุดของฉัน: ฉัน _คิดว่าตระกูลเส้นโค้งเรียกว่า "Barreto-Naehrig (BN)" https://eprint.iacr.org/2010/429.pdf ฉันไม่พบพารามิเตอร์เฉพาะของเส้นโค้ง STARK ใน https://neuromancer.sk/std/bn / https://tools.ietf.org/id/draft-kasamatsu-bncurves-01.html zCash (โครงการที่แตกต่างจาก Starkware) ซึ่งพวก Starkware บอกใบ้ว่า ในอดีตเคยใช้ BN254 แต่เปลี่ยนเป็น BLS12-381 ในปี 2017 https://github.com/zcash/zcash/issues/2502 https://cp4space.hatsya .com/2020/12/27/barreto-naehrig-curves-and-cryptographic-pairings/
poncho avatar
my flag
"บิด ... มีความสำคัญเหมือนกันหมายถึงความปลอดภัยเดียวกัน"; คำสั่งเป็นนายกรัฐมนตรีหรือไม่? ถ้าไม่มี แสดงว่าการบิดมีความปลอดภัยต่ำกว่า
kelalaka avatar
in flag
@poncho ฉันพบว่าการบิดมีความสำคัญเหมือนกัน คุณสามารถตรวจสอบด้วยรหัสของฉัน ฉันสงสัยส่วนนั้นเพราะฉันไม่เคยเห็นเส้นโค้งแบบนี้
kelalaka avatar
in flag
@poncho และ $G$ ก็ไม่ได้อยู่บนเส้นโค้งเช่นกัน
poncho avatar
my flag
จำนวนสมาชิกของเส้นโค้งบวกกับจำนวนสมาชิกของการบิดจะรวมกันเป็น $2p+2$ เสมอ สิ่งนี้สามารถเห็นได้เพราะสำหรับพิกัด x ใดๆ ที่เป็นไปได้ มันสอดคล้องกับจุดสองจุดบนเส้นโค้ง หรือสองจุดบนเส้นโค้ง หรือหนึ่งจุดบนทั้งสองจุด (ถ้า $y=0$ ซึ่งไม่เกิดขึ้นบนเส้นโค้งนี้ ). เพิ่มจุดอินฟินิตี้สองจุด (จุดหนึ่งบนเส้นโค้ง อีกจุดหนึ่งอยู่บนทางบิด) และคุณก็อยู่ตรงนั้น วิธีเดียวที่จะเกิดขึ้นได้คือหากลำดับของเส้นโค้งคือ $p+1$ ซึ่งไม่ใช่กรณีของเส้นโค้งนี้
kelalaka avatar
in flag
@poncho นั่นเป็นความจริงที่ฉันไม่ได้ตรวจสอบ ฉันจะลบส่วนนั้นจนกว่าจะแก้ไขได้
kelalaka avatar
in flag
@poncho ขอบคุณ ฉันไม่รู้ว่าทำไม $d=5$ ไม่ทำงาน ฉันได้แก้ไขปัญหาด้วย quadratic_twist ของ SageMath แล้ว แม้ว่ามันจะช้ากว่ามากก็ตาม
kelalaka avatar
in flag
@oberstet ไม่สามารถเป็นเส้นโค้ง BN ได้เนื่องจาก $p \equiv 1 \bmod 4$ เส้นโค้ง BN ต้องการ $p \equiv 3 \bmod 4$
oberstet avatar
in flag
เอ่อ ใช่ ฉันเดาว่าฉันกำลังมองหา "ชื่อโค้งอย่างเป็นทางการ/ถูกต้อง" ยากเกินไป;) btw ตามที่แนะนำ ฉันได้ DM'ed Daria Hopwood (ด้านบน) ผ่าน Keybase และรวมลิงก์ไปยังโพสต์ที่นี่ มาดูกัน.
Ariel avatar
cn flag
เรื่อง "ไม่มีอะไรเกินกำลัง" [ตัวสร้าง](https://github.com/starkware-libs/starkex-resources/blob/44a15c7d1bdafda15766ea0fc2e0866e970e39c1/crypto/starkware/crypto/signature/signature.py#L50)เป็นครั้งที่สอง ชี้ไปที่ [อาร์เรย์](https://github.com/starkware-libs/starkex-resources/blob/44a15c7d1bdafda15766ea0fc2e0866e970e39c1/crypto/starkware/crypto/signature/pedersen_params.json#L25) ซึ่งสร้างจากตัวเลข $ \pi$
kelalaka avatar
in flag
@ Ariel ขอบคุณสำหรับลิงค์
oberstet avatar
in flag
@แอเรียล ขอบคุณ! ฉันสามารถยืนยันได้ว่า: สคริปต์ `nothing_up_my_sleeve_gen.py` ใช้ Pi เพื่อคำนวณ G และไฟล์ JSON เป็นเอาต์พุตของสคริปต์ /starkware-libs/starkex-resources/blob/44a15c7d1bdafda15766ea0fc2e0866e970e39c1/crypto/starkware/crypto/signature/nothing_up_my_sleeve_gen.py#L56
Dan Carmon avatar
us flag
@kelalaka $d=5$ ใช้งานไม่ได้เพราะ 5 _is_ โมดูโลกากกำลังสอง $p$ (ง่ายต่อการตรวจสอบ $p \equiv 1 \pmod 5$) คุณสามารถใช้ $d=3$ แทน ซึ่งไม่ใช่สารตกค้างตั้งแต่ $p \equiv 5 \pmod {12}$
kelalaka avatar
in flag
@DanCarmon เอ่อ การคำนวณ QR ของฉันมีข้อผิดพลาดในตอนนั้น ขอบคุณ. ฉันจะตรวจสอบทั้งสองอย่างอีกครั้ง...

โพสต์คำตอบ

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