นี่เป็นความคิดที่บ้ามาก ดังนั้นฉันขอปรบมือให้คุณ แต่มันไม่ปลอดภัยอย่างจริงจัง การตีความ "RSA-CBC" ของฉันจะทำงานดังนี้:
$$
\begin{array}{l}
\textsf{RSA-CBC}\Bigl( (N,e), m_1 \| m_2 \| \ldots \|m_\ell \Bigr): \
\quad c_0 \gets \mathbb{Z}_N \
\quad \mbox{สำหรับ $i=1$ ถึง $\ell$:} \
\quad\quad c_i := (c_{i-1} + m_i)^e \bmod N \
\quad \mbox{return } c_0 \| ค_1 \| \ldots \| ม_\เอล
\end{อาร์เรย์}$$
นี่ละ $m_i$ และแต่ละคน $c_i$ คือ $\mathbb{Z}_N$-ธาตุ.
RSA-CBC เลือก "IV" แบบสุ่ม (องค์ประกอบของ $\mathbb{Z}_N$) จากนั้นเข้ารหัสบล็อกข้อความธรรมดาแต่ละบล็อกโดยเพิ่มบล็อกข้อความเข้ารหัสก่อนหน้า จากนั้นใช้ฟังก์ชัน RSA
แล้วเกิดอะไรขึ้นกับมัน? สมมติว่าฉันเห็นการเข้ารหัสของข้อความธรรมดาที่ไม่รู้จัก ถ้าให้ผมเดา $m_i$จากนั้นฉันสามารถตรวจสอบได้ว่าการเดาของฉันถูกต้องหรือไม่ผ่านทาง $c_i \overset?= (c_{i-1} + m_i)^e \bmod N$. ฉันสามารถดำเนินการตรวจสอบนี้ได้เนื่องจากเลขยกกำลัง RSA $e$ เป็นที่สาธารณะ
โดยทั่วไปแล้ว CBC จะไม่ทำงานกับการดำเนินการคีย์สาธารณะ ทุกคนสามารถทำซ้ำขั้นตอนที่ทำระหว่างการเข้ารหัส CBC ได้ หากรหัสบล็อกถูกแทนที่ด้วยการดำเนินการคีย์สาธารณะที่ทุกคนสามารถทำได้