私は現在、単純なアプリを開発しており(関連する場合は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.