ใช่คุณถูก.
คำถามของฉันไม่มีคำจำกัดความอย่างเป็นทางการของ IND-CPA ที่นี่ ฉันใช้คำว่า "IND-CPA" อย่างไม่เป็นทางการเพื่ออ้างถึงคุณสมบัติที่โครงร่างการเข้ารหัสอาจส่งผลให้เกิดข้อความรหัสเทียมเทียมใน $\คณิตศาสตร์แคล{C}_1$
แน่นอนว่านี่เป็นข้อสันนิษฐานที่หนักแน่นกว่าการเป็น IND-CPA แต่การชี้ประเด็นนี้เป็นเรื่องน่าเบื่อ
จริงๆ สมมติฐานนี้เขียนได้เป็น
$\mathsf{Enc}_k$ เป็นครอบครัว PRF
บางทีการคิดเกี่ยวกับเรื่องนี้ในแง่ของ PRFs อาจตรงไปตรงมากว่า ดังนั้นฉันจะแสดงให้เห็นอย่างรวดเร็วว่าถ้า $F_k, G_k$ เป็น (รายบุคคล) PRF แล้ว $(ฟ_ก, ก_ก)$ ไม่จำเป็นต้องเป็น เช่น การแบ่งปันคีย์ PRF สามารถทำลายความปลอดภัยได้
นี่เป็นเพราะการพึ่งพาระหว่างองค์ประกอบด้านซ้ายและด้านขวาตามที่คุณคาดเดา
อนุญาต $F_k$ เป็น PRF และให้ $G_k = F_k^{\circ 2}$, เช่น. $G_k(x) = F_k(F_k(x))$.
มันง่ายที่จะเห็นว่า $G_k$ เป็น (รายบุคคล) เป็น PRF --- ความแตกต่างใด ๆ สำหรับมันหมายถึงความแตกต่างสำหรับ $F_k$เนื่องจากคุณสามารถเลียนแบบการเข้าถึงแบบสอบถามได้อย่างมีประสิทธิภาพ $G_k$ ให้การเข้าถึงแบบสอบถามเพื่อ $F_k$.
ตอนนี้, $(F_k, F_k^{\circ 2})$ ไม่ใช่ PRF
นี่เป็นเพราะได้รับคำพยากรณ์ $\mathcal{O}(\cdot)$ ไม่ว่าจะเป็นเรื่องจริงหรือเรื่องบังเอิญ คุณก็ทำได้
- $(y_1, y_2)\gets \mathcal{O}(x)$,
- $(z_1, z_2) \gets \mathcal{O}(y_1)$,
- เดา REAL ถ้า $y_2 = z_1$และ RANDOM มิฉะนั้น
ถ้า $\mathcal{O}(x) = (F_k(x), F_k^{\circ 2}(x))$ เป็น PRF ของคุณแล้ว $y_2 = F_k^{\circ 2}(x)$, และ $z_1 = F_k(y_1)= F_k(F_k(x)) = F_k^{\circ 2}(x)$ ชนกัน
ในเกมสุ่ม ความน่าจะเป็นของค่าสองค่าใด ๆ ที่ชนกันนั้นค่อนข้างน้อย ดังนั้นสิ่งนี้จึงแสดงถึงความแตกต่างที่ค่อนข้างดีในทันที
มีปัญหาเฉพาะหน้ามากขึ้นแม้ว่า
วิธีหนึ่งในการสร้าง $\mathsf{Enc}_k(ม)$ เป็นของ XORing $m$ ด้วย PRF เป็นต้น $\mathsf{Enc}_k(m) = (r, F_k(r)\oบวก ม)$.
นี่เป็นเพียงโหมดตัวนับแบบสุ่ม (โดยที่ข้อความเป็นบล็อกเดียว)
ในการตั้งค่านี้การก่อสร้างร่วมกันคือ $(m_1,m_2)\mapsto (r, F_k(r)\oplus m_1, F_k(m_2))$.
อีกครั้งโดยการสอบถาม $(m_1, m_2)$แล้วสอบถาม $(m_3, r)$หนึ่งสามารถรับความแตกต่างที่มีประสิทธิภาพ
นี่คือสิ่งก่อสร้างตามธรรมชาติ (ที่ $\mathsf{Enc}$ เป็นโหมดตัวนับแบบสุ่ม) ก็ไม่ปลอดภัยในการตั้งค่าของคุณเช่นกัน