Score:2

บารัคและคณะ พิสูจน์ว่าการทำให้งงงวยด้วยกล่องดำนั้นเป็นไปไม่ได้

ธง br

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

หลักฐานถูกนำเสนอในลักษณะที่มีการกล่าวว่าถ้ามีโปรแกรมเข้ารหัสอยู่ ค'(ก, ข, x) ซึ่งกลับมา ถ้าและถ้า เอ = xและโปรแกรมเข้ารหัสอื่น D'(ก, ข, ฉ) ซึ่งกลับมา 1 ถ้าเท่านั้นถ้า ฉ(ก, ข, x) = ข, แล้ว D'(a, b, C(a, b, x)) = 1 โดยมีความน่าจะเป็น 1. นอกจากนี้ยังหมายความว่าผู้โจมตีจะสามารถแยกแยะความแตกต่างได้ ค'(ก, ข, x) จากฟังก์ชั่นอื่น ซี() ซึ่งกลับมา 0 ทุกจุดเช่น D'(a, b, Z()) = 1 ด้วยความน่าจะเป็นน้อยกว่า 1.

การพิสูจน์ไม่สมเหตุสมผลสำหรับฉันจริง ๆ เนื่องจากสมมติว่าผู้โจมตีไม่สามารถทดสอบทุกค่าของ และ ดูเหมือนจะไม่มีทางสรุปได้ว่ามีความแตกต่างระหว่าง ค'(ก, ข, x) และ ซี(). Black-Box Obfuscation จะถือเป็นจริง แต่ถ้าวิธีเดียวที่จะแยกความแตกต่างของสองโปรแกรมคือการทดสอบทุก ๆ อินพุตและตรวจสอบเอาต์พุต

มีใครบ้างที่สามารถช่วยอธิบายให้ฉันฟังว่าข้อพิสูจน์นี้มีข้อสรุปอย่างแท้จริงที่จะบอกว่า Black-Box Obfuscation (ส่วนใหญ่) เป็นไปไม่ได้ได้อย่างไร

kodlu avatar
sa flag
โปรดระบุลิงก์ไปยังบทความหากมีออนไลน์
James avatar
br flag
@kodlu ตอนนี้ฉันได้รวมลิงค์ไปยังหลักฐานที่กล่าวถึงแล้ว (บทความนี้อธิบายในลักษณะทางคณิตศาสตร์มากกว่าที่ฉันทำ แต่เนื่องจากเป็นหลักฐานที่ค่อนข้างมีชื่อเสียงฉันจึงได้รับรูปแบบที่เรียบง่ายเพื่อนำเสนอที่นี่)
Score:3
ธง us

กระดาษกำหนดคลาสฟังก์ชันสองคลาส:

\begin{align*} C_{\alpha,\beta}(x) &= \begin{cases} \beta & \mbox{ ถ้า } x=\alpha \ 0^k & \mbox{ มิฉะนั้น} \end{cases} \ D_{\alpha,\beta}(F) &= \begin{cases} 1 & \mbox{ if } F(\alpha)=\beta \ 0 & \mbox{ otherwsie} \end{cases} \end{จัดตำแหน่ง*}

ประเด็นคือถ้าคุณได้รับวงจรใดๆ $C^*$ (แม้แต่อันที่คลุมเครือ) คำนวณฟังก์ชันเดียวกับ $C_{\alpha,\beta}$ แล้ว $D_{\alpha,\beta}(C^*)=1$.

ในทางกลับกัน หากคุณมีสิทธิ์เข้าถึงกล่องดำเท่านั้น $C_{\alpha,\beta}$, และ $\alpha,\beta$ จะถูกเลือกอย่างเสมอภาคกัน ดังนั้น การป้อนข้อมูลที่เป็นเหตุเป็นผลจึงเป็นเรื่องยาก $D_{\alpha,\beta}$ ออก 1.

โดยสัญชาตญาณ เข้าถึงอบายภูมิ $C_{a,b}$ ให้พลังมากกว่าการเข้าถึงกล่องดำ $C_{a,b}$.

การพิสูจน์ไม่สมเหตุสมผลสำหรับฉันจริง ๆ เนื่องจากสมมติว่าผู้โจมตีไม่สามารถทดสอบทุกค่าของ $\alpha$ และ $\เบต้า$ ดูเหมือนจะไม่มีทางสรุปได้ว่ามีความแตกต่างระหว่าง $C_{\alpha,\beta}$ และ $Z$ (ฟังก์ชันที่ให้เอาต์พุตเป็นศูนย์ในทุกอินพุต)

ผู้โจมตีไม่แยกแยะความสับสนของ $C_{\alpha,\beta}$ จากความยุ่งเหยิงของ $Z$ โดยลองทุกอินพุต ผู้โจมตีแยกความแตกต่างโดยการส่งความสับสนเป็นข้อมูลเข้า $D_{\alpha,\beta}$. $D_{\alpha,\beta}$ มีความ "ถูกต้อง" $\alpha,\beta$ อบเข้าไป -- มันรู้ว่าต้องมองตรงไหน จึงสามารถแยกแยะได้ง่าย $C_{\alpha,\beta}$ จาก $Z$.

