2011-06-28 16 views
4

Air(AS3)プロジェクトを作成しています。それは保護のための独自のシステムを持っています。サーバーからアプリケーションとバックへのすべてのデータは暗号化されています。私はサーバー側のスクリプトとアプリケーションに登録されている秘密鍵を使用します。ハッカーがアプリを逆コンパイルすると、秘密鍵が見つかることがあります。秘密鍵は文字列(定数)です。私は自分のアプリケーションに難読化したくありません。秘密鍵の値を隠すAir app

この秘密鍵を非表示にするにはどうすればよいですか?それだけを難読化できますか?シークレットデータを持つ別のAS3クラスを難読化し、必要に応じてメインコードからアクセスできますか?

+0

どのようにMD5/sha1などで暗号化していますか?そして、あなたはどんな種類のデータを送っていますか? – Chris

+0

BASE64。ライセンスキーを検証するためにデータを転送する。 – Astraport

答えて

1

ハッカーがアプリを完全に逆コンパイルすると、ストレージがどのように難読化されていても、秘密を簡単に追跡できます。
難読化を最小限に抑えたい場合は、秘密鍵が使用されているすべての領域を難読化する必要があります。 "uncomompilable"領域から出ると消えてしまいます。

3

アプリを逆コンパイルしてキーを見つけたくない場合は、キーをアプリケーションに絶対に入れないことをおすすめします。代わりに、クライアントに実行時にクライアントごとにネゴシエートされるキーを取得するために、TLS/SSLを介してサーバーに認証するよう強制します。

対称鍵がネゴシエートされたら、それを使用してデータを暗号化/復号化して通過させることができます。もちろん、これは最初の場所でSSLを使うのはなぜですか?これにより、すでにクライアントとサーバーの間でエンドツーエンドの暗号化が可能になります。

もちろん、攻撃者は、アプリがシステムで実行されているときに、復号鍵をRAMから引き出すことができます。つまり、実行中のアプリとサーバーとの間でデータを復号化できますが、他のアプリユーザーが送信しているデータを復号化することはできません。

攻撃者が決して見つけられないような形でキーをアプリケーションに入れることはできません。あなたのアプリはそれを見つけて使用する必要があります。あなたのアプリのプロセスは、それを攻撃者に導きます。だからそこに入れないでください。