Hello there, ('ω')ノ
🔐 なぜ暗号化の確認が重要なのか?
セキュリティを意識したアプリ開発では、次のようなデータは必ず暗号化されているべきです:
- ユーザーIDやパスワード
- ログイントークンやAPIキー
- SQLiteなどのローカルデータベース
- 通信中のデータ(特にHTTPでなくHTTPSかどうか)
ところが実際には、
- 平文(そのまま読める状態)で保存されていたり
- 安全でないアルゴリズム(MD5やDESなど)を使っていたり
- 独自実装で逆に脆弱だったり
といった問題が多く見つかります。
🧰 暗号化設定を調べる方法①:静的解析(ソースコードを読む)
まずは、MobSF や APKTool、jadx を使って、**コードや設定ファイルから暗号化処理を探していきましょう。
✅ 主なキーワードで検索する
AES DES RSA MD5 SHA1 / SHA256 Cipher.getInstance KeyGenerator SecretKeySpec Base64
これらのキーワードは、暗号化処理やキー生成に関連するJavaのクラス・メソッドです。 MobSFのコード分析レポートにも「セキュリティに関連するAPI使用一覧」が出てくることがあります。
✅ 例:AES暗号化のコード
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES"); cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
→ このような記述があれば、アプリはAES(対称鍵暗号)を使用していると判断できます。
✅ 危険なケース例
MessageDigest md = MessageDigest.getInstance("MD5");
→ MD5は脆弱とされており、現代のセキュリティ要件を満たしません。
🧪 暗号化設定を調べる方法②:動的解析(実際に動かして確認)
アプリが内部でどのようにデータを暗号化しているかは、動的に観察することでより深く理解できます。
✅ ADB + Frida などを活用
たとえば、アプリの保存ファイルやデータベースを取得し、中身が人間に読めるか(=平文か)を確認します。
📁 内部ストレージの中身を調べる:
adb shell run-as com.example.app cat /data/data/com.example.app/files/config.json
→ 中に「password":"12345678"」などの文字列がそのまま出てきたら、暗号化されていないと判断できます。
✅ SQLite DBを直接確認:
adb pull /data/data/com.example.app/databases/userdata.db sqlite3 userdata.db
→ SELECT * FROM users; を実行して、出力結果にパスワードやトークンが平文で入っていれば要注意です。
🎯 確認すべきポイントまとめ
| チェックポイント | 診断内容 |
|---|---|
| 暗号化アルゴリズムの種類 | AES, RSA, SHA256など推奨のものを使用しているか |
| 鍵の管理方法 | ハードコードや平文保存されていないか |
| 独自暗号化の有無 | 十分なレビューがされていない自作暗号は危険 |
| 通信がHTTPSかどうか | HTTPだと中間者攻撃に脆弱 |
| ローカル保存データの暗号化 | SQLiteやファイルがそのまま読めないか |
✅ 診断に役立つツール・テクニック
| ツール | 用途 |
|---|---|
| MobSF | 静的解析で暗号APIやBase64検出などが可能 |
| Jadx / APKTool | Javaコードやリソースを逆コンパイルして解析 |
| Frida | ランタイムで関数フックし、暗号処理の挙動を確認 |
| SQLite3 / Hexエディタ | データが暗号化されているかを直接確認 |
✅ 開発者へのアドバイス(セキュアな実装)
- AES / RSA など強度のある暗号アルゴリズムを使う
- 鍵の保存には Android KeyStore を使う(コード内に埋め込まない)
addJavascriptInterfaceや WebView との連携には特に注意- 通信時は必ずHTTPSを使い、証明書のピンニングも検討する
✅ まとめ
- アプリがどのように暗号化を実施しているかは、セキュリティ診断における重要なチェック項目
- MobSFやjadxで静的に、FridaやADBで動的に分析すれば設定ミスや平文保存を発見できる
- MD5や独自実装のような危険な暗号技術の使用に注意
- データや通信は暗号化されていて当然、されてなければリスクという視点で見よう
Best regards, (^^ゞ