コードとキーがSDカードのマシン上にある場合は実際に、彼らはなります彼らは、それを逆コンパイルすることができますキーを発見することができ、彼らがします機密データを抽出することができます。
それは映画を暗号化するようなもので、DVDは視聴者に表示するために映画を解読するために必要なすべての情報を含まなければならないので、すべての映画コピー防止メカニズムは最終的に運命づけられます。
できる最善のことは、製品のリバースエンジニアリングの経済性を変えることです。
暗号化や難読化は価値がありますか?
今、私たちはあなた自身を完全に保護する方法がないことを確立しました、質問は次のようになります
- これはどのくらい起こりそうですか?
- あなたのアルゴリズムとデータの他の誰かにとっての価値は何ですか?
- ソフトウェアを使用するためのライセンスを購入することで、彼らにかかる費用はいくらですか?
- アルゴリズムとデータの複製にかかる費用はいくらですか?
- アルゴリズムとデータのリバースエンジニアリングの費用はいくらですか?
- アルゴリズムとデータを保護するコストはいくらですか?
これらがあなたのアルゴリズム/データを保護するために重要な経済的要請を生み出した場合、あなたはそれを検討する必要があります。たとえば、サービスの価値と顧客へのコストが両方とも高いが、コードのリバースエンジニアリングのコストがコード自体の開発コストよりもはるかに低い場合、人々はそれを試みるかもしれません。
だから、これはあなたの質問につながります
難読化
あなたが提案するオプションは、コードを難読化し、上記の経済性を台無しにします-それは、あなた(6)へのコストをあまり増加させることなく、それらへのコスト(上記5)を大幅に増加させます。問題は、DVD暗号化と同様に失敗する運命にあり、3、4、5の間に十分な差がある場合、最終的に誰かがそれを行うことです。
別のオプションとして、Steganographyの形式があります。これにより、コードを解読して配布を開始した人を識別できます。たとえば、データの一部として100個の異なる浮動小数点値があり、それらの各値のLSBの1 ビットエラーがアプリケーションで問題を引き起こさない場合、一意の(各顧客に)識別子をそれらのビットにエンコードします。問題は、誰かがアプリケーションデータの複数のコピーにアクセスできる場合、それが異なることは明らかであり、非表示のメッセージを簡単に識別できるようになることです。
保護
本当に安全な唯一のオプションは、アプリケーションにソフトウェアを含めるのではなく、ソフトウェアの重要な部分をサービスとして提供することです。
概念的には、アプリケーションはアルゴリズムの実行に必要なすべてのデータを収集し、クラウド内のサーバー(ユーザーが制御)へのリクエストとしてパッケージ化し、サービスが結果を計算してクライアントに返します。それが表示されます。
これにより、専有の機密データとアルゴリズムはすべて、完全に制御するドメイン内に保持され、クライアントがいずれかを抽出する可能性がなくなります。
明らかな欠点は、クライアントがサービス提供に結び付けられ、サーバーとそのインターネット接続に左右されることです。プラス面としては、常にバグが修正されています。残念ながら、まさにこれらの理由から多くの人々がSaaSに反対しています。
ただし、これは大きなステップであり、上記の大きなコストがかかる可能性があります6が、アルゴリズムとデータを完全に安全に保つための唯一の方法です。