Score:0

ความปลอดภัย RSA เมื่อใช้ข้อความสั้น

ธง cn

เราทราบดีว่าข้อความสั้นที่เข้ารหัสด้วย RSA สามารถถูกบังคับได้อย่างง่ายดาย

สมมติว่า Bob เข้ารหัสข้อความที่มีเพียง "สวัสดี" และเข้ารหัสด้วยรหัสสาธารณะของอลิซ ทุกคนสามารถลองเข้ารหัสชุดค่าผสมที่เป็นไปได้ทั้งหมดของข้อความสั้น ๆ โดยใช้รหัสสาธารณะของ Alice จนกว่าจะได้ผลลัพธ์ที่ตรงกัน

สิ่งที่ฉันสงสัยคือตัวตนของข้อความสั้น ๆ สามารถปลอมแปลงได้หรือไม่?

สมมติว่า Bob เข้ารหัสข้อความหนึ่งและสองอักขระจำนวนมากด้วยคีย์ส่วนตัวของเขา ผู้โจมตีสามารถปลอมแปลงไฟล์ ใหม่ ข้อความหนึ่งหรือสองตัวอักษรเพื่อให้ดูเหมือนว่ามาจาก Bob?

แน่นอน ในกรณีเหล่านี้ เรากำลังพูดถึงการไม่มีการเพิ่มช่องว่างภายในหรือการเปลี่ยนแปลงอื่นใด

Marc Ilunga avatar
tr flag
ยินดีต้อนรับสู่ Crypto.SE! โดยทั่วไป หนังสือเรียน RSA นั้นสามารถเปลี่ยนแปลงได้เนื่องจากธรรมชาติของเลขคณิตแบบโมดูลาร์ เช่น กำหนดการเข้ารหัส $m$ และ $m'$ ($c$ และ $c'$) เราจะได้การเข้ารหัส $mm'$ ซึ่งก็คือ $c*c'$ นอกเหนือจากหมายเหตุที่ระบุว่า RSA เป็นระบบคีย์สาธารณะ โดยปกติแล้วทุกคนจะถือว่าคีย์สาธารณะนั้นเป็นที่รู้จัก
Peter2223 avatar
cn flag
ถ้าฉันเข้าใจถูกต้อง ถ้า Bob เคยส่งข้อความ "a" และ "b" มาก่อน ผู้โจมตีสามารถปลอมแปลงข้อความ "ab" ได้สำเร็จหรือไม่ แล้วข้อความใหม่ทั้งหมดเช่น "c" ล่ะ
Marc Ilunga avatar
tr flag
โปรดทราบว่า $ab$ หมายถึงการคูณ ไม่ใช่การต่อข้อมูล อย่างไรก็ตาม ด้วยการเข้ารหัส $2$ จึงเป็นไปได้ที่จะทำการขยับบิตและสร้างข้อความเข้ารหัสใหม่โดยการต่อข้อมูล สำหรับข้อความใหม่ทั้งหมด โปรดทราบว่ารหัสสาธารณะอาจมอบให้กับทุกคน ไม่ใช่แค่ Bob ดังนั้นจึงไม่จำเป็นต้องมีการจัดการที่ชาญฉลาด ผู้โจมตีสามารถเข้ารหัสสำหรับตนเองเท่านั้น
Peter2223 avatar
cn flag
ฉันกำลังพูดถึงข้อความใหม่ที่เข้ารหัสด้วย **รหัสส่วนตัว** ของ Bob ข้อความที่เข้ารหัสด้วยรหัสส่วนตัวของเขาจะยืนยันตัวตนของเขา เป็นไปได้หรือไม่ที่จะปลอมข้อความใหม่เพื่อให้ดูเหมือนว่ามาจากคีย์ **ส่วนตัว**
Marc Ilunga avatar
tr flag
โอ้ ฉันเข้าใจผิดเพราะใช้รหัสส่วนตัวในการเข้ารหัส นี่ไม่ใช่แนวปฏิบัติมาตรฐานจริงๆ เครื่องมือที่เหมาะสมจะเป็นลายเซ็นดิจิทัล (ไม่เหมือนกับการเข้ารหัสด้วยรหัสลับ) อย่างไรก็ตามการปลอมแปลงบางอย่างจะใช้กลอุบายเดียวกับที่เขียนไว้ก่อนหน้านี้ ดูคำตอบนี้ https://crypto.stackexchange.com/questions/20085/ which-attacks-are-possible-against-raw-textbook-rsa
Score:1
ธง ng

เราทราบดีว่าข้อความสั้นที่เข้ารหัสด้วย RSA สามารถถูกบังคับได้อย่างง่ายดาย

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

Bob เข้ารหัสข้อความ (..) ด้วยรหัสส่วนตัวของเขา

"เข้ารหัส" นั้นเป็นคำศัพท์ที่ไม่ถูกต้องสำหรับการใช้การแปลง $m\mapsto f(m)=m^d\bmod n$ ที่ไหน $(น,ง)$ เป็นคีย์ส่วนตัว RSA ของ Bob นั่นไม่ได้ เข้ารหัสเนื่องจากคำดังกล่าวหมายถึงการแปลงข้อความเพื่อทำให้ศัตรูไม่สามารถเข้าใจได้ และที่นี่ทุกคนสามารถยกเลิกการเปลี่ยนแปลงโดยใช้สาธารณะ $(น,อี)$. ต้องเปลี่ยนคำว่า "เข้ารหัส" เป็น "แปลง" หรือ "สัญญาณ" ผลลัพธ์ $ฉ(ม)$ ของการดำเนินการนั้นเป็นตำรา RSA ลายเซ็นของข้อความ $m$ โดยคีย์ส่วนตัวของ Bob

