以下の内容はhttps://cysec148.hatenablog.com/entry/2025/08/03/204831より取得しました。


第22回:アプリが使っている暗号化設定を調べる方法

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, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/08/03/204831より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14