Thực tế, nếu mã và khóa nằm trên máy thẻ SD, họ sẽ có thể biên dịch lại mã, họ sẽ có thể khám phá các khóa và họ sẽ có thể trích xuất dữ liệu nhạy cảm.
Giống như mã hóa phim, DVD phải bao gồm tất cả thông tin cần thiết để giải mã phim để có thể hiển thị cho người xem, vì vậy tất cả các cơ chế bảo vệ bản sao phim cuối cùng đều bị tiêu diệt.
Điều tốt nhất bạn có thể làm là thay đổi tính kinh tế của kỹ thuật đảo ngược sản phẩm của bạn.
Là mã hóa và / hoặc obfuscation có giá trị nó?
Bây giờ chúng tôi đã thiết lập rằng không có cách nào để bảo vệ chính mình, các câu hỏi trở thành
- Làm thế nào có khả năng điều này xảy ra?
- Giá trị cho người khác về thuật toán và dữ liệu của bạn là gì?
- Chi phí cho họ khi mua giấy phép sử dụng phần mềm của bạn là bao nhiêu?
- Chi phí cho họ để sao chép thuật toán và dữ liệu của bạn là gì?
- Chi phí cho họ về kỹ thuật đảo ngược thuật toán và dữ liệu của bạn là gì?
- Chi phí cho bạn để bảo vệ thuật toán và dữ liệu của bạn là gì?
Nếu những điều này tạo ra một mệnh lệnh kinh tế quan trọng để bảo vệ thuật toán / dữ liệu của bạn thì bạn nên xem xét việc thực hiện nó. Chẳng hạn, nếu giá trị của dịch vụ và chi phí cho khách hàng đều cao, nhưng chi phí cho kỹ thuật đảo ngược mã của bạn thấp hơn nhiều so với chi phí phát triển nó, thì mọi người có thể thử nó.
Vì vậy, điều này dẫn đến câu hỏi của bạn
- Làm thế nào để bạn bảo mật thuật toán và dữ liệu của bạn?
Obfuscation
Tùy chọn bạn đề xuất, làm xáo trộn mã, gây rối với tính kinh tế ở trên - nó cố gắng tăng đáng kể chi phí cho họ (5 ở trên) mà không làm tăng chi phí cho bạn (6) rất nhiều. Vấn đề là như với mã hóa DVD, nó chắc chắn sẽ thất bại và nếu có đủ sự khác biệt giữa 3, 4 và 5 thì cuối cùng sẽ có người làm điều đó.
Một tùy chọn khác có thể là một dạng Steganography , cho phép bạn xác định ai đã giải mã mã của bạn và bắt đầu phân phối nó. Chẳng hạn, nếu bạn có 100 giá trị float khác nhau như một phần dữ liệu của mình và lỗi 1 bit trong LSB của mỗi giá trị đó sẽ không gây ra sự cố với ứng dụng của bạn, hãy mã hóa một mã định danh duy nhất (cho mỗi khách hàng) vào các bit đó . Vấn đề là, nếu ai đó có quyền truy cập vào nhiều bản sao dữ liệu ứng dụng của bạn, thì rõ ràng là nó khác nhau, giúp việc xác định tin nhắn ẩn dễ dàng hơn.
Sự bảo vệ
Tùy chọn thực sự an toàn duy nhất là cung cấp một phần quan trọng trong phần mềm của bạn dưới dạng dịch vụ , thay vì đưa nó vào ứng dụng của bạn.
Về mặt khái niệm, ứng dụng của bạn sẽ thu thập tất cả dữ liệu cần thiết để chạy thuật toán của bạn, đóng gói nó dưới dạng yêu cầu đến máy chủ (do bạn kiểm soát) trên đám mây , sau đó dịch vụ của bạn sẽ tính toán kết quả của bạn và gửi lại cho khách hàng, sẽ hiển thị nó.
Điều này giữ cho tất cả các thuật toán và dữ liệu bí mật, độc quyền của bạn trong một miền mà bạn kiểm soát hoàn toàn và loại bỏ mọi khả năng của một khách hàng trích xuất.
Nhược điểm rõ ràng là khách hàng bị ràng buộc vào việc cung cấp dịch vụ của bạn, phải chịu sự chi phối của máy chủ và kết nối internet của họ. Về mặt tích cực, chúng luôn được cập nhật với các bản sửa lỗi. Thật không may, nhiều người phản đối SaaS vì chính xác những lý do này.
Đây sẽ là một bước rất lớn để thực hiện và có thể có chi phí lớn 6 ở trên, nhưng là cách duy nhất tôi có thể thấy để giữ cho thuật toán và dữ liệu của bạn hoàn toàn an toàn .