Laravel + Vue.jsで作るSPAのブログシステム
ホーム(SPA)
記事
画像
カテゴリ
記事の編集
カテゴリ
選択して下さい。
プログラミング
Windows
政治・経済・生活
タイトル
キーワード (keywords)
※半角カンマで区切る
説明 (description)
本文
※HTMLで記述する
<h1>Androidから安全に独自のWebAPIを実行する [端末にパスワード保存]</h1> <p>今回はAndroidの端末にパスワード(秘密鍵など)を保存しますが、Javaコードだと<span style="color:green;">「初心者」</span>でも簡単に逆コンパイルが可能ですので解析されてしまいます。Javaコードを難読化する手法もありますが、ほぼ意味がないです。</p> <p>NDKを使用してC++言語のコードで書いて「.so」の共有ファイルに保存する方法があります。ですが、逆アセンブルされたら危険です。</p> <p>ただ、逆アセンブルで生成されたアセンブリ言語は<span style="color:green;">「熟練者」</span>の方ではないと解析が難しいです。例として113 KBの「.so」ファイルは約2万行のアセンブリ言語となります。 ※全て読む必要はないですが。</p> <p>最終的にはC++で暗号化アルゴリズムを実装、パスワード(秘密鍵)を埋め込み、デバッグ時、証明書フィンガープリント(ハッシュ)などの対策を施す。SSL/TLS通信でWebAPIにアクセス。加えてGoogle Sign-In(サインイン)でOAuth認証(オーオース)を行う。</p> <p>これならば「.so」ファイルを逆アセンブルされても、OAuth認証があるので勝手にWebAPIを操作する事は不可能に近いと思います。</p> <h2>LVLとOAuth認証の比較</h2> <p>Google Sign-Inの前にLVL(License Verification Library)も調査したけど、基本的に有料アプリが対象で、さらにサーバー側の連携がない模様です。</p> <p> ※<a href="https://developer.android.com/google/play/licensing/server-side-verification">LVLの公式</a></p> <img src="https://www.petitmonte.com/dev/mpp_blog_la/uploads/android_security_1.png" /> <p></p> <img src="https://www.petitmonte.com/dev/mpp_blog_la/uploads/android_security_2.png" /> <p></p>
戻る
SPA blog system
Copyright 2020 Takeshi Okamoto All Rights Reserved.