FLASH→Webサーバ間の通信について質問です。


例えばFLASH上で生成したデータを、Webサーバに送信して保存したとします。
この時パケットを解析されたり、SWFファイルを逆アセンブラ(*1)されると、ユーザーが勝手に生成したデータをサーバに送りつけることが可能だと思います。


このような場合に、以正規のFLASHが生成したデータかどうかを、サーバサイドで判定する(PHP、Perlなど)ことは可能でしょうか?また可能な場合考えられる手法を教えてください。よろしくお願いします。


*1 ... ActionScriptへ戻すことだとお考えください。FLASHの場合なんて言うのでしょう(^^;

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/22 15:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:hijk05 No.1

回答回数1307ベストアンサー獲得回数23

ポイント14pt

>以正規のFLASHが生成したデータかどうかを、サーバサイドで判定する(PHP、Perlなど)ことは可能でしょうか?

不可能

id:munyaX

具体的な内容も書いていただけると助かります。

「100%はムリだが、9割可能」

「ある程度は可能だが、厳密に防ぐのはムリ」

「こういったライブラリがあるが、完全ではない」

「○○で議論されているが、決定打となる解決策は得られていない」

「××で研究されており、最近発表された技術があるが枯れていないため信頼性の評価が難しい」

などなど。

2008/12/15 17:39:15
id:JULY No.2

回答回数966ベストアンサー獲得回数247

ポイント40pt

厳密には無理、というあたりかなぁ。

アイデアとしては、

  1. Flash が最初にアクセスしてきた時に、サーバはランダムな文字列を返す。
  2. Flash 側は、サーバからもらったランダムな文字列と、事前に組み込まれたパスワード情報から、実際のデータの暗号化に使う鍵を作成する。
  3. 前項で作成した鍵を使って送信する内容を暗号化して送る。
  4. サーバは、自分が 1 番で Flash に送ったランダムな文字列を覚えていて、Flash と同様に、ランダムな文字列と組み込まれているパスワード情報(Flash に組み込まれたものと同じもの)から鍵を作成して、Flash から送られてきた暗号を復号化する。

というのを思いついたのですが、パケットキャプチャに対しては耐性はあるけど、swf から逆アセンブルするようなことをされると、「組み込まれたパスワード」と暗号化の鍵を作るアルゴリズムが分かってしまい、偽装可能になります。

実は、DRM の類も似たような仕組みで、ソフトウェアの中に「組み込まれたパスワード」があって、それと鍵の生成方法や暗号化方式が分かると、DRM を回避できることになります(そんなに単純ではないけど)。ただ、一般的なアプリケーションで、それを逆アセンブルして解析するのは容易ではないのですが、swf だと、ActionScript の抽出ツールとか、簡単に入手できるので、難易度は一般的な DRM に比べるとはるかに低くなってしまいます。

ポイントは、どうやって「組み込まれたパスワード」を隠して、どうやって鍵の作成過程を隠すか、になってしまいますが...。

id:munyaX

ありがとうございます。

私もワンタイムパスワード的な秘密鍵を利用する方法は検討する中で思いついたのですが、JULYさんのおっしゃる通りソースを見られると知識のある人には分かっちゃうんですよね。


やはり定石的な方法はないんですね(^^;

プログラムで「ホトンド」防いで、「一部」は運用でカバーしていくという感じでしょうか。


分かりやすい回答ありがとうございました。

DRMのロジックも色々調べてみたいと思います。

2008/12/15 17:37:16
id:okmt_masaaki No.3

回答回数59ベストアンサー獲得回数6

ポイント26pt

SSLの中で

PHPで鍵生成>Flashで鍵読み込み>データと鍵を一緒に送信>鍵判定して正しければデータ保存

すれば求めるアルゴリズムができると思われます。

また、AS3からByteArrayが使えるので暗号化swfが使えるなどの記事を見かけたことがあります。

これならデコンパイルされる心配もないのではないでしょうか??

どのように実装するか私もよくわかりませんが、技術的にはできそうな感じです。

http://www.be-interactive.org/index.php?itemid=5

  • id:munyaX
    細かいですが、

     s/逆アセンブラ/逆アセンブル/

    もしくは

     s/逆アセンブラされると/逆アセンブラにかけられると/

    ですね(^^;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません