2

サーバーが極秘の暗号化キーをAndroidアプリケーションに送信する必要があるプロジェクトがあります。秘密鍵は、承認された公式のBluetoothデバイスと通信するための対称暗号化のアプリケーションによって使用されます。このキーは、アプリケーションの外部で誰もがBluetoothデバイスと通信できるようにするため、検出されないことが重要です。

私の質問は、この秘密鍵が発見されないようにするにはどうすればよいかということです。SSLを使用してサーバーとAndroidアプリケーション間の通信を行うことができ、秘密鍵が実際にAndroidデバイスに保存されないようにすることができます。

しかし、それがサーバーと通信している編集されていないAndroidアプリケーションであり、秘密鍵を取得しようとしている自分のアプリケーションを装った別のアプリケーションではないことを確認するために、どのような手法を使用できますか?

4

2 に答える 2

1

しかし、それがサーバーと通信している編集されていないAndroidアプリケーションであり、秘密鍵を取得しようとしている自分のアプリケーションを装った別のアプリケーションではないことを確認するために、どのような手法を使用できますか?

定義上、これは不可能です。

あなたのアプリを取りなさい。Aある文字列で大文字を小文字に変更しますa。その改訂されたアプリを実行します。これは「自分のものを装った別のアプリケーション」であり、サーバーと完全に通信できるものです。他の「自分のものを装ったアプリケーション」は、1文字の場合よりも多くの変更が加えられているだけです。

したがって、2つの主な選択肢があります。

  1. 自動(ProGuard)と手動の両方の難読化手法を使用して、サーバーとの通信を隠そうとします。それでも、リバースエンジニアリングを試みるために、誰もかゆみを感じないようにします。特定の手法でアプリのライセンスコード(LVLなど)を保護するために人々が使用するアプローチを確認できます。DexGuardなどのより高度な難読化ツールが役立つ場合があります。ただし、技術的に言えば、誰かがアプリをリバースエンジニアリングする可能性があります。

  2. どのアプリケーションがBluetoothデバイスと相互作用するかを気にしないビジネスモデルを考え出します。

于 2012-10-29T17:08:57.917 に答える
0

Androidのカスタムバージョンがなければ、これができるとは思いません。私の推論は、呼び出し元のアプリが本物であるかどうかを判断するために、SSLであるかどうかにかかわらず、サーバーに何かを送信する必要があるということです。何かがアプリから派生している必要があり、それが何であれ(パッケージ名、IMEなど)、なりすましの可能性があります。

あなたができる最善のことは、何かを暗号化し、暗号化を行うために必要なキーを難読化することですが、そうすると、リバースエンジニアリングのコストとキーを取得することの見返りに悩まされます。

そのコストに見合うだけの価値があるとしても、誰かがあなたのセキュリティを破り、Bluetoothデバイスに関する知識と近接性を身に付けるために努力を費やす可能性はどのくらいありますか?

于 2012-10-29T17:10:11.030 に答える