Secara praktis, jika kode dan kunci berada pada mesin kartu SD, mereka akan dapat melakukan kompilasi, mereka akan dapat menemukan kunci dan mereka akan dapat mengekstraksi data sensitif.
Ini seperti mengenkripsi film, DVD harus memasukkan semua informasi yang diperlukan untuk mendekripsi film sehingga dapat ditampilkan kepada penonton, sehingga semua mekanisme perlindungan salinan film pada akhirnya akan hancur.
Yang terbaik yang dapat Anda lakukan adalah mengubah ekonomi rekayasa balik produk Anda.
Apakah enkripsi dan / atau kebingungan layak?
Sekarang kami telah menetapkan bahwa tidak ada cara untuk sepenuhnya melindungi diri Anda sendiri, pertanyaan menjadi
- Seberapa besar kemungkinan ini terjadi?
- Apa nilai bagi orang lain dari algoritma dan data Anda?
- Berapa biaya bagi mereka untuk membeli lisensi untuk menggunakan perangkat lunak Anda?
- Berapa biaya bagi mereka untuk mereplikasi algoritma dan data Anda?
- Berapa biaya bagi mereka untuk merekayasa balik algoritma dan data Anda?
- Berapa biaya untuk melindungi algoritma dan data Anda?
Jika ini menghasilkan keharusan ekonomi yang signifikan untuk melindungi algoritme / data Anda, maka Anda harus melakukannya. Misalnya jika nilai layanan dan biaya untuk pelanggan sama-sama tinggi, tetapi biaya rekayasa balik kode Anda jauh lebih rendah daripada biaya pengembangannya sendiri, maka orang dapat mencobanya.
Jadi, ini mengarah ke pertanyaan Anda
- Bagaimana Anda mengamankan algoritma dan data Anda?
Kebingungan
Opsi yang Anda sarankan, mengaburkan kode, mengacaukan ekonomi di atas - itu mencoba untuk secara signifikan meningkatkan biaya kepada mereka (5 di atas) tanpa meningkatkan biaya kepada Anda (6) sangat banyak. Masalahnya adalah bahwa seperti halnya dengan enkripsi DVD itu pasti akan gagal dan jika ada cukup perbedaan antara 3, 4 dan 5 maka pada akhirnya seseorang akan melakukannya.
Opsi lain mungkin berupa Steganografi , yang memungkinkan Anda mengidentifikasi siapa yang mendekripsi kode Anda dan mulai mendistribusikannya. Misalnya, jika Anda memiliki 100 nilai float yang berbeda sebagai bagian dari data Anda, dan kesalahan 1 bit di LSB dari masing-masing nilai tersebut tidak akan menyebabkan masalah dengan aplikasi Anda, menyandikan pengidentifikasi unik (untuk setiap pelanggan) ke dalam bit tersebut . Masalahnya adalah, jika seseorang memiliki akses ke beberapa salinan data aplikasi Anda, akan jelas bahwa itu berbeda, membuatnya lebih mudah untuk mengidentifikasi pesan tersembunyi.
Perlindungan
Satu-satunya pilihan yang benar-benar aman adalah memberikan bagian penting dari perangkat lunak Anda sebagai layanan , daripada memasukkannya ke dalam aplikasi Anda.
Secara konseptual, aplikasi Anda akan mengumpulkan semua data yang diperlukan untuk menjalankan algoritme Anda, mengemasnya sebagai permintaan ke server (dikendalikan oleh Anda) di cloud , layanan Anda kemudian akan menghitung hasil Anda dan meneruskannya kembali ke klien, yang akan menampilkannya.
Ini menjaga semua hak milik Anda, data rahasia dan algoritma dalam domain yang Anda kontrol sepenuhnya, dan menghilangkan segala kemungkinan klien mengekstraksi.
Kelemahan yang jelas adalah bahwa klien terikat pada penyediaan layanan Anda, berada di tangan server Anda dan koneksi internet mereka. Di sisi positifnya, mereka selalu terbarui dengan perbaikan bug. Sayangnya banyak orang menolak SaaS karena alasan-alasan ini.
Ini akan menjadi langkah besar yang harus diambil, dan bisa memiliki biaya besar 6 di atas, tetapi merupakan satu-satunya cara saya bisa melihat untuk menjaga algoritma dan data Anda sepenuhnya aman .