ホーム > カテゴリ > Java・Android >

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の公式

SSL/TLS

HttpURLConnectionではなくHttpsURLConnectionを使用する。

// HTTPS通信
URL myUrl = new URL("https://www.petitmonte.com/");
HttpsURLConnection  connection = (HttpsURLConnection) myUrl.openConnection();

NDK

暗号化アルゴリズムはオープンソースを利用するか、独自で記述すると良い。DES/RC4/AESなどありますが、お好きなものを組み合わせると解析されにくいです。

パスワードのハードコーディングは避けて、配列にしたり組み合わせたりXORなどをしてあげると良いです。

Google Sign-In

Google Cloud Platformの「APIとサービス」の「認証情報」の「認証情報の作成」から「OAuthクライアントID」を選択します。Android側は「Android」(Android クライアント 1)で、サーバー側は「ウェブアプリケーション」(ウェブ クライアント 1)です。2つ必要なので注意して下さい。

Android側の「SHA-1 署名証明書フィンガープリント」は証明書フィンガープリント(MD5/SHA1/SHA-256)を確認するを参照。リリース版のAPKファイルがあればAndroidのAPKファイルを逆コンパイルするでも確認可能です。

サーバー側は「承認済みのJavaScript 生成元」「承認済みのリダイレクト URI」は未記入でOKです。

OAuth 同意画面でアイコンは登録しない方が良いです。Googleの対応に時間がかかりますのでご注意ください。途中で削除(キャンセル)できません。

Google Sign-In APIを使用する場合は「家族のポリシー要件の違反」 (Violation of Families Policy Requirements)に注意して下さい。13才未満に対してこのAPIは使用できません。必然的にアプリは13歳以上となります。

OAuth認証の流れはAndroid側ではaccount.getIdToken()で「IDトークン」を取得します。それをサーバー側で受け取って$payload = $client->verifyIdToken(IDトークン)で検証します。$payload['email']でメールアドレスも取得可能です。

コードの詳細はGoogle公式サイトや検索して見てください。

参考サイト

Google Sign-In を使ってサーバー側で認証を行う
Androidで安全にパスワードを保存する





関連記事



公開日:2020年06月09日 最終更新日:2020年12月27日
記事NO:02830


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律