2

私たちはフレームワークをネットで販売するつもりであり、誰かがそれを購入した場合、ネットに載せたり、他の開発者に譲渡したりできない場合よりも、保護する必要があります。数か月後にネット全体で見つけたくありません。

いくつかの方法を考えましたが、それぞれに落とし穴がありました。

すべての開発者に一意の ID を与え、その ID をフレームワークにプログラムして、使用するにはそれを入力する必要があります。問題は、彼がID付きのフレームワークを誰にでも与えることができるということです。

デバイス番号を尋ねて、各開発者のフレームワークでそのデバイスのみを有効にします。ここでの問題は、彼がそれをストアに置いたときに、すべてのユーザーが他のデバイス ID を持っているため、それを使用できないことです。

ネットを使用して、ユーザーをそのニーズに制限しないことを希望したいくつかの方法 (??) を確認します。

私だけが抽出できるコードで各フレームワークをプログラムできるので、ネット上でそれを見つけたときに、どの開発者がそこに入れたかを確認できます(それは助けにはなりません-私は皆を訴えることはできません)

開発者ごとにフレームワークを作成するだけでなく、アプリストアにいる他のすべてのユーザーでも機能させる方法はありますか?

ありがとう 。

4

2 に答える 2

3

@diederikh は非常に優れた点を指摘しており、NicolasMiari も優れた洞察を提供しています。最良の答え IMO は、これら 2 つの組み合わせです。(dieerikh の優れたアドバイスを念頭に置いてください。あなたの目標は、正当な顧客にとって物事を難しくする単純なものを考え出すことです。)

顧客ごとにフレームワーク全体を再コンパイルするのではなく、ライセンス キーをバンドル ID に依存させます。バンドル ID が送信されます。秘密鍵を使用してバンドル ID に署名します。これにより、送信するハッシュが提供されます。これで、実行時に、フレームワークは公開鍵 (機密情報ではないため、どこにでも公開できます) を使用して署名を検証します。SecKeyRawVerify()iOS でそれを行う方法については、 を参照してください。

このアプローチを使用して、期限付きのキーを作成できます。署名されたデータにタイムスタンプを含めるだけです。

このアプローチを使用すると、必要に応じてバンドル ID を使用して顧客がフレームワークを無期限にテストできるようになります。その識別子の署名付きハッシュを試用版の顧客が利用できるようにします。しかし、AppStore にアップロードしようとするとすぐに、識別子を変更し、新しい署名付きキーの料金を支払う必要があります。

これを回避する方法は確かにあります。攻撃者はフレームワークを変更して、署名の検証を無視する可能性があります。しかし、それは常に真実であり、それを防ぐことは、支払いを行う顧客に問題を引き起こす可能性が高いだけの DRM よりも、事後に弁護士を使用して行う方が適切です.

于 2013-09-14T20:11:21.353 に答える