2

私は現在、単純なアプリを開発しており(関連する場合はActionsript 3で)、ファイルを「期限切れ」にするXMLファイル(PHPスクリプトによって生成される)に基づいて、単純な登録システムを構築したいと考えていました。特定の日付の後。

私には、このシステムは正しいように見えますが、明らかな何かを見逃した場合、または完全に間違った場合に備えて、専門家の意見を求めています。

私がstackoverflowや他のサイトで読んだものに基づいて、私は次のXML構造を思いつきました。

<LICENSE>
     <NAME>Joe Cool</NAME>
     <COMPANY>Doggy Dogdog</COMPANY>
     <APP>Flash Tester</APP>
     <VERSION>1.02</VERSION>
     <EXPIRES>01/10/2012</EXPIRES>
     <SERIAL>e923b5e370cd3cb7ac72c1482d088bd7</SERIAL>
</LICENSE>

<SERIAL>フィールドは、実際には、ライセンスを作成するすべてのアイテムの単純なMD5ハッシュであり、ユーザーが独自のMD5ハッシュを生成できないようにするために「salt」(秘密のままにする)が追加されています。「復号化された」ライセンスは次のようになります。

Joe Cool - Doggy Dogdog - Flash Tester - 1.02 - salt - 01/10/2012

実行すると、アプリはXMLデータをロードし、「salt」を追加して、これからMD5を計算します。次に、生成されたMD5ハッシュをXMLに保存されているハッシュと比較します。一致しないハッシュは、XMLファイルの改ざんを示します。また、XMLから読み込まれた日付を現在の日付と比較して、アプリの有効期限が切れていないことを確認できます。

I am aware that MD5 is not that secure, etc but I am not protecting nuclear silos with this so I am willing to trade off security for speed and simplicity. I tried to reverse the MD5 obtained from the source string on several online MD5 reverse lookups and they all failed so far.

Finally, I am aware that I will have to store the 'salt' somewhere in the app, but I guess that anyone really determined to reverse-engineer it would break any system that I would put in place anyway, so I can live with the idea.

4

1 に答える 1

0

これを永久に使用するためにコンピュータの時計を単純に変更するのは些細なことではないでしょうか?

また、あなたが言及したように、ファイルを逆コンパイルし、ソルトを見つけて、任意のライセンス ファイルを生成することも非常に簡単です。

しかし、このようなシステムは「あいまいさによるセキュリティ」のような取引になるため、サーバー側にロジックを保存したくない場合を除き、これは得られるのと同じくらい安全です:)

編集:これが.swfファイルである場合、検証を破る別の方法は、すでに使用しているmd5クラスを含む別のswfファイルにロードすることだと思いますが、常に既知の値を返すように変更します(「1」と言います) そして、これに一致するように xml のライセンス キーを変更します。

于 2012-01-11T07:49:48.907 に答える