Praktycznie, jeśli kod i klucze znajdują się na komputerze z kartą SD, będą mogli go skompilować, będą mogli odkryć klucze i będą mogli wyodrębnić poufne dane.
To jest jak szyfrowanie filmów, DVD musi zawierać wszystkie informacje wymagane do odszyfrowania filmu, aby mógł zostać wyświetlony widzowi, więc wszystkie mechanizmy ochrony przed kopiowaniem filmów są ostatecznie skazane na zagładę.
Najlepsze, co możesz zrobić, to zmienić ekonomikę inżynierii odwrotnej swojego produktu.
Czy warto szyfrować i / lub zaciemniać?
Teraz ustaliliśmy, że nie ma sposobu, aby całkowicie się chronić, powstają pytania
- Jak prawdopodobne jest to?
- Jaka jest wartość dla twojego algorytmu i danych dla kogoś innego?
- Jaki jest dla nich koszt zakupu licencji na korzystanie z oprogramowania?
- Jaki jest dla nich koszt replikacji algorytmu i danych?
- Jaki jest dla nich koszt inżynierii wstecznej algorytmu i danych?
- Jaki jest koszt ochrony twojego algorytmu i danych?
Jeśli powodują one znaczący ekonomiczny imperatyw w celu ochrony twojego algorytmu / danych, powinieneś to zrobić. Na przykład, jeśli zarówno wartość usługi, jak i koszt dla klientów są wysokie, ale koszt inżynierii wstecznej kodu jest znacznie niższy niż koszt jego samodzielnego opracowania, ludzie mogą spróbować.
To prowadzi do twojego pytania
- Jak zabezpieczyć algorytm i dane?
Zaciemnianie
Sugerowana przez Ciebie opcja zaciemnienia kodu nie zgadza się z powyższą ekonomią - stara się znacznie podnieść ich koszt (5 powyżej) bez znacznego wzrostu kosztu dla ciebie (6). Problem polega na tym, że podobnie jak w przypadku szyfrowania DVD, jest on skazany na niepowodzenie, a jeśli jest wystarczająca różnica między 3, 4 a 5, to ostatecznie ktoś to zrobi.
Inną opcją może być forma steganografii , która pozwala zidentyfikować, kto odszyfrował kod i zaczął go rozpowszechniać. Na przykład, jeśli masz 100 różnych wartości zmiennoprzecinkowych jako część danych, a 1-bitowy błąd w LSB każdej z tych wartości nie spowodowałby problemu z aplikacją, zakoduj unikalny (dla każdego klienta) identyfikator w tych bitach . Problem polega na tym, że jeśli ktoś ma dostęp do wielu kopii danych aplikacji, byłoby oczywiste, że są one różne, co ułatwia identyfikację ukrytej wiadomości.
Ochrona
Jedyną naprawdę bezpieczną opcją jest dostarczenie krytycznej części oprogramowania jako usługi , a nie włączenie go do aplikacji.
Pod względem koncepcyjnym aplikacja zbierałaby wszystkie dane wymagane do uruchomienia algorytmu, spakowała je jako żądanie do serwera (kontrolowanego przez Ciebie) w chmurze , a następnie usługa obliczyłaby wyniki i przekazała je z powrotem do klienta, który by to pokazał.
Dzięki temu wszystkie twoje zastrzeżone, poufne dane i algorytmy znajdują się w domenie, którą całkowicie kontrolujesz, i eliminuje wszelkie możliwości wyodrębnienia klienta.
Oczywistym minusem jest to, że klienci są związani z twoimi usługami, są na łasce twoich serwerów i ich połączenia internetowego. Na plus są zawsze na bieżąco z poprawkami błędów. Niestety wiele osób sprzeciwia się SaaS właśnie z tych powodów.
Byłby to jednak ogromny krok i może kosztować 6 powyżej, ale jest to jedyny sposób, w jaki mogę zapewnić całkowite bezpieczeństwo algorytmu i danych .