Bisakah enkripsi sepenuhnya homomorfik digunakan untuk eksekusi kode yang tidak dikenali?

22

Setelah membaca jawaban ini beberapa waktu yang lalu, saya tertarik pada enkripsi homomorfik sepenuhnya. Setelah membaca pengantar tesis Gentry, saya mulai bertanya-tanya apakah skema enkripsi-nya dapat digunakan untuk eksekusi kode yang tidak dikenali sebagaimana didefinisikan dalam paragraf ketiga.

Dalam skema enkripsi yang sepenuhnya homomorfik, kami biasanya mengenkripsi beberapa data, mengirimkannya ke lingkungan yang tidak bersahabat di mana fungsi tertentu dihitung pada data, yang hasilnya kemudian dikirim kembali (dienkripsi), tanpa musuh mengetahui apa yang diterima data atau hasil dari fungsinya adalah.

Dengan eksekusi kode yang tidak saya maksudkan, kami bermaksud mengenkripsi sepotong kode dirancang untuk memecahkan beberapa masalah P dan mengirimkannya ke lingkungan yang tidak bersahabat. Musuh ingin menggunakan C untuk menyelesaikan P , tapi kami tidak ingin dia tahu bagaimana C bekerja. Jika ia memiliki input I untuk P , ia dapat mengenkripsi I dan kemudian menggunakan (beberapa skema enkripsi pada) C dengan I , yang kemudian mengembalikan output (tidak terenkripsi) O (solusi P untuk input ICPCPCIPICIOPI). Skema enkripsi memastikan musuh tidak pernah menemukan cara kerja potongan kode, yaitu baginya bekerja seperti oracle.

Penggunaan praktis utama (yang bisa saya pikirkan) untuk skema enkripsi semacam itu adalah untuk membuat pembajakan menjadi lebih sulit atau bahkan tidak mungkin.

Alasan saya pikir ini dimungkinkan dengan menggunakan skema enkripsi homomorfik sepenuhnya karena kita dapat mengeksekusi rangkaian arbitrer pada data terenkripsi, khususnya mesin Turing universal. Kami kemudian dapat mengenkripsi kode seolah-olah itu data dan kemudian menggunakan sirkuit untuk mesin Turing universal pada data terenkripsi ini untuk mengeksekusi kode.

Saya mengajukan ini sebagai pertanyaan di sini karena saya tidak tahu apakah ide ini dapat digunakan: Saya tidak pernah melangkah lebih jauh dari pengenalan tesis Gentry, dan pengetahuan saya tentang kriptografi terbatas. Juga, saya tidak tahu apakah sudah ada istilah yang sering digunakan untuk eksekusi kode yang tidak diketahui: Saya mencoba mencari ide Google tetapi tidak mengetahui istilah yang tepat saya tidak menemukan apa pun.

Ada beberapa masalah yang dapat saya pikirkan yang dapat menyebabkan masalah dengan pendekatan ini. Pertama, jika kita menggunakan enkripsi homomorfik sepenuhnya tanpa modifikasi, hasil perhitungan ( ) akan dienkripsi. Oleh karena itu akan sia-sia untuk musuh yang ingin menggunakan kode Anda untuk memecahkan P . Meskipun ini masih bisa berguna untuk, katakanlah, cloud computing, ini bukan yang ingin saya capai.OP

Kedua, karena kami menggunakan sirkuit dan bukan mesin Turing yang sewenang-wenang, kami tidak dapat menggunakan jumlah memori yang sewenang-wenang: kami terbatas pada jumlah memori yang telah ditentukan. Ini berarti bahwa jika kita ingin menjalankan suatu program dengan cara ini, jejak memorinya akan selalu sama, yaitu penggunaan memori puncaknya.

Terakhir, konstanta yang terlibat hampir pasti akan mematikan penggunaan praktis sistem semacam itu, tapi saya pikir idenya menarik.

Alex ten Brink
sumber
Anda yakin dari istilah "Eksekusi kode tidak dikenal"? Saya mencari-cari sebentar dan tidak mendapatkan apa-apa!
Deyaa
Tidak sama sekali: Saya membuat istilah sendiri karena saya tidak tahu istilah yang tepat untuk itu. Kebingungan dan obfuscator tampaknya adalah istilah umum untuk konsep tersebut.
Alex ten Brink

Jawaban:

17

Sayangnya, ada hasil yang secara teoritis melarang "eksekusi kode yang tidak diketahui":

Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan, dan Ke Yang. Tentang (Im) kemungkinan Program yang Mengacaukan , UANG MUKA DALAM KRIPOLOGI - CRYPTO 2001.

Inilah tautannya:

Abstraknya berbunyi:

