web-dev-qa-db-ja.com

Firebase RemoteConfigを使用してAPIキーを保存しても大丈夫ですか?

注:明確にするために、これはFirebase APIキーではなく、トークンのようなものである可能性があります...クライアントアプリが所有するものであり、サーバーエンドポイントが検証します。

APIキー(エンドポイントに対してクライアントを検証するために使用されるトークンを考えてください)を保護するために、さらに改善しようとしています。これはすべて内部ネットワーク上にありますが、モバイルクライアントのみがエンドポイントを呼び出すことができるようにする必要があります。

APIキーをFirebaseリモート設定パラメーターに入れることができると思っていました(アプリに無効なデフォルト値が組み込まれています)。ただし、リモート設定のFirebaseドキュメントには次のように記載されています。

RemoteConfigパラメータキーまたはパラメータ値に機密データを保存しないでください。プロジェクトのRemoteConfig設定に保存されているパラメータキーまたは値をデコードすることができます。

これがアプリにバンドルされているデフォルト値を参照しているだけなのか、それともリモートで読み込まれる値を参照しているのかはわかりませんでした。キーを取得したら、暗号化してMDMプロバイダー経由でデバイスに保存できます。

また、リモート構成データのアプリへの転送は暗号化されていますか、それともクリアテキストで行われますか?

リモート設定について誰でも提供できる情報をありがとうございます。

21
Innova

APIキーをどの程度安全に保持するかによって異なります。 APIキーで誰かができることは何ですか? YouTube Data APIなどの別のサービスに対してアプリを識別するだけの場合、発生する可能性のある最悪の事態は、悪意のあるユーザーがそのリソースの割り当てを使い果たすことです。一方、キーによって、所有者がそれ以上の認証と承認なしに重要なデータに元に戻せない変更を加えることができる場合は、そのデータをデバイスに保存する必要はありません。

Firebaseドキュメントからの引用は、あなたの質問に答えます。一般に、アプリに秘密鍵を保存しないでください。詳細な説明については、 この質問 の回答を確認してください。

FirebaseのRemoteConfigを使用することは、アプリバンドルのキーを出荷することほど安全ではありません。いずれにせよ、データは最終的にユーザーのハードウェアに保存されます。悪意のある人は、それがどんなに難しいと思っても、理論的にはそれにアクセスできます。

また、はっきりとは言えませんが(これは簡単にテストできるはずです)、リモート構成値がプレーンテキストとして送信されることは非常に疑わしいです。 Googleはデフォルトでhttpsを介してすべてを行います。

2
pejalo

@Frank van Puffelenはこれを確認できますが、私の理解では、Firebase Remote Configは[〜#〜] https [〜#〜][〜#〜] http [〜#〜]リクエストにより、アプリとFirebase Remote Configの間で共有される情報をスニッフィングするのが難しくなり、APKを逆コンパイルして文字列を読み取るのが難しくなります Gradleビルド構成によって生成された文字列定数を使用 の場合に生成されます。たとえば、Charles Proxyなどのネットワークプロキシスニファを使用してアプリをデバッグする場合、HTTPSリクエストのためにアプリがデバッグモードでコンパイルされていない限り、エンドポイントの詳細を表示できません。最新のAPIバージョンの新しいセキュリティ対策。

「https」サイトが「http」よりも安全である理由 を参照してください。

HTTPプロトコルは、転送時にデータ暗号化を使用しないため、個人情報が第三者によって傍受されたり、操作されたりする可能性があります。ハッカーは、ネットワーク情報(パスワード、クレジットカード番号、ユーザーIDなど)を取得するために、「スニッフィング」と呼ばれる方法を使用します。ネットワークパケットが暗号化されていない場合、ハッカーアプリケーションを使用して、ネットワークパケット内のデータを読み取ったり盗んだりする可能性があります。

または、HTTPSは、パスワード、テキストメッセージ、クレジットカードの詳細など、あらゆる種類のデータをコンピューターとサーバー間の転送中に安全に保持します。 HTTPSは、暗号化、データ整合性、認証などの3層の保護を提供する安全な証明書であるSSLと呼ばれるTSLプロトコルを使用して、データの機密性を維持します。SSL証明書は、非対称公開鍵暗号と呼ばれるものを使用します。公開鍵インフラストラクチャ(PKI)システム。 PKIシステムは、公開鍵と秘密鍵の2つの異なる鍵を使用して通信を暗号化します。公開鍵で暗号化されたものはすべて、対応する秘密鍵でのみ復号化できます。その逆も同様です。また、HTTPSは、man-in-the-middle攻撃、DNS再バインド、リプレイ攻撃などのハッカー攻撃からユーザーを保護できます。

さらなるセキュリティ対策

  1. Dexguard ランディングページに従って文字列暗号化を提供します。私は彼らにメッセージを送りました、そしてこれがインディー開発者にとってどれくらいの費用がかかるかを待っています。
  2. パブリック/プライベートAPIキー交換 を使用すると、セキュリティの追加レイヤーになる場合があります。ただし、このオプションをよりよく理解するには、実装をさらに調査する必要があります。
0
Adam Hurwitz