James avatar
br flag
แต่แฮ็กเกอร์จะรู้ได้อย่างไรว่า `a` และ `b` ถูกรวมไว้ในฟังก์ชันที่คลุมเครือทั้งคู่ (และด้วยเหตุนี้ `D'(C')` จะส่งกลับ `1` เสมอ) เว้นแต่จะเป็น `a` นั้น ถูกอบให้เท่ากับ `x`? ยกเว้นกรณีนั้น ดูเหมือนว่า `C'` จะยังคงดูเหมือนกับ `Z` อยู่ใช่ไหม นอกจากนี้ การพิสูจน์นี้จะไม่เพียงแค่แนะนำว่าการทำให้งงงวยของกล่องดำเป็นไปไม่ได้ในสถานการณ์เฉพาะเจาะจงที่แฮ็กเกอร์พบ เช่น ฟังก์ชันสองฟังก์ชันที่มีตัวแปรการอบที่ถูกต้องหรือไม่
us flag
เมื่อเรากำหนดความปลอดภัยสำหรับการเข้ารหัส เราพูด (ตัวอย่าง) ว่าข้อความเข้ารหัสดูแยกไม่ออกจากการสุ่ม แม้ว่าฝ่ายตรงข้ามจะต้องเลือกข้อความธรรมดาก็ตาม เมื่อเรากำหนดความปลอดภัย VBB สำหรับการทำให้ยุ่งเหยิง เราบอกว่าโปรแกรมที่ถูกทำให้ยุ่งเหยิงรั่วไหลไม่มากไปกว่าการเข้าถึงกล่องดำไปยังฟังก์ชัน แม้ว่าฝ่ายตรงข้ามจะต้องเลือกฟังก์ชันก็ตาม นอกจากนี้ในภายหลังใน Barak et al พิสูจน์ว่าพวกเขารวมทั้ง C และ D ไว้ในโปรแกรมเดียว ซึ่งทำให้แน่ใจว่า C และ D ทั้งคู่มี $\alpha$ และ $\beta$ ที่เหมือนกันในใจ
James avatar
br flag
แม้ว่าฝ่ายตรงข้ามจะเลือก `a` และ `b` สำหรับทั้ง `C` และ `D` แต่ถ้าเราส่งกลับทั้ง `Z'` และ `C'` ในภายหลัง พวกเขาจะทำไม่ได้ บอกได้ว่าอันไหนคืออะไร? นั่นคือเว้นแต่ว่าพวกเขาจะใส่ `x` ด้วยเช่นกัน หากพวกเขาอบตัวแปรทุกตัวแล้ว การพิสูจน์ดูเหมือนจะซ้ำซ้อนเล็กน้อย เนื่องจากพวกเขาจงใจสร้างฟังก์ชัน `C` ที่คืนค่า `1` เสมอ และฟังก์ชัน `Z` ที่ส่งคืน `0` เสมอ หาก `x` ไม่ถูกอบ ฝ่ายตรงข้ามก็ต้องทดสอบ `x` ทุก ๆ ตัวทั้งบน `C'` และ `Z'` จนกว่าจะได้ผลลัพธ์ที่แตกต่างกันใช่หรือไม่
Manish Adhikari avatar
us flag
หากคุณต้องการคำตอบที่เข้าใจง่ายขึ้นเกี่ยวกับการรั่วไหลของข้อมูลที่เห็นได้ชัด ลองพิจารณาสักครู่ว่าโปรแกรม $C^*_{\alpha,\beta} (.)$ ซึ่งคำนวณฟังก์ชันเดียวกับ $C_{\alpha,\beta} ( .)$ กับ $\alpha$ และ $\beta$ สุ่มเลือกจากพื้นที่ขนาดใหญ่ ตอนนี้เปลี่ยน $D_{\alpha,\beta} (F)$ เล็กน้อยเพื่อให้คืนค่า $\beta$ ถ้า $F(\alpha)=\beta$ และ $0^k$ เป็นอย่างอื่น ให้เข้าถึง $D$ คุณสามารถแยก $\beta$ จากกล่องดำที่เรียกใช้ $C$ แล้วจาก $C^*$ ล่ะ?
James avatar
br flag
ฉันอาจจะต้องขอโทษด้วยเพราะฉันอาจจะยังขาดอะไรไป ฉันจะบอกว่า @ManishAdhikari ว่าฉันคิดว่าคุณจะดึงข้อมูลเกี่ยวกับ $\beta$ จากกล่องดำที่รัน $C$ จาก $C*$ ได้มากพอ ๆ กัน เว้นแต่คุณจะรู้อยู่แล้วว่า $\alpha$ ถูกอบในอะไร หรือคุณสามารถอบใน $\alpha$, $\beta$ และ $x$ โดยที่ $C_{\alpha,\beta}(x)$ จะส่งกลับ $\beta$ เสมอและไม่เคย $0^k$ . ในกรณีอื่นๆ คุณจะต้องทดสอบทุกๆ $x$ จนกว่าคุณจะพบค่าที่ฟังก์ชันส่งคืน $\beta$?
Manish Adhikari avatar
us flag
ใช่ ดูเหมือนว่าคุณยังขาดประเด็น ฉันบอกว่ามี $D$ ให้คุณ ด้วย $C^*$ ไม่ว่า $\alpha$ และ $\beta$ จะยุ่งเหยิงเพียงใดในโปรแกรม คุณสามารถแยก $\beta$ ได้โดยการป้อน $D$ แต่กล่องดำที่เรียกใช้ $C$ ไม่สามารถมอบให้กับสิ่งใดได้ และคุณติดอยู่กับการป้อนเข้าและดูผลลัพธ์เท่านั้น การแยก $\beta$ ในกรณีนี้จะต้องพยายาม $x$ เป็นจำนวนมากตามที่คุณพูดอย่างถูกต้อง

โพสต์คำตอบ

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