Назад | Перейти на главную страницу

Выполнять зашифрованные файлы, но не позволять никому их читать

Я хочу предоставить образ виртуальной машины с установленным веб-приложением. Пользователь должен иметь возможность загружать виртуальную машину (не входить в систему, просто загружаться), а веб-сервер должен запускаться автоматически.

Дело в том, что я хочу скрыть (ruby) исходный код веб-приложения от всех, так как для ruby ​​нет обфускатора.

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

Мои вопросы сейчас:

  1. Это возможно?
  2. Поскольку я отдаю всю виртуальную машину, каждый мог монтировать свои виртуальные диски и читать их (кроме зашифрованного). Можно ли теперь найти ключ, который нужен пользователю веб-сервера для расшифровки файлов и расшифровать их вручную? Или безопасно отдавать такую ​​вм?

Проблема в том, что все необходимое для дешифрования должно быть где-то в виртуальной машине, иначе веб-сервер не сможет запуститься автоматически. Может быть, я совершенно не прав, и у вас есть еще один совет для меня по защите исходного кода.

Это та же проблема, с которой столкнулись киностудии и музыкальные студии. Как мы позволяем людям «использовать» наш продукт (в их случае - смотреть и / или слушать, в вашем - исполнять), не позволяя им использовать продукт так, как они не хотят. Вам нужна DRM.

Но, как выяснили MPAA и RIAA, независимо от того, что вы делаете, каким-то образом ключ всегда придется отдавать конечному пользователю - независимо от того, как вы его запутываете, независимо от того, какие требования вы к нему предъявляете. Даже требование о смене ключа каждый раз не работает, или требуется, чтобы устройства «регистрировались» на удаленном сервере.

Вместо этого я предлагаю вам взглянуть на причины, по которым вы хотите использовать шифрование. Возможно, вам лучше подойдет другая модель, чем тщетные попытки защитить код. Программное обеспечение как услуга, где вы запускаете для них виртуальные машины? Модель подписки, при которой они платят за обновления данных, которые использует приложение? Модель поддержки, при которой вы предоставляете поддержку по мере необходимости на контрактной основе?

Быстрый поиск в Google показывает, что есть рубиновые обфускаторы - первый, с которым я столкнулся:

http://www.rubyencoder.com/index.html