Score:2

แคร็กการเข้ารหัส Elliptic Curve

ธง br

ฉันค่อนข้างใหม่สำหรับการศึกษาการเข้ารหัสแบบเส้นโค้งวงรี และด้วยเหตุนี้ฉันอาจจะถามอะไรบางอย่างด้วยวิธีแก้ปัญหาทั่วไป แต่ฉันไม่สามารถค้นหาวิธีแก้ปัญหาออนไลน์ได้ง่ายๆ ความเข้าใจของฉันเกี่ยวกับ ECC คือคุณสามารถสร้างคีย์ส่วนตัวได้ (บางจำนวนเต็ม $k$) จุดเริ่มต้นบนเส้นโค้ง ($G$) และสมการเส้นโค้ง จากนั้นจึงสร้างคีย์สาธารณะผ่านการค้นหา $kG$. ความเข้าใจของฉันก็คือว่าคอมพิวเตอร์ของคุณจะดำเนินการหลายอย่างที่จำเป็นในการค้นหา $kG$ (ถ้า $k$ อายุ 16 ก็จะเป็นการผ่าตัดสี่ครั้ง)

ด้วยข้อมูลนี้เป็นจุดเริ่มต้น $G$, สมการเส้นโค้ง และคีย์สาธารณะจะถูกเปิดเผยต่อสาธารณะ สิ่งที่ฉันสงสัยคือเหตุใดผู้โจมตีจึงไม่สามารถพยายามค้นหาว่าคีย์ส่วนตัวคืออะไร $k$ เพียงแค่ใช้จุดเริ่มต้นและดำเนินการจนกว่าจะถึงรหัสสาธารณะและรู้อะไร $k$ เป็น? ขึ้นอยู่กับข้อเท็จจริงที่ว่าผู้ส่งต้องการเพียง 4 การดำเนินการในการคำนวณ $kG$ ในขณะที่ผู้โจมตีต้องการการดำเนินการ 16 ครั้ง (สำหรับตัวอย่างที่กำหนด)?

