Чи можна повністю гомоморфне шифрування використовувати для необачного виконання коду?


22

Прочитавши цю відповідь деякий час тому, я захопився повністю гомоморфним шифруванням. Прочитавши вступ до тези Джентрі, я почав цікавитись, чи може його схема шифрування використовуватись для беззаперечного виконання коду, визначеного в третьому абзаці.

У повністю гомоморфній схемі шифрування ми зазвичай шифруємо деякі дані, відправляємо їх у вороже середовище, де на даних обчислюється певна функція, результат якої потім надсилається назад (шифрується), без супротивника з'ясовувати, що отримані дані або результат функції -.

Маючи на увазі виконання коду, я маю на увазі, що ми шифруємо фрагмент коду розроблений для вирішення якоїсь проблеми P та відправляємо його у вороже середовище. Противник хоче використовувати С для розв’язання Р , але ми не хочемо, щоб він знав, якпрацює С. Якщо у нього є вхід I для P , він може зашифрувати I, а потім використовувати (деяка схема шифрування на C I , яка потім повертає (не зашифрований) вихід O (рішення P для входу ICPCPCIPICIOПЯ). Схема шифрування гарантує, що противник ніколи не дізнається, як працює фрагмент коду, тобто для нього він працює так, як це робить оракул.

Основне практичне використання для такої схеми шифрування було б зробити ускладнення або навіть неможливе піратство.

Причиною, на яку я думаю, це можливо можливо, використовуючи повністю гомоморфну ​​схему шифрування, є те, що ми можемо виконувати довільні схеми на зашифрованих даних, зокрема універсальну машину Тюрінга. Тоді ми могли б зашифрувати код так, ніби це дані, а потім використати схему для універсальної машини Тьюрінга на цих зашифрованих даних для виконання коду.

Я ставлю це як питання тут, тому що не знаю, чи корисна ця ідея: я ніколи не проходив набагато далі, ніж впровадження тези Джентрі, і мої знання про криптографії обмежені. Крім того, я не знаю, чи існує вже часто вживаний термін для непомітного виконання коду: я спробував шукати ідею в Google, але не знаючи належного терміна, я нічого не знайшов.

Я думаю, що існує декілька проблем, які можуть спричинити проблеми при такому підході. По-перше, якщо ми будемо використовувати повністю гомоморфне шифрування без модифікації, результат обчислення ( ) буде зашифрований. Тому було б марно для противника , який хоче використовувати свій код для вирішення P . Хоча це все ще може бути корисним для, скажімо, хмарних обчислень, я цього не хочу досягти.ОП

По-друге, оскільки ми використовуємо схеми, а не довільні машини Тьюрінга, ми не можемо використовувати довільну кількість пам'яті: ми обмежені заздалегідь заданим об'ємом пам'яті. Це означає, що якщо ми хочемо запустити програму таким чином, слід пам'яті завжди буде однаковим, а саме - це пікове використання пам'яті.

Нарешті, задіяні константи майже напевно знищують будь-яке практичне використання такої системи, але я думаю, що ця ідея цікава.


ви впевнені в терміні "Очевидне виконання коду"? Я про це шукав деякий час і нічого не отримав!
Deyaa

Зовсім не: я сам склав цей термін, оскільки не знав належного терміну для нього. Заплутаність і обскускатори, очевидно, є регулярними умовами для концепції.
Олексій десять Брінк

Відповіді:


17

На жаль, є результат, який теоретично забороняє "необачне виконання коду":

Боаз Барак, Од Голдрайх, Рассел Імпальяццацо, Стівен Рудіч, Аміт Сахай, Саліл Вадхан та Ке Ян. Про (Im) можливість забруднюючих програм , АВАРІЙНОСТІ КРИПТОЛОГІЇ - CRYPTO 2001.

Ось посилання:

У рефераті написано:

Неофіційно обфускатор - це (ефективний, імовірнісний) "компілятор", який приймає на вхід програму (або ланцюг) P і створює нову програму O ( P ), яка має таку ж функціональність, що і P, але в деякому сенсі "не читається" . Якщо вони існують, обфускатори мали б широкий спектр криптографічних та складних теоретичних застосувань, починаючи від захисту програмного забезпечення до гомоморфного шифрування і закінчуючи теоретично-теоретичними аналогами теореми Райса. Більшість із цих застосувань засновані на інтерпретації умови "нечитабельності" при обфускуванні, що означає, що O ( P )ОПО(П)ПО(П)це «віртуальний чорний ящик» , в тому сенсі , що все , можна ефективно обчислити дану , можна також ефективно обчислити даний оракул доступ до P .О(П)П

У цій роботі ми ініціюємо теоретичне дослідження затухання. Наш головний результат полягає в тому, що навіть за дуже слабких формалізацій вищезгаданої інтуїції, затуплення неможливо. Ми доводимо це, побудувавши сімейство функцій , які за своєю суттю є неспроможними в такому значенні: існує предикат π такий, що (a) дана будь-яка програма, яка обчислює функцію f у F , значення π ( f ) може бути ефективно обчислено , але (б) надаючи доступ оракула до (випадково вибраної) функції f у F , жоден ефективний алгоритм не може обчислити π ( f )ЖπfЖπ(f)fЖπ(f) набагато краще, ніж випадкові здогадки.

ТС 0


Добре, що такий спосіб демпфірує речі. Я просто читав, як вони довели свої результати: Я був особливо здивований, коли прочитав, що обфускатор, як передбачається, має доступ до вихідного коду змагальної програми! (хоча я міг просто неправильно зрозуміти папір)
Алекс десять Бринк

5
Наскільки я розумію, ці результати стосуються лише "старої" (невдалої) моделі омертвіння з використанням віртуальних чорних коробок, і що зараз дослідники в цій галузі прагнуть прийняти слабкіше поняття затуплення з надією, що деякі гарантії можуть бути. Один із напрямків дослідження - прийняти повністю гомоморфне шифрування, і тому я б сказав, що питання відкрите. Я пам'ятаю, як сиділа влітку на розмові з Microsoft Research про обскускуторів з фіксованою точкою та віртуальних чорних скриньках, де саме дослідник зробив це.
Росс Снайдер

3
Чи міг би прокоментувати дослідник галузі (чи одне із вражаючих імен зі списку авторів)?
Росс Снайдер

1
@Ross: Так, я хотів би також коментувати інші дослідники в цій галузі ...
MS Dousti

@ Ross, Sadeq: Деякі автори час від часу відвідують сайт, сподіваємось, що вони помітять тег. Поставити запитання на пропонованих сторінках питань також може допомогти.
Каве

15

Дійсно, хоча повністю гомоморфне шифрування дуже корисно для виконання коду між декількома сторонами, що не довіряють (див., Наприклад, цей документ ), вам потрібна якась взаємодія, коли сторона, яка обчислює зашифрований вихід, надсилає його стороні, яка знає секретний ключ .

Поняття, яке ви шукаєте, здається підозріло близьким до програмного затухання програмного забезпечення, для якого ми виявили неможливий результат, згаданий вище. Я також написав одного разу неофіційний огляд цього документу, що деякі люди можуть вважати корисними.

З огляду на такий неможливий результат, є два (неперервні) способи, що дозволяють розслабити визначення: або шляхом обмеження класів програм / функцій, які потрібно придушити, або дати слабкіше поняття безпеки.

Другий підхід, можливо, можливий, і ми зауважуємо деякі слабкі поняття, схожі на обфузацію в нашій роботі. Однак зауважте, що наша атака повністю відновлює вихідний вихідний код якоїсь програми, незалежно від того, наскільки вона затуманена. Тож вам доведеться якось скласти визначення безпеки, яке досягає випадку наших контрприкладів.

Перший підхід був зроблений для всіх обмежених функцій (наприклад, точкових функцій), але знову ж таки слід переконатися, що клас не містить нашого контрприкладу, що, приблизно, означає, що він не повинен містити псевдовипадкових функцій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.