Score:5

การลงนาม RSA - คำถามเกี่ยวกับการปลอมแปลงที่มีอยู่และคำนำหน้าข้อความ มันเป็นเรื่องแปลก

ธง ua

ฉันยังใหม่กับสิ่งนี้ กรุณามีความกรุณา ฉันมีคำถามทางทฤษฎีที่ฉันต้องการตรวจสุขภาพ:

บ็อบและอลิซกำลังเซ็นชื่อ RSA โดยไม่มีฟังก์ชันแฮช เพียงแค่ใส่ข้อความและรับลายเซ็นออก

ข้อความที่ Bob และ Alice ส่งหากันนั้นเป็นตัวเลขแบบสุ่ม

หากไม่มีฟังก์ชันแฮช ผู้โจมตีก็สามารถสร้างข้อความที่มีลายเซ็นที่ต้องการได้ แต่พวกเขาไม่สามารถควบคุมข้อความได้

อย่างไรก็ตาม เนื่องจาก Bob และ Alice กำลังส่งหมายเลขแบบสุ่มให้กันและกัน ผู้โจมตีรายนี้จึงสามารถสร้างข้อความที่ดูถูกต้องได้ นั่นคือลายเซ็นที่ถูกต้องบนตัวเลขที่ดูสุ่ม

แต่บ็อบและอลิซต้องการทำให้แผนการนี้ปลอดภัย ดังนั้นพวกเขาจึงเพิ่มคำนำหน้าที่รู้จักในข้อความของพวกเขา พวกเขาเพิ่มโครงสร้างบางอย่าง

แทนที่จะเป็นข้อความที่ดูเหมือน: 484262 ดูเหมือนว่า: prefix_484262

นี่คือสิ่งที่ฉันต้องการตรวจสุขภาพ:

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

กล่าวคือความยาวของคำนำหน้ามีความสำคัญ ตัวอย่างเช่น หากคำนำหน้าเป็นเพียง 1 ออคเต็ต ผู้โจมตีอาจต้องใช้ความพยายามประมาณ 255 ครั้งในการปลอมข้อความที่ใช้งานได้ แต่ถ้าคำนำหน้าเป็นสองออคเต็ต ผู้โจมตีจะต้องพยายาม 65,536 ครั้ง

สิ่งอื่น ๆ ที่ฉันต้องการตรวจสุขภาพคือ:

การรู้คำนำหน้าไม่ใช่ข้อได้เปรียบในการบังคับข้อความอย่างดุร้าย (นอกเหนือจากข้อเท็จจริงที่ว่าผู้โจมตีรู้ว่าผลลัพธ์ต้องมีลักษณะอย่างไร)

ขอบคุณสำหรับความช่วยเหลือใด ๆ ฉันรู้สึกทราบซึ้ง.