ca flag
คุณต้องเดาคีย์ส่วนตัวก่อนที่จะเริ่มดำเนินการ หากเรากำลังพูดถึงคีย์ส่วนตัว 256 บิต มีคีย์ `2^256` ให้ลองใช้ คุณจะเข้าถึงคีย์สาธารณะของเป้าหมายได้ก็ต่อเมื่อคุณเดาคีย์ส่วนตัวที่ถูกต้องเท่านั้น นั่นหมายความว่า หากคุณเลือกคีย์ส่วนตัวแบบสุ่มและดำเนินการโดยหวังว่าจะเข้าถึงคีย์สาธารณะของเป้าหมาย มีโอกาสสำเร็จเพียง `0.0000000000...(+66 ศูนย์)...8` ต่อการลองหนึ่งครั้ง
James avatar
br flag
แต่ถ้าคอมพิวเตอร์ของผู้ใช้ เช่น คอมพิวเตอร์ของผู้ใช้ใช้การคำนวณ 10 ครั้งเพื่อคำนวณคีย์สาธารณะ (ตัวอย่างง่ายๆ) คอมพิวเตอร์ของผู้โจมตีจะต้องเริ่มต้นที่ $G$ เท่านั้น และทำการคำนวณประมาณ 1024 ครั้งเพื่อไปถึงจุด $kG$ ฉันเห็นว่านี่อาจมีความแตกต่างกันค่อนข้างมาก แต่ดูเหมือนว่าซูเปอร์คอมพิวเตอร์จะสามารถผ่านตัวอย่างที่ใหญ่กว่าได้ภายในระยะเวลาที่จำกัด (สัปดาห์หรือมากกว่านั้น)
dave_thompson_085 avatar
cn flag
สำหรับขนาดที่ถือว่าปลอดภัยในปัจจุบัน (256 หรือ 255 บิตขึ้นไป) 'การโจมตี' นี้ใช้พลังงานมากกว่าที่มีอยู่ในจักรวาล คุณต้องควบคุมจำนวนมหาศาล -- ล้านล้านล้าน -- ของจักรวาลอื่น ซึ่งหมายความว่าคุณต้องเป็นพระเจ้า และโปรไฟล์ของคุณไม่ได้ระบุว่าคุณเป็นพระเจ้า ดู https://crypto.stackexchange.com/questions/58373/how-to-calculate-a-private-key-from-public-key-on-elliptic-curve และอื่นๆ ที่เชื่อมโยงที่นั่น
fgrieu avatar
ng flag
ดูคำอุปมา [ข้าวสาลีและกระดานหมากรุก](https://en.wikipedia.org/wiki/Wheat_and_chessboard_problem) เฉพาะกับกระดานหมากรุกขนาดใหญ่เมื่อพูดถึง Elliptic Curves ที่ใช้จริง (โดยที่ $k$ สามารถรับ $n\approx2^{ 256}$ ค่า) อนึ่ง "ใช้จุดเริ่มต้นและดำเนินการจนกว่าจะถึงคีย์สาธารณะ" นั้นยังห่างไกลจากกลยุทธ์ที่ดีที่สุด: หากมีค่าที่เป็นไปได้ $n$ ของ $k$ มันต้องมีขั้นตอน $\Theta(n)$ เมื่ออยู่ที่นั่น เป็นกลยุทธ์ที่ต้องใช้ขั้นตอน $\Theta(\sqrt n)$ เท่านั้น
jp flag
@James โอเค ถ้าคอมพิวเตอร์ของผู้ใช้ใช้การคำนวณ 256 ครั้งเพื่อคำนวณคีย์สาธารณะล่ะ คอมพิวเตอร์ของผู้โจมตีต้องทำการคำนวณจำนวนเท่าใด
PrincePolka avatar
cn flag
"มันขึ้นอยู่กับความจริงที่ว่าผู้ส่งต้องการการดำเนินการเพียง 4 ครั้งในการคำนวณ kG ในขณะที่ผู้โจมตีต้องการการดำเนินการ 16 ครั้ง (สำหรับตัวอย่าง)" ใช่
James avatar
br flag
ขอบคุณสำหรับทุกตัวอย่างและคำตอบ ฉันเข้าใจดีว่าการโจมตีแบบง่ายๆ นี้ไม่สามารถคำนวณได้เร็วเพียงใดในตอนนี้
Score:5
ธง cn
jjj

เพื่อคำนวณ $kG$ คุณต้องการ $O(บันทึก(k))$ การดำเนินงาน (สำหรับทุกบิต ให้เพิ่มผลลัพธ์เป็นสองเท่าและเพิ่ม $G$ ถ้าบิตเป็น $1$). ตามที่คุณพูดถึงในความคิดเห็นสำหรับรอบ $k=1024$ คุณจะต้องชอบ $10$ การดำเนินการเพื่อคำนวณ $kG$. แต่ตัวอย่างนี้เป็นวิธีที่เล็กไปสำหรับการใช้งานจริงและเอฟเฟกต์แบบทวีคูณยังไม่เกิดขึ้นจริง โดยปกติเมื่อเส้นโค้งมีคำสั่งเป็นรอบๆ $2^n$, $k$ จะมีขนาดเท่ากับ $2^n$.

ดังนั้นสำหรับเส้นโค้งที่มีระเบียบ $2^{256}$ที่คุณต้องการ $log(2^{256})=256$ การดำเนินการเพื่อคำนวณ $kG$ แต่ $2^{256}$ เพื่อโจมตีมัน มีเพียงปัญหาเกี่ยวกับเส้นโค้งเล็ก ๆ ที่ไร้เหตุผลซึ่งอาจมีมากถึงสองสามพันล้านหรือล้านล้าน (เช่นในตัวอย่างของคุณ)

AAA avatar
nl flag
AAA
คุณทำได้ดีกว่า $2^{256}$ คุณสามารถใช้บันไดยักษ์แบบเบบี้สเต็ปเพื่อกู้คืน $k$ ในเวลาประมาณ $2^{128}$ อย่างไรก็ตาม ประเด็นสำคัญคือ: ต้องใช้เวลาพหุนามในการคำนวณ $kG$ แต่การโจมตีที่รู้จักกันดีที่สุดต้องใช้เวลาแบบทวีคูณในการกู้คืน $k$
James avatar
br flag
ถ้าเราสามารถพูดได้ว่าเป็นตัวอย่าง คอมพิวเตอร์สามารถคำนวณการดำเนินการ 80,000,000,000 ครั้งต่อวินาที (คอมพิวเตอร์แปดสิบเครื่องดำเนินการในแต่ละนาโนวินาที) ซึ่งมีค่าประมาณ $2^{36}$ การดำเนินการต่อวินาที และการโจมตีที่เร็วที่สุดสามารถหาได้ คีย์ในการดำเนินการ $2^{n/2}$ โดยที่ $n$ เป็นขนาดคีย์ ขนาดคีย์ 138 จะไม่เพียงพอที่จะทำให้การโจมตีใด ๆ เป็นไปไม่ได้ (ใช้เวลาประมาณ 3200 ปีในการคำนวณ)
James avatar
br flag
อีกทางเลือกหนึ่ง หากมีความกังวลอย่างมากเกี่ยวกับ Quantum Computing ว่าอาจสามารถโจมตีการเข้ารหัสขนาดคีย์ที่เล็กลงได้ จะไม่เพียงพอหรือไม่ที่จะสร้างระบบเข้ารหัสลับแบบ Elliptic Curve ด้วยขนาดคีย์ที่ใหญ่โดยไม่ต้องใช้เวลาในการคำนวณนานเกินไป (1024 ดูเหมือนว่าการดำเนินการจะไม่ใช้เวลานานเกินไปสำหรับคอมพิวเตอร์สมัยใหม่ในการดำเนินการ แม้ว่าการดำเนินการแต่ละครั้งจะใช้เวลา 1,000,000 นาโนวินาทีในการดำเนินการก็ตาม)
ag flag
@AAA มีการดำเนินการใด ๆ ที่รู้จักในที่สาธารณะของ baby-step giant-step สำหรับ Elliptic Curve Encryption หรือไม่

โพสต์คำตอบ

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