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 I). 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.
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.
sumber
Jawaban:
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:
sumber
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.
sumber