2014-12-07 2 views
4

Мне задали этот вопрос на распределенных вычислениях на собеседовании.Безопасно выполнять код на стороне клиента

Интервьюер:

«Сэм побежал определенный код на компьютере клиента, чтобы получить свою продукцию Но клиент изменяет код и, следовательно, код возвращается другой выход

Теперь Сэм хочет.. узнать, можно ли изменить его код или изменить его значение. Возможно ли это? "

Я думал, что было невозможно предотвратить изменение клиентом кода с момента его использования на своем компьютере. Или я ошибаюсь? Если нет, можем ли мы определить, был ли изменен код или что-то сделать, чтобы клиент мог манипулировать кодом и выводить его?

+0

Невозможно предотвратить изменение кода. И, по моему опыту, событие с доступом к их машине было бы трудно обнаружить измененный код, так как он не сохраняется как файл по мере его изменения. Надеюсь, вы увидите иначе, это может быть очень круто. – rfornal

ответ

2

На самом деле не имеет значения, управляет ли клиент кодом или нет, единственное, что действительно имеет значение, это результат , который ваш сервер получает от него. В конце концов, клиент может вообще не запускать ваш код, он может просто вернуть жесткий код ответа.

Таким образом, вопрос становится: может ли ваш сервер доверять ответ, отправленный клиентом?
Общий ответ: нет.

Более сложный ответ: это зависит от того, что вы хотите. Возможно, то, что вы делаете, поддаётся proof-of-work concept, в котором клиент должен математически доказать, что он что-то сделал. Возможно, вы можете включить некоторый процесс подписи, который математически доказывает, что определенные данные были получены из некоторых других данных и делают данные клиента поддающимися проверке. Возможно, серверу может потребоваться два разных клиента для выполнения одной и той же работы или перекрывающихся разделов работы, которые могут быть проверены друг против друга, что потребует от злоумышленника манипулирования двумя (или более) клиентами одновременно, что может быть недопустимо, чтобы каждый ответ клиента индивидуально заслуживает доверия.

Смежные вопросы