Практично, якщо код і ключі на машині SD - карти, вони будуть мати можливість декомпілювати його, вони будуть мати можливість відкрити для себе ключі , і вони будуть мати можливість отримати конфіденційні дані.
Це подібно до шифрування фільмів, DVD-диск повинен містити всю інформацію, необхідну для розшифрування фільму, щоб він міг бути показаний глядачеві, тому всі механізми захисту від копіювання фільму в кінцевому рахунку приречені.
Найкраще, що ви можете зробити, це змінити економіку зворотного проектування вашого продукту.
Чи варто шифрування та / або обтурація?
Тепер ми встановили, що немає можливості повністю захистити себе, питання стають
- Наскільки це можливо?
- Яке значення має для вашого іншого алгоритму та даних?
- Яка вартість їх придбання ліцензії на використання вашого програмного забезпечення?
- Яка вартість їх копіювання вашого алгоритму та даних?
- Яка вартість їх зворотного проектування вашого алгоритму та даних?
- Яка ціна вам для захисту свого алгоритму та даних?
Якщо вони створюють суттєвий економічний імператив для захисту вашого алгоритму / даних, то вам слід розглянути це. Наприклад, якщо вартість послуги та вартість клієнтів є високими, але вартість зворотного проектування вашого коду значно нижча, ніж вартість його розробки, люди можуть спробувати це.
Отже, це призводить до вашого питання
- Як захистити свій алгоритм та дані?
Затуплення
Варіант, який ви пропонуєте, заплутуючи код, псує з економікою вище - він намагається значно збільшити витрати на них (5 вище), не збільшуючи при цьому вартість (6). Проблема полягає в тому, що як і при шифруванні DVD, воно приречене на збій, і якщо достатньо різниці між 3, 4 і 5, то врешті хтось зробить це.
Іншим варіантом може бути форма стеганографії , яка дозволяє визначити, хто розшифрував ваш код і почав його розповсюджувати. Наприклад, якщо у вас є 100 різних значень з плаваючою ланкою, а помилка 1 біт у LSB кожного з цих значень не спричинить проблеми з вашою програмою, кодуйте в ці біти унікальний ідентифікатор (для кожного клієнта). . Проблема полягає в тому, що якщо хтось має доступ до декількох копій даних вашої програми, було б очевидно, що вони відрізняються, що полегшує ідентифікацію прихованого повідомлення.
Захист
Єдиний дійсно безпечний варіант - надавати критичну частину свого програмного забезпечення як послугу , а не включати його у свою програму.
Концептуально ваш додаток збирає всі дані, необхідні для запуску алгоритму, упаковує його як запит на сервер (керований вами) у хмарі , потім ваша служба обчислює ваші результати та передає їх клієнту, яка б відображала його.
Це зберігає всі ваші патентовані, конфіденційні дані та алгоритми в межах домену, який ви повністю контролюєте, і вилучає будь-яку можливість вилучення клієнта.
Очевидним недоліком є те, що клієнти прив’язані до вашого надання послуг, перебувають на вашій увазі до ваших серверів та їхнього інтернет-зв’язку. З іншого боку, вони завжди в курсі виправлень помилок. На жаль, багато людей заперечують проти SaaS саме з цих причин.
Це був би величезний крок, який можна зробити, і міг би мати величезну вартість 6 вище, але це єдиний спосіб, який я можу зберегти ваш алгоритм та дані повністю захищеними .