ผู้โจมตีสามารถปลอมข้อความใหม่หนึ่งหรือสองตัวอักษรเพื่อให้ดูเหมือนว่ามาจาก Bob ได้หรือไม่

ใช่. เครื่องมือพื้นฐานที่ใช้คือคุณสมบัติการคูณของฟังก์ชัน $f$: สำหรับทุกอย่าง $m_1,m_2$ มันถือ $f(m_1\cdot m_2\bmod n)\ =\ f(m_1)\cdot f(m_2)\bmod n$. ดังนั้นศัตรูที่รู้ตำรา RSA ลายเซ็นของข้อความ $m_1$ และ $m_2$ สามารถค้นหาลายเซ็นตำรา RSA ของข้อความ $m_1\cdot m_2\bmod n$, หรือ ${m_1}^i\cdot{m_2}^j\bmod n$ สำหรับจำนวนเต็มคู่ใดๆ $i,j$.

สำหรับข้อความที่ถูกจำกัดให้มีความหมาย มีความเป็นไปได้ที่จะมี $m_1\cdot m_2=m_3\cdot m_4$ ซึ่งช่วยให้สามารถคำนวณลายเซ็น RSA ของตำราเรียนได้ $m_4$ จากที่ $m_1$, $m_2$ และ $m_3$, เช่น $f(m_4)\ =\ f(m_1)\cdot f(m_2)\cdot f(m_3)^{-1}\bmod n$.

Peter2223 avatar
cn flag
ขอบคุณสำหรับคำตอบ! ตามที่ฉันเข้าใจ ผู้โจมตีไม่สามารถปลอมแปลงข้อความที่ลงนามใหม่ซึ่งประกอบด้วยองค์ประกอบที่ไม่เคยลงนามมาก่อน ตัวอย่างเช่น หากข้อความที่มีเพียงตัวอักษร "c" ในกรณีนี้ไม่เคยถูกส่ง แต่ตัวอักษรอื่นๆ ถูกส่ง ผู้โจมตีไม่สามารถปลอมแปลงลายเซ็นได้หรือไม่
fgrieu avatar
ng flag
@ Peter2223: เอ่อ ไม่ ขออภัย ฉันใช้สัญกรณ์ทั่วไปว่า $u\,v$ เป็นผลคูณของ $u$ และ $v$ และคุณเข้าใจการต่อข้อมูล (มักสังเกตว่า $u\mathbin\|v$ ) ตอนนี้ฉันเปลี่ยนเป็น $u\cdot v$ เพื่อให้ชัดเจนยิ่งขึ้นว่าเราคูณ สิ่งที่ฉันหมายถึงคือหากข้อความที่ลงนามเข้ารหัสเป็นจำนวนเต็ม $m_1=7$ และ $m_2=8$ ฝ่ายตรงข้ามสามารถค้นหาลายเซ็นของข้อความที่เข้ารหัสเป็นจำนวนเต็ม $7\cdot8=56$ (และ $7\cdot7 ด้วย \cdot7\cdot8\cdot8=21952$) สิ่งนี้ยากกว่าสำหรับข้อความที่มีความหมาย แต่สามารถดึงกลอุบายนั้นได้
Peter2223 avatar
cn flag
ใช่ ฉันไม่ได้มาที่หัวข้อนี้พร้อมกับความรู้มากมายเกี่ยวกับการเข้ารหัส ฉันกำลังสร้างโปรแกรมที่ต้องทดสอบ "ตัวตน" ของไฟล์ที่ส่ง ฉันคิดว่าจะแฮชไฟล์แล้วเซ็นชื่อด้วย raw rsa แต่ sha-256 มีเพียง 64 ตัวอักษรและฉันอ่านพบว่า rsa ไม่ปลอดภัยมากกับข้อความสั้น ๆ โดยไม่มีช่องว่างภายในแบบสุ่ม เนื่องจากเครื่องรับไม่สามารถแบ่งปันอัลกอริทึมแบบสุ่มได้ ฉันจึงไม่สามารถเพิ่มช่องว่างภายในแบบสุ่มได้ และการเพิ่มช่องว่างภายในที่กำหนดไว้ล่วงหน้าดูเหมือนจะไม่มีประสิทธิภาพมากนัก sha-256 ที่ลงนามด้วย raw rsa 2048 จะปลอดภัยเพียงใด
fgrieu avatar
ng flag
@ Peter2223: ฉันเชื่อว่าอยู่ในด้านที่ไม่ปลอดภัยของขีดจำกัดที่การโจมตี Desmedt และ Odlyzko สามารถนำไปใช้ได้ (มี [คำถาม](https://crypto.stackexchange.com/q/51680/555) เกี่ยวกับการโจมตีนั้น ). แอปพลิเคชันของคุณต้องการลายเซ็นพร้อมช่องว่างภายในลายเซ็นที่คิดมาอย่างดี เนื่องจากฉันไม่เข้าใจความหมายของ "ไม่สามารถแบ่งปันอัลกอริทึมแบบสุ่ม" ฉันจึงไม่สามารถบอกได้ว่า RSASSA-PSS (การเติมลายเซ็นแบบสุ่ม), RSASSA-PKCS1-v1_5 (การเติมลายเซ็นที่กำหนดขึ้น, ไม่มีหลักฐานความปลอดภัย) หรือ ISO/ IEC 9796-3 แบบแผน 2 หรือ 3 จะเพียงพอ

โพสต์คำตอบ

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