Score:2

เป็นไปได้อย่างไรที่จะได้รับเลขชี้กำลังสาธารณะจากคีย์ส่วนตัว RSA

ธง es

ฉันจะจดสูตรที่ฉันรู้และใช้เพื่อสร้างคีย์ RSA

  1. พวกเราเลือก $p$, $คิว$
  2. $N = p\cdot q$
  3. $\varphi(n) = (p-1)\cdot(q-1)$
  4. เลือก $e$ เช่น
    • $1 < อี < \varphi(N)$
    • $e$ เป็นโคไพร์มด้วย $N$, $\varphi(n)$
  5. เลือก $d$ ดังนั้น $d\cdot e\bmod\varphi(n)=1$

แค่นั้นแหละ. ด้วยสิ่งเหล่านี้หากเรามี $p=2$ และ $q=7$ฉันประสบความสำเร็จได้รับ $d=11$ และ $e=5$ ซึ่งถูกต้อง

ตอนนี้ลองนึกดูว่าฉันมีคีย์ส่วนตัวเท่านั้นซึ่งก็คือ $(11,14)$ (นั่นคือ $d=11$, $N=14$). ฉันจะได้อย่างไร $e=5$. ฉันเข้าใจว่าด้วย $d$ และ $N$คุณไม่สามารถรับได้โดยตรง $e$แต่ในขณะที่ RSA ทำงาน มันจะลองรูปแบบต่างๆ ของ $e$ จากนั้นตรวจสอบว่าถูกต้องหรือไม่ นั่นคือวิธีรับรหัสสาธารณะจากรหัสส่วนตัว

ใครช่วยอธิบายให้ฉันทราบว่าฉันควรทำขั้นตอนใดที่นี่เพื่อหาอะไร $e$ อาจเป็นแล้วจากสิ่งเหล่านั้นซึ่ง $e$ ฉันควรเลือก ?

