2012-07-05 13 views
11

会社はプロジェクトを作成し、送信者IDを受け取ります。会社はアプリを作成し、送信者IDを焼き込み、店にアプリを配置します。Googleクラウドメッセージングセキュリティ

アタッカーはアプリをリバースエンジニアリングし、送信者IDとGCM登録IDの受信に使用されたサーバーインターフェースの両方を抽出します。

アタッカーは自分のアプリを作成し、会社の送信者IDとサーバー登録インターフェースを取得して、ストアにアプリを入れます。攻撃アプリは、基本的にGCMが実行される限り会社の実際のアプリを偽装します。会社の送信者IDからのメッセージを受信するよう登録し、「本物の」アプリと同じようにGoogleのサーバーにGCM登録IDを送信します。

今、会社はアプリのすべてのインスタンスにいくつかの情報をブロードキャストしたいと考えています。たぶん更新が利用可能であることを知らせるメッセージです。 「アタックアプリ」(本物のものと同じように登録されている)を当社のアプリの「リアル」バージョンと区別する方法はありますか?

+0

いい質問ですが、ここではおそらくOTです。 – ceving

答えて

1

GCMのプロジェクトIDではなく、送信者の電子メールアドレスを盗聴できる同じ問題がC2DMにも存在する可能性があります。

C2DMまたはGCMは、機密ユーザー情報(アカウント名、個人情報など)を送信するために使用されるべきではなく、実際のアプリケーションがそれを使用してさらなる操作を実行するために主に通知に役立ちます。

「偽/ハッキング」アプリへの通知がどれほど有用か、「あなたは新しいメッセージがありますか」という通知はどうすればよいでしょうか?

+1

ソースはありますか? – Schiavini

2

これは、攻撃者のアプリのデバッグバージョンでも動作する可能性がありますが、彼は自分のアプリを店舗に置くことはできません。 GCM識別の一部は、店舗内で一意である必要があるアプリIDです。

3

あなたのシナリオでは、攻撃者が登録IDを持っていてもユーザーにメッセージを送信できないと思います。認証する必要があるメッセージを送信する企業サーバ(OAuth2)は、まずGoogleを通じてアカウントを作成します。したがって、攻撃者が送信者のパスワードと登録IDを知っている場合にのみ、ユーザーに送信することができます。しかし、もちろん、送信側のパスワードは決してクライアント側に送信されません。

1

GCM登録IDはGoogleからリクエストされ、アプリからリクエストされてサーバーに送信されます。異なるアプリ(しかし、同じ送信者ID)を持つ誰かがRegidを作成するとき、それはまだサーバーにコミットする必要があり、最初にその特定のregidにメッセージを明示的に送信する必要があります。

正当であるかどうかに関係なく、アプリのインストールは、許可されていないメッセージを受信することはありません。 (C2D_MESSAGEの許可を宣言して使用してください)

0

実際にはgoogleでGCM用のサーバーキーを登録してください。これにより、ホワイトリストサーバーのIPアドレスが設定されます。 サーバーIPを追加すると安全ですあなたのサーバだけがその鍵でメッセージを送信することが許可されているからです。

0

この場合、GCMは安全です。
GoogleApiConsoleにアプリを登録する前に、元のアプリで送信者IDを使用することさえできません。これは、GoogleApiConsoleの秘密鍵の指紋を指すことを意味します。それは十分だ。

0

APIキー(送信元ID)を使用する独自の「中間サーバー」をお勧めします。アプリ自体に埋め込むのではなく、

関連する問題