クライアント側にある知的財産を効果的に保護/暗号化することは可能ですか?
たとえば、ウイルス対策製品の場合はマルウェアのシグネチャなどの知的データを含む製品(ソフトウェア)をクライアントに販売しているとします。私が望んでいないのは、競合他社が私のエンドポイントソリューションを取得し、その利益のために貴重なデータを抽出することです。
企業はそのようなシナリオにどのように取り組みますか?それともこの問題は解決策を持っていますか?
基本的なアプローチでは、ディスク上でデータを暗号化する必要があると思います。もちろん、復号化されたデータ(それらの一部)と復号化のキーは、ある時点でRAMにあります。つまり、RAMへのアクセスは、最終的にはデータなので、このシナリオでは、RAMの問題は気にせず、残りのデータのみを気にします。
したがって、クライアント側でデータを暗号化することにしたと仮定します。私の問題は、暗号化/復号化キーの処理です。
キーがアプライアンス/コード(ハードコード、ファイルなど)にある場合、最終的にはリバースエンジニアリングによって公開されます。インターネットにアクセスできる場合は、サーバー側でデータを復号化してクライアントに送信できるようにするための複雑なPKIスキームを作成できます。しかし、おそらくこれは与えられていないか(古いシグネチャがあっても、インターネット接続がなくてもウイルス対策が機能することが期待されます)、パフォーマンスが非常に高くなります。
これを効果的に解決するにはどうすればよいですか?
ある時点でのデータがユーザーのマシン上で平文である場合、それを保護することはできません。あなたはそれを保護するために多くのことをすることができますが、これは専任の攻撃者を遅くするだけです:ソースコードの難読化、保存データの暗号化、サーバーでの暗号化キーのローテーションなど。これはDRMの領域であり、多くの企業があなたに彼らの解決策を売りなさい。
すべてのDRMシステムは遅かれ早かれ壊れます(製品に価値がある場合)、ゲームの著作権侵害はこれをかなりよく示しています。また、ご指摘のとおり、サーバー側の暗号化などの強力な防御策はユーザーにとって不便です(おそらく4名は高額です)。 UX over IP保護を評価すると、完全に近いIP保護を備えた使用できないアプリよりもはるかに大きな競争上の利点が得られると私は提案します。
GitHubは良い例です。自己ホスト型のエンタープライズバージョンのソースコードは、パスフレーズ「この難読化は、GitHub Enterpriseのお客様がVMに変更を加えないようにすることを目的としています。この「暗号化」は簡単に解読されることがわかっています。」そして、github.comのソースコードの大部分がすべての企業顧客が利用できるにもかかわらず、彼らはまだビジネスを続けています。有用なサービスを提供することは、IPを厳格に保護することよりもビジネスにとって優れていました。
競合他社によるIPの盗難を防ぐ方法は他にもいくつかあります。古典的な技法の1つは「ペーパータウン」と呼ばれます。同じエリアのマップは非常によく似ているため、地図製作者はマップに偽の町を配置し始め、偽の町が競合他社のマップに表示されれば、IP盗難の証拠を手に入れました。グーグルマップでさえこれをします。最近genius.comは、Googleの検索結果の歌詞が、歌詞内の代替の種類の引用符でメッセージをエンコードすることにより、サイトから取得されたことを示しました。
類似の方法でアンチウイルスシグネチャを保護できます。偽ウイルスのシグネチャをいくつか含め、これらの偽ウイルスを競合他社のアンチウイルスで定期的にスキャンします。
これを効果的に解決するにはどうすればよいですか?
できません。
対称キーをクライアントに保存すると、そこに読み込まれます。復号化のためにサーバーに送信すると、ネットワークトラフィックは復号化されたデータを盗聴します。また、RAMの問題を軽視しないでください。RAMからのデータのスナッチングは複雑ですが、報酬が大きい場合は禁止されていません。
簡単に言えば、コンピュータを所有している人間にそれを知らせなければ、コンピュータに秘密を知らせることはできません。
難読化して、競合他社にとって困難にすることができます。ただし、非表示にしているものの価値が十分に高い場合は、解読にコストをかけることはできません。おそらく、必要なのはエンジニアではなく弁護士です。
IP窃盗を検出するための優れた方法については、 Andrew Morozkosの回答 を参照してください。そのため、その弁護士をいつ使用するかがわかります。