Secara informal, obfuscator adalah "kompiler" (efisien, probabilistik) yang mengambil input program (atau sirkuit) P dan menghasilkan program baru O ( P ) yang memiliki fungsi yang sama dengan P namun "tidak terbaca" dalam beberapa hal . Obfuscator, jika ada, akan memiliki berbagai macam aplikasi teori kriptografi dan kompleksitas, mulai dari perlindungan perangkat lunak hingga enkripsi homomorfik hingga analog kompleksitas-teoretis dari teorema Rice. Sebagian besar aplikasi ini didasarkan pada interpretasi kondisi "tidak terbaca" dalam kebingungan sebagai makna yangOPO(P)PO(P)adalah "kotak hitam virtual," dalam arti bahwa apa pun yang dapat dihitung secara efisien dengan diberi , ia juga dapat secara efisien menghitung akses oracle yang diberikan ke PO(P)P .

Dalam karya ini, kami memulai penyelidikan teoritis kebingungan. Hasil utama kami adalah bahwa, bahkan di bawah formalisasi yang sangat lemah dari intuisi di atas, kebingungan tidak mungkin terjadi. Kami membuktikan ini dengan membangun sekumpulan fungsi yang secara inheren tidak dapat dikobarkan dalam pengertian berikut: ada predikat π sedemikian rupa sehingga (a) diberikan program apa pun yang menghitung fungsi f dalam F , nilai π ( f ) dapat dihitung secara efisien , namun (b) diberi akses oracle ke fungsi (dipilih secara acak) f dalam F , tidak ada algoritma yang efisien yang dapat dihitungFπfFπ(f)fFπ(f) jauh lebih baik daripada menebak secara acak.

TC 0

MS Dousti
sumber
Nah, semacam itu meredam hal-hal. Saya baru saja membaca bagaimana mereka membuktikan hasil mereka: Saya sangat bingung ketika saya membaca bahwa obfuscator diasumsikan memiliki akses ke kode sumber dari program permusuhan! (walaupun saya bisa saja salah paham tentang makalah ini)
Alex ten Brink
5
Ini pemahaman saya bahwa hasil ini hanya berlaku untuk model kebingungan "lama" (tidak berhasil) menggunakan kotak hitam virtual, dan bahwa sekarang para peneliti di lapangan mencari untuk mengadopsi gagasan yang lebih lemah tentang kebingungan dengan harapan beberapa jaminan dapat diperoleh. Salah satu arahan penelitian adalah untuk mengadopsi Enkripsi Homomorfik Sepenuhnya, jadi saya akan mengatakan bahwa pertanyaannya terbuka. Saya ingat duduk di dalam sebuah pembicaraan dari Microsoft Research musim panas ini tentang obfuscator titik tetap dan kotak hitam virtual di mana peneliti membuat tepat titik ini.
Ross Snider
3
Dapatkah seorang peneliti di lapangan (atau salah satu nama yang mengesankan dari daftar penulis) berkomentar?
Ross Snider
1
@Ross: Ya, saya ingin peneliti lain di lapangan memberikan komentar juga ...
MS Dousti
@ Ross, Sadeq: Beberapa penulis mengunjungi situs ini dari waktu ke waktu, semoga mereka akan melihat tag. Memiliki pertanyaan di halaman pertanyaan unggulan juga dapat membantu.
Kaveh
15

Memang, sementara enkripsi sepenuhnya homomorfik sangat berguna untuk mengeksekusi kode antara banyak pihak yang tidak dipercaya (lihat misalnya, makalah ini ), Anda memerlukan beberapa jenis interaksi, ketika pihak yang menghitung output terenkripsi mengirimkannya ke pihak yang mengetahui kunci rahasia .

Gagasan yang Anda cari kedengarannya sangat dekat dengan kebingungan perangkat lunak, yang kami buktikan sebagai hasil yang tidak mungkin disebutkan di atas. Saya juga menulis sekali tinjauan informal makalah itu, yang mungkin berguna bagi sebagian orang.

Mengingat hasil ketidakmungkinan ini, ada dua (non disjoint) cara seseorang dapat mengendurkan definisi: baik dengan membatasi kelas program / fungsi yang diperlukan untuk mengaburkan, atau memberikan gagasan keamanan yang lebih longgar.

Pendekatan kedua mungkin mungkin, dan kami mengomentari beberapa gagasan seperti kebingungan yang lemah dalam makalah kami. Namun, perhatikan bahwa serangan kami sepenuhnya memulihkan kode sumber asli dari beberapa program, tidak peduli bagaimana itu dikaburkan. Jadi, Anda harus entah bagaimana membuat definisi keamanan yang dianggap remeh untuk kasus contoh tandingan kami.

Pendekatan pertama dilakukan untuk setiap fungsionalitas terbatas (misalnya, fungsi titik), tetapi sekali lagi kita harus memastikan kelas tidak mengandung sampel tandingan kami, yang secara kasar berarti tidak boleh berisi fungsi pseudorandom.

Boaz Barak
sumber