表示 - 記事

カテゴリ : プログラミング

タイトル : Androidから安全に独自のWebAPIを実行する [端末にパスワード保存]

キーワード(keywords) : WebAPI,安全,セキュリティ,OAuth,サインイン,秘密鍵

解説(description) : 今回はAndroidの端末にパスワード(秘密鍵など)を保存しますが、Javaコードだと「技術的レベルが低いエンジニア」でも簡単に逆コンパイルが可能ですので解析されてしまいます。また、NDKを使用してC++コードで書いて「.so」の共有ファイルに保存する方法があります。ですが、逆アセンブルされたら・・・


以下はプレビューとなります。

Androidから安全に独自のWebAPIを実行する [端末にパスワード保存]

今回はAndroidの端末にパスワード(秘密鍵など)を保存しますが、Javaコードだと「初心者」でも簡単に逆コンパイルが可能ですので解析されてしまいます。Javaコードを難読化する手法もありますが、ほぼ意味がないです。

NDKを使用してC++言語のコードで書いて「.so」の共有ファイルに保存する方法があります。ですが、逆アセンブルされたら危険です。

ただ、逆アセンブルで生成されたアセンブリ言語は「熟練者」の方ではないと解析が難しいです。例として113 KBの「.so」ファイルは約2万行のアセンブリ言語となります。 ※全て読む必要はないですが。

最終的にはC++で暗号化アルゴリズムを実装、パスワード(秘密鍵)を埋め込み、デバッグ時、証明書フィンガープリント(ハッシュ)などの対策を施す。SSL/TLS通信でWebAPIにアクセス。加えてGoogle Sign-In(サインイン)でOAuth認証(オーオース)を行う。

これならば「.so」ファイルを逆アセンブルされても、OAuth認証があるので勝手にWebAPIを操作する事は不可能に近いと思います。

LVLとOAuth認証の比較

Google Sign-Inの前にLVL(License Verification Library)も調査したけど、基本的に有料アプリが対象で、さらにサーバー側の連携がない模様です。

LVLの公式




編集 | 戻る