fgrieu avatar
ng flag
หมายเหตุ: คุณลืม $p\ne q$ ซึ่งจำเป็นหากคุณกำหนด $\varphi(n) = (p-1)\cdot(q-1)$ หรือต้องการให้การเข้ารหัส/ถอดรหัสทำงานตลอดเวลา ข้อกำหนดที่ $e$ เป็น coprime กับ $N$ นั้นผิดปกติ ข้อกำหนดที่ว่า $ 1
Maarten Bodewes avatar
in flag
หากคุณมีลายเซ็น คุณสามารถทดสอบการเดาของคุณได้โดยการตรวจสอบ สิ่งนั้นใช้ไม่ได้กับไซเฟอร์เท็กซ์ อย่างน้อยก็ไม่ใช่ถ้าคุณใช้รูปแบบการเติมแบบสุ่ม ด้วย RSA แบบเรียนที่อาจยังใช้ได้ ฉันไม่แน่ใจว่าคุณสามารถคำนวณ $e$ ได้หรือไม่หากคุณไม่มีอะไรต้องยืนยัน และ *หากเลือก $e$ แบบสุ่ม* อาจเป็นไปได้ที่จะทำบางอย่างหากได้รับเลือกตามที่กำหนด [คำตอบนี้](https://crypto.stackexchange.com/q/25907/1172): เดา $e$, คำนวณ $p$ และ $q$, ตรวจสอบ ถ้ามันตรงกับอัลกอริทึมที่กำหนดขึ้น
Nika Kurashvili avatar
es flag
ฉันควรใช้สูตรใดเพื่อที่อย่างน้อยฉันจะเริ่มเดา `e` ได้หากฉันมี `d` และ `N` ? ในสูตรข้างต้นของฉัน มันยังไม่สมเหตุสมผลเลยที่ฉันเขียนโปรแกรมที่เดา `e`..
TonyK avatar
us flag
ในทางปฏิบัติ คีย์ส่วนตัวประกอบด้วย (อย่างน้อย) $p,q,$ และ $e$ สามารถคำนวณ $d$ และ $N$ ได้อย่างง่ายดาย และมักจะเก็บไว้พร้อมกับ $p,q,$ และ $e$; แต่ไม่จำเป็น ถ้าสิ่งที่คุณมีคือ $d$ และ $N$ คุณจะไม่สามารถคำนวณ $e$ ได้โดยไม่ต้องแยกตัวประกอบ $N$
Score:4
ธง ng

ถามว่าใน RSA มีใครพบ $e$ ที่ให้ไว้ $d$ และ $N$. ฉันจะเพิกเฉยต่อข้อกำหนดของคำถามที่ว่า $e$ เป็นโคไพร์มด้วย $N$ซึ่งผิดปกติอย่างมากและไม่มีความเกี่ยวข้องทางคณิตศาสตร์ ฉันจะถือว่า $p\ne คิว$เพราะมันจำเป็นสำหรับที่ระบุไว้ $\varphi(N)=(p-1)\cdot(q-1)$ ที่จะถือ

ด้วยนิยามของคำถาม RSA วิธีค้นหา $e$ ไป

  • ปัจจัย $N$ การค้นหา $p$ และ $คิว$
  • คำนวณ $\varphi=(p-1)\cdot(q-1)$
  • คำนวณ $e$ รู้ $e\cdot d\bmod\varphi=1$ และ $1<e<\varphi$. ที่ $e$ ถูกกำหนดโดยเฉพาะและส่วนผกผันของโมดูลาร์ของ $d$ ใน กลุ่มคูณของโมดูโลจำนวนเต็ม $\varphi$. สำหรับจำนวนน้อย วิธีการทำงานคือการลองผิดลองถูกจำนวนน้อย $e>1$. วิธีการที่สร้างสรรค์กว่าคือ (ครึ่ง)-อัลกอริทึมแบบยุคลิดแบบขยายซึ่งคำนวณ $e=d^{-1}\bmod \varphi$ โดยตรง. สำหรับอัลกอริทึมเชิงปฏิบัติที่ใช้เฉพาะจำนวนเต็มที่ไม่เป็นลบ:
    1. $a\gets d\bmod \varphi$ , $b\gets \varphi$ , $x\get0$ และ $y\get1$
      บันทึก: $a\cdot x+b\cdot y=\varphi$ จะถือต่อไป
    2. ถ้า $a=1$จากนั้นเอาต์พุต "ผกผันที่ต้องการ $e$ ของ $d$ โมดูโล $\varphi$ เป็น $y$" และหยุด
    3. ถ้า $a=0$จากนั้นเอาต์พุต "ผกผันที่ต้องการ $e$ ของ $d$ โมดูโล $\varphi$ ไม่ได้อยู่" และหยุด
    4. $r\gets\fชั้น b/a\rชั้น$
    5. $b\gets b-a\cdot r$ และ $x\gets x+r\cdot y$
    6. ถ้า $b=1$จากนั้นเอาต์พุต "ผกผันที่ต้องการ $e$ ของ $d$ โมดูโล $\varphi$ เป็น $\varphi-x$" และหยุด
    7. ถ้า $b=0$จากนั้นเอาต์พุต "ผกผันที่ต้องการ $e$ ของ $d$ โมดูโล $\varphi$ ไม่ได้อยู่" และหยุด
    8. $r\gets\fชั้น a/b\rชั้น$
    9. $a\gets a-b\cdot r$ และ $y\gets y+r\cdot x$
    10. ต่อที่ 2

โดยทั่วไปใช้วิธีเดียวกันนี้ในการคำนวณ $d$ จาก $e$, เนื่องจาก $d$ และ $e$ มีความสมมาตรใน $e\cdot d\bmod\varphi=1$. อย่างไรก็ตามนั่นไม่ใช่วิธีการ $d=11$ ถูกคำนวณในคำถาม ด้วยเหตุผลบางอย่างที่คำถามต้องการ $e<\varphi(N)$ แต่ไม่ $d<\varphi(N)$หรือมากกว่าปกติ $d<N$ หรือ $d<\ชื่อผู้ประกอบการ{lcm}(p-1,q-1)$.


ปัญหาร้ายแรงเกี่ยวกับแนวทางนี้สำหรับ RSA ตามที่ปฏิบัติ (ซึ่งมีขนาดใหญ่มาก $N$, ทศนิยมอย่างน้อยหลายร้อยหลัก): ใช้ไม่ได้เพราะ $N$ จะมีมากจนแยกตัวประกอบไม่ได้ ดังนั้น $\varphi$ ไม่สามารถคำนวณด้วยวิธีนี้ได้

อีกทั้งเงื่อนไขของคำถาม $e\cdot d\bmod\varphi(N)=1$ เป็นเงื่อนไขที่เพียงพอ แต่ไม่ใช่เงื่อนไขที่จำเป็นสำหรับการเข้ารหัส RSA แบบเรียน $(จ,น)$ จะถูกยกเลิกโดยการถอดรหัส RSA โดยใช้ $(d,N)$, และในทางกลับกัน. เงื่อนไขที่จำเป็นคือ $e\cdot d\bmod\lambda(N)=1$, ที่ไหน $\lambda(N)=\operatorname{lcm}(p-1,q-1)$. เงื่อนไขนั้นมักใช้ในทางปฏิบัติ: ได้รับอนุญาตจาก พีเคซีเอส#1และได้รับอาณัติจาก ม.ป.ป.186-4. ตัวอย่างเล็ก ๆ เทียม: $N=341$, $e=7$, $d=13$ ใช้งานได้ดีสำหรับการเข้ารหัส/ถอดรหัส RSA แบบเรียน $e\cdot d\bmod\varphi(N)=1$ ไม่ถือ (ในตัวอย่างนี้ $p=11$, $q=31$, $\varphi(N)=300$, $\แลมบ์ดา(N)=30$ ).

อย่างไรก็ตาม ใน RSA ในทางปฏิบัติ $e$ มีขนาดเล็กก็มักจะมีขนาดเล็กนั่นเอง $e$ สามารถพบได้โดยการแจงนับ ดังนั้นวิธีการอาจเป็น:

  • คำนวณ $c\gets2^d\bmod N$
  • คำนวณ $c_2\gets c^2\bmod N$
  • ชุด $e\get1$
  • ทำซ้ำ
    • ชุด $e\ได้ e+2$
    • ชุด $c\gets c\cdot c_2\bmod N$; สังเกต $c=2^{d\cdot e}\bmod N$
    • ถ้า $ค=2$
      • สำหรับ $m$ หนึ่งร้อยจำนวนเฉพาะแรก (หมายเหตุ: สำหรับจำนวนน้อย $N$เราต้องการหยุดทันทีที่ $m^2>N$ )
        • ถ้า $m^{e\cdot d}\bmod N\ne m$, ต่อที่ ทำซ้ำ ข้างต้น
      • เอาต์พุต $e$ และหยุด

เกือบจะแน่นอนว่าถ้า $e$ เป็นเอาต์พุตก็ใช้ได้ในแง่ที่ว่าการเข้ารหัส RSA แบบเรียนใช้ $(จ,น)$ ถูกยกเลิกโดยการถอดรหัส RSA โดยใช้ $(d,N)$, และ (เทียบเท่า) $e\cdot d\bmod\lambda(N)=1$. มันไม่ค่อยแน่ใจ $e\cdot d\bmod\varphi(N)=1$แต่ที่รู้ๆ $e\cdotd$ และ $N$ เป็นไปได้ที่จะแยกตัวประกอบ $N$ (โดยใช้ นี้ อัลกอริทึม) แล้วคำนวณ เดอะ $e$ กับ $e\cdot d\bmod\varphi(N)=1$ และ $1<e<\varphi(N)$ถ้าต้องการด้วยเหตุผลบางอย่าง


นอกจากนี้: ข้างต้นยังห่างไกลจากความเหมาะสม เมื่อไร $\delta=\ln(e)/\ln(N)$ ต่ำกว่าเกณฑ์ที่กำหนดตามลำดับ $0.292$มีวิธีที่จะแยกตัวประกอบ $N$ (และแก้ปัญหาด้วยวิธีแรกที่กล่าวถึง) โดยทั่วไปเราแลกเปลี่ยน $d$ และ $e$ ใน Dan Boneh และ Glenn Durfee's การเข้ารหัสของ RSA ด้วยคีย์ส่วนตัว $d$ น้อยกว่า $N^{0.292}$, ใน การดำเนินการของ Eurocrypt 1999. ดู ที่นั่น สำหรับข้อมูลเพิ่มเติม

Hagen von Eitzen avatar
rw flag
แน่นอนว่า $p-1$ และ $q-1$ ควร *ไม่* มีปัจจัย *ใหญ่* ที่เหมือนกัน มิฉะนั้น วิธีการสร้างจำนวนเฉพาะของคุณจะแย่และทำให้การโจมตีเป็นไปได้โดยไม่ได้ตั้งใจ (อันที่จริง ความสัมพันธ์ที่เรียบง่ายกว่าระหว่าง ต้องหลีกเลี่ยง $p,q$)) ดังนั้นโดยเฉพาะอย่างยิ่ง $\lambda(p-1,q-1)$ คือ $\frac12\phi(N)$ - ยิ่งไปกว่านั้น ในทางปฏิบัติ เรามักจะเลือก $e$ ที่ดี (สาธารณะ) เช่น ไพรม์ขนาดเล็ก แต่ไม่เล็กเกินไปใกล้กับกำลังของ $2$; สิ่งนี้ทำให้การคำนวณการเข้ารหัสเร็วขึ้นในขณะเดียวกันก็ไม่มีปัญหามากนักในการหลีกเลี่ยงจำนวนเฉพาะ $\equiv 1\pmod e$ ในกระบวนการสร้างพวกมัน

โพสต์คำตอบ

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