2012-01-11 9 views
2

私は現在、単純なアプリケーションを開発しています(関連性があればActionsript 3にあります)。XMLファイル(PHPスクリプトで生成される)に基づいて簡単な登録システムを構築して、特定の日付の後に失効します。XMLで有効期限が組み込まれた単純なライセンスを生成していますか?

私には、このシステムは正しく見えますが、私が何か明白でなかった場合には専門家の意見を聞きたいと思います。私は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データをロードし、このことからMD5を計算します。 次に、生成されたMD5ハッシュをXMLに格納されているものと比較します。一致しないハッシュは、XMLファイルの改ざんを示します。 XMLの読み込み日を現在の日付と比較することで、アプリが期限切れにならないようにすることができます。

私はMD5が安全ではないことを認識していますが、これで核サイロを保護しているわけではありませんので、速度とシンプルさでセキュリティをトレードオフしたいと考えています。私はいくつかのオンラインMD5リバースルックアップでソース文字列から得られたMD5を元に戻そうとしましたが、これまでにすべて失敗しました。

最後に、私はアプリのどこかに「塩」を保存しなければならないことを知っていますが、実際にリバースエンジニアリングすることに決めた人は、とにかく置くシステムを壊すと思います。アイデアを生かすことができます。

答えて

0

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

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

しかし、このようなシステムでは、「セキュリティのあいまいさ」のようなことが起こりますので、ロジックをサーバー側に保存しない限り、これは取得するほど安全です。

EDIT:これは.swfファイルであれば、別の方法で検証を中断すると思いますが、それを既に使用しているmd5クラスを持つ別のswfファイルにロードすることです既知の値(「1」など)を入力し、xmlのライセンスキーをこれに合わせて変更します。

+0

あなたの回答をありがとうございます。日付の問題を解決するために、私はいつもインターネットを使って日付をチェックするのに.swfを得ることができました。しかし、これらのアプリは接続なしでオフラインで使用されると信じています、はい、これは可能性が残っています。私はswfの.swfについては考えていませんでしたが、スタンドアロンは主にAIRファイルだと思います。 – Nik

関連する問題