О USB-ключах, каждый коммерчески доступный USB-ключ был взломан, и для них есть обходной путь. Не имеет значения, что они вам говорят, принцип USB-ключей имеет недостатки в дизайне.
Что еще хуже, после того, как вы доставили ваш программный продукт клиенту, он будет взломан, если он посчитает приложение достаточно ценным, чтобы потратить время на его взлом. Не имеет значения, насколько он защищен, если хакер имеет доступ к двоичному содержимому, он будет взломан.
Кроме того, многие из ваших пользователей будут честными людьми, которые будут раздражены всей этой защитой. Если вы выбираете решение, которое является чрезвычайно сильным, вы фактически предлагаете людям не использовать ваше программное обеспечение надлежащим, законным способом.
Как отмечалось ранее, помните, что вы должны действовать в соответствии с лицензиями Linux. На самом деле, вы можете быть вынуждены предоставить свой исходный код для вашего приложения как открытый исходный код, если только вы не докажете, что работали в соответствии с лицензией.
Однако существует разумный простой способ проводить периодические проверки. Используйте CRON, чтобы запускать приложение call-home хотя бы раз в день. Он вызвал бы веб-сервис на вашем веб-хосте, предоставляющий дополнительную информацию о его настройке. В ответ ваш сервис сообщает, законно он или нет. Если это законно, нет проблем. Если эта проверка не удалась, просто дайте приложению сообщить о сообщении. Если call-home не удавалось пять раз подряд или говорит, что это нелегальная версия, тогда пришло время раздражать пользователя. (Но не нарушая удобство использования вашего приложения, в противном случае пользователи становятся очень несчастными.)
Теперь то, что вы хотите защитить, может продолжать работать без каких-либо изменений. Или вы изменяете их, чтобы проверить, пыталось ли приложение call-home установить контакт. Если пользователь отключил этот процесс или вмешался в него каким-либо другим способом, вы можете также заблокировать свои приложения.
Или, если воспользоваться простейшим вариантом: создать специальную учетную запись администратора с почти полными правами доступа. Не позволяйте вашим клиентам работать как Root.