Maarten Bodewes avatar
in flag
บางทีคุณอาจตรวจสอบ[คำตอบนี้](https://crypto.stackexchange.com/a/60039/1172) โปรดทราบว่าการเติม PKCS#1 v1.5 เป็นคำนำหน้า + แฮชที่ใส่ผ่านการยกกำลังแบบโมดูลาร์ด้วยไพรเวตคีย์ โปรดทราบว่าคุณต้องการให้ผลลัพธ์มีขนาดใหญ่พอๆ กับโมดูลัส ดังนั้นการใช้คำนำหน้าขนาดไดนามิกจึงเหมาะสม
Score:5
ธง my

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

นี่คือความเข้าใจของฉันเกี่ยวกับสถานการณ์ (และหากสิ่งนี้ไม่ถูกต้อง สิ่งที่ฉันพูดจะกลายเป็นโมฆะ):

  • อลิซ (และบ็อบ) เต็มใจที่จะคำนวณ $M^d \bmod n$, สำหรับข้อความโดยพลการ $M$ ตราบเท่าที $M$ มีคำนำหน้าที่ตกลงไว้ (และความลับ $d$แต่เป็นสาธารณะ $n$ และ $e$ (ซึ่งเป็นเลขยกกำลังสาธารณะที่สอดคล้องกับเลขยกกำลังส่วนตัว $d$).

  • การโจมตีที่คุณกำลังพิจารณาคือการโจมตี RSA แบบปิดตา; ผู้โจมตีมีข้อความ $M'$ และพวกเขาต้องการคำนวณ $M'^d \bmod n$, อย่างไรก็ตาม $M'$ ไม่ขึ้นต้นด้วยคำนำหน้า ดังนั้น สิ่งที่ผู้โจมตีทำคือเลือกค่าแบบสุ่ม $R$,คำนวณ $R^eM'$และตรวจสอบว่าบังเอิญมีคำนำหน้าหรือไม่ ถ้ามี ให้อลิซเป็นผู้เซ็นชื่อ $R M'^d$และผู้โจมตีแยกออก $R$ และพวกเขาก็ชนะ

ความน่าจะเป็น (ต่อการทำซ้ำ) ของการโจมตีครั้งนี้จะสำเร็จนั้นขึ้นอยู่กับความน่าจะเป็นที่ $R^eM'$ มีคำนำหน้าซึ่งเป็นสัดส่วนกับความยาวของคำนำหน้า

หากเป็นกรณีนี้ นั่นไม่ใช่การโจมตีเพียงอย่างเดียวที่เราต้องกังวล

การโจมตีอีกครั้งคือหากผู้โจมตีพบจำนวนเต็มเรียบจำนวนมากที่เริ่มต้นด้วยคำนำหน้า และให้อลิซ 'ลงชื่อ' พวกมัน จำนวนเต็มเรียบคือจำนวนที่มีตัวประกอบเพียงเล็กน้อยเท่านั้น หากผู้โจมตีสามารถค้นพบ $k$ จำนวนเต็มเรียบที่แต่ละจำนวนประกอบด้วยเพียงจำนวนเต็มแรกเท่านั้น $k$ จำนวนเฉพาะ จากนั้น (โดยไม่สนใจความเป็นไปได้ของสมการเชิงเส้นที่ไม่เป็นอิสระจากกัน สิ่งนี้สามารถแก้ไขได้ง่ายด้วยการมีเพิ่มเติมอีกสองสามอย่าง) ผู้โจมตีสามารถเรียนรู้ค่า $p^d \bmod n$ สำหรับครั้งแรก $k$ ช่วงเวลา $p$.

มีหลายวิธีที่ผู้โจมตีสามารถใช้ประโยชน์จากสิ่งนี้ วิธีที่เป็นไปได้มากที่สุดคือปรับปรุงเวลาค้นหาสำหรับการโจมตีดั้งเดิม: หากเราคิดว่าผู้โจมตีสามารถเรียนรู้ $2^d \bmod n$จากนั้นพวกเขาสามารถทดสอบได้ $2^z M'$ เพื่อเพิ่มมูลค่าของ $z$; สำหรับการทดสอบที่ล้มเหลวแต่ละครั้ง พวกเขาจะเพิ่มเป็นสองเท่า ซึ่งถูกกว่าการทดสอบเดิมมาก (โดยคูณด้วย $2^e \bmod n$ น่าจะมีประสิทธิภาพมากที่สุด)

Joshua avatar
cn flag
ฉันได้ข้อสรุปว่า RSA เป็นที่รู้จักกันดี แต่ใช้งานยากกว่า DSA เราเคยชินกับการหลีกเลี่ยงจุดอ่อนของ RSA (จนกว่าเราจะไม่ทำอย่างนั้น มีคนทำลายคีย์จำนวนมากที่สร้างโดยอัลกอริทึมโง่ๆ ซึ่งทำให้พวกมันอยู่ใกล้จุดกึ่งกลางมากเกินไป) แน่นอน DSA มีของตัวเอง อย่ารั่วไหลข้อมูลใด ๆ เกี่ยวกับ k; ใช้ RNG ที่แข็งแกร่งในการเข้ารหัสเพื่อรับ k ใหม่สำหรับแต่ละข้อความ
Score:3
ธง ng

ฉันถือว่าระบบลายเซ็นที่เสนอใช้ข้อความ $M$แปลงเป็นจำนวนเต็ม $m$ น้อยกว่า $n$ โดยการเพิ่มค่าคงที่คงที่ $ค$ ทางด้านซ้ายของนิพจน์ของ $M$ เป็น $i$ ตัวเลขในบางฐาน $b\ge2$ (ฐาน 10 ในคำถาม) ดังนั้น $m:=c\,b^i+M$จากนั้นสร้างลายเซ็น $\sigma=\mathrm{ซิก}(M)$ ต่อตำรา RSA พร้อมรหัสส่วนตัว $(น,ง)$, นั่นคือ $\sigma:=m^d\bmod n$; และผู้ตรวจสอบที่ได้รับ $(น,อี)$ และ $(M,\sigma)$ (หรือแค่ $\sigma$) คำนวณ $\sigma^e\bmod n$ จากนั้นตรวจสอบว่า $c\,b^i+M$. สำหรับตอนนี้ฉันปล่อยไว้โดยไม่ระบุว่า $i$ ได้รับการแก้ไขหรือขึ้นอยู่กับ $M$ (แล้วยังไง).

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

เพื่อให้ข้อเสนอนี้มีโอกาสที่จะเป็นจริง เราต้องเพิ่ม "ถึงจุดที่คำนำหน้า $ค$ มีขนาดใหญ่จนแยกตัวประกอบของ $n$ กลายเป็นการโจมตีที่ง่ายที่สุด". ฉันถือว่าต่อไปนี้

ข้อเสนอนั้นดูเหมือนจริง (แต่เราไม่มีหลักฐาน) ถ้าเราใช้เป็นคำจำกัดความของการรักษาความปลอดภัยสำหรับลายเซ็น Un-Forgeability ที่มีอยู่ภายใต้ Known Message Attackซึ่งฝ่ายตรงข้ามมีรหัสสาธารณะ $(น,อี)$ บวกกับจำนวนที่ถูกต้อง $(M_j,\sigma_j)$ คู่สำหรับการสุ่ม $M_j$และพยายามแสดงก $(M,\sigma)$ คู่สำหรับ $M$ ไม่มี $M_j$.

แต่นั่นไม่ถูกต้องถ้าเราใช้ Un-Forgeability ที่มีอยู่ภายใต้ Chosen Message Attackซึ่งฝ่ายตรงข้ามสามารถขอลายเซ็นได้ $\sigma_j$ ของข้อความใดๆ $M_j$ ที่พวกเขาเลือกก่อนจัดแสดง $(M,\sigma)$ ดังกล่าวข้างต้น ปัญหาคือภายใต้รูปแบบการรักษาความปลอดภัยนี้มีการโจมตีที่ดีกว่าการใช้กำลังดุร้าย

  • การโจมตีเป็นเรื่องง่ายถ้าเราอนุญาต $i$ เป็นจำนวนหลักของ $M$ ในฐาน $ข$ (ไม่ว่าจะมีหรือไม่มีเลขศูนย์นำหน้า) และใช้เลขยกกำลังสาธารณะขนาดเล็ก $e$ (เช่น 3): ผู้โจมตีพบลายเซ็นของข้อความใดๆ $M$ เห็นว่าเหมาะสม (ไม่เกินขนาดที่กำหนด) จากลายเซ็นของข้อความ $M'=M\,b^e$ ถ้า $M$ สั้นพอที่จะตอบสนองความ $c\,b^{i'}+M'=c\,b^{i+e}+M\,b^e<n$ ความต้องการตั้งแต่ $\mathrm{Sig}(M')\,b^{-1}\bmod n=\mathrm{Sig}(M)$.
  • สำหรับคงที่ $i$สิ่งที่ยากขึ้น แต่ เดสเมดต์และโอดลิซโก การโจมตีช่วยให้การปลอมแปลงมีความยุ่งยากต่ำกว่ากำลังเดรัจฉานมาก ห่างไกลจากสองเท่าเมื่อเราอนุญาต $ค$ ให้ใหญ่เป็นสองเท่าและแม้แต่เลขชี้กำลังย่อยด้วย $\log_2(c)$.
  • การโจมตีครั้งก่อนจะง่ายขึ้นหากเราอนุญาต $i$ แก้ไขสำหรับที่กำหนด $ค$แต่เท่ากับขนาดของ $ค$ ในฐาน $ข$.

การรู้คำนำหน้าไม่ใช่ข้อได้เปรียบในการบังคับข้อความอย่างดุร้าย (นอกเหนือจากข้อเท็จจริงที่ว่าผู้โจมตีรู้ว่าผลลัพธ์ต้องมีลักษณะอย่างไร)

แรงจูงใจของลายเซ็นคือการอนุญาตการตรวจสอบโดยไม่มีข้อมูลที่เป็นความลับ และการทำให้คำนำหน้าเป็นความลับนั้นขัดกับสิ่งนั้น ฉันจะถือว่าอย่างไรก็ตาม

จากนั้น ข้อความนั้นถูกต้อง ยกเว้นภายใต้การโจมตีเฉพาะคีย์ที่ไม่สมจริง แต่มีข้อโต้แย้งด้วยเหตุผลหลายประการที่ทำให้ถูกต้อง: ฝ่ายตรงข้ามรู้อย่างน้อยหนึ่งข้อ $(M_0,\sigma_0)$ จับคู่นอกเหนือจากคีย์สาธารณะ $(น,อี)$จึงสามารถค้นหาคำนำหน้าได้อย่างง่ายดาย $ค$ โดยการคำนวณ ${\sigma_0}^e\bmod n$.

โพสต์คำตอบ

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