Как обезопасить проприетарное программное обеспечение в корпоративной среде? - PullRequest
3 голосов
/ 28 декабря 2010

Нам необходимо защитить проприетарное программное обеспечение, встроенное в .NET для ПК под управлением Windows, чтобы ограничить использование только внутри предприятия, и гарантировать, что сотрудники не смогут украсть или скопировать программу, даже если они смогут ее выполнить.1001 *

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

Есть ли в любом случае, чтобы сделать это?мы готовы использовать любой тип системы или API для этого, C #, C ++ или что угодно.

И мне нужны программные решения , ребята, так что попробуйте и оставьтеаппаратные ключи выходят наружу.Я ищу способ ПРЕДОТВРАТИТЬ доступ к исполняемым файлам программного обеспечения, а не ОГРАНИЧИТЬ доступ с помощью аутентификации.

Ответы [ 6 ]

5 голосов
/ 28 декабря 2010

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

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

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

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

4 голосов
/ 05 января 2011

Вы не можете.Если вы предоставляете код компании, люди могут читать двоичные файлы. они владеют оборудованием .Основной принцип заключается в том, что безопасность программного обеспечения ничего не значит, когда кто-то имеет доступ к оборудованию.И пароль администратора.И ленты с резервными копиями.

Более интересный вопрос, почему вы думаете, что вам это нужно?Oracle не думает, что им это нужно.IBM нет.Причина, по которой они этого не делают, заключается в том, что они продают программное обеспечение по законной лицензии.Компании, достаточно крупные, чтобы платить достаточно, чтобы купить «корпоративное программное обеспечение», не имеют привычки воровать.Фактически, они часто тратят очень большие суммы денег на инструменты, чтобы убедиться, что они не крадут случайно.Зачем?Потому что стоимость судебного преследования намного выше, чем стоимость, которую они могут получить, присвоив ее.

А если какой-то сотрудник скрывается от вашего кода, то что?У них нет вашего бренда, вашей репутации, вашей доли рынка.Условно говоря, ваш код является одним из менее ценных ваших активов.

Если вы по какой-то причине являетесь исключением из этих громоздких принципов, то вам необходимо аппаратное обеспечение.Вам необходимо доставить коробку - взломостойкую коробку - и не давать им ключи.Как, например, Google Search Appliance.

Если ваш актив недостаточно ценен, чтобы оправдать это, вам следует просто перестать беспокоиться.

3 голосов
/ 28 декабря 2010

Безопасность - очень сложная тема.Я, вероятно, предпочел бы подход клиент-сервер.

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

Остальная часть "серверного" кода будет на некоторых внутренних компьютерах с ограниченным доступом.

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

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

1 голос
/ 10 января 2011

@ Дженко - я бы пошел по пути, предложенному EldoS Евгения Маевского. Установите Windows Terminal Server и подключите к нему всех своих пользователей. Сделайте учетную запись пользователя очень ограниченной на сервере терминалов, чтобы он мог выполнять только эту вашу программу, также сервер терминалов не содержал бы никаких инструментов, которые позволили бы пользователю каким-либо образом скопировать программу (возможно, использовать некоторые вид брандмауэра для блокировки интернет-трафика с сервера, защиты папки, в которой находится приложение). Службы терминалов Windows 2008 имеют новую функцию, которая называется «Удаленный общий доступ к приложениям», которая по сути аналогична подключению к серверу с удаленного рабочего стола, но выглядит лучше, так как используется только общее приложение. Это выглядит очень достоверно, как будто приложение на самом деле запускается локально (ui).

Любое другое решение не будет эффективным, если вы защитите папку с программными файлами токенами безопасного доступа, пользователи смогут загрузить загрузочный компакт-диск linux, смонтировать диск и в любом случае скопировать программу. Суть в том, что если у пользователей будет какой-то физический доступ к вашему приложению, они смогут его украсть, независимо от того, какой сложный метод защиты вы намереваетесь использовать. Я настоятельно рекомендую метод удаленного рабочего стола, так как он представляется мне единственным полностью защищенным решением, у которого также не так много минусов. Возможно, есть и другие компании, предлагающие технологию «удаленных приложений», помимо Microsoft.

1 голос
/ 07 января 2011

Поместите все свое приложение на сервер, поместите ярлык для приложения в общую папку.Пользователи должны иметь доступ к общей папке и запускать приложение, но не должны получать доступ к приложению напрямую.

1 голос
/ 04 января 2011

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

  • Свяжите лицензию сПК, например, на основе идентификатора жесткого диска
  • Разрешать использование только при наличии «ключа» или аналогичного *
  • Лицензирование с плавающей сетью, когда программное обеспечение проверяется с помощью внутреннего сервера лицензирования при запуске.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...