APK 署名の検証: アプリの安全性を確認する方法

A magnifying glass over a phone showing a certificate and fingerprint, illustrating verifying APK signatures

Android でアプリをサイドローディングすると、自由と柔軟性が得られますが、改ざんされたアプリケーション という大きなリスクが伴います。悪意のある攻撃者は、人気のあるアプリを非公式サイトに再配布する前に、スパイウェアやアドウェアを組み込むように改変することがよくあります。ダウンロードした APK が開発者が Google Play にアップロードしたものとまったく同じであることをどうやって確認できますか?

答えはAPKデジタル署名になります。以下では、アプリの署名が実際にどのように機能するかを説明し、信頼するかどうかを決定する前に、オンライン APK 検証ツール を使用して APK のハッシュと証明書を確認する手順を説明します。

60秒バージョン:

Android はすべての APK に発行者キーを使用して署名します。電話機は、署名が既存のインストールと一致しない「アップデート」を拒否します。これが OS の主な偽装防止手段です。サイドロードされた APK を検証するには、その SHA-256 ハッシュと署名証明書のフィンガープリントを計算し、両方を信頼できる値 (既存の Play ストア インストール、開発者が公開したフィンガープリント、または既知の正常な以前のコピー) と比較します。一致は、ファイルがバイト同一であり、同じ発行者によって署名されていることを意味します。不一致は インストールしないでください を意味します。

APK署名とは何ですか?

デジタル署名は、暗号化された ID の証明です。開発者はアプリを完成させると、秘密鍵 (キーストア) を使用してアプリに「署名」します。 Android は、APK に埋め込まれた対応する公開キーを使用して、次のことを保証します。

  1. 誠実さ: ファイルは署名されてから変更されていません。
  2. 信憑性: 開発者は彼らが言うとおりの人物です。
  3. 更新情報: 同じキーで署名された APK のみが携帯電話上の既存のアプリを更新できます。

署名の進化: V1、V2、V3、および V4

Google は長年にわたって APK のセキュリティを継続的に改善してきました。

APK の署名をオンラインで確認する方法

私たちの APK検証ツール はハッシュを計算するだけではありません。証明書チェーンの完全な暗号化監査を実行します。使用方法は次のとおりです。

確認する手順:

  1. APK ベリファイア ページに移動します。
  2. APK または XAPK ファイルを選択します。
  3. 私たちのツールは、META-INF/ ディレクトリを解析し、証明書データ (.RSA、.DSA、または .EC を抽出します)。
  4. 分析が完了するまで待ちます (数秒しかかかりません)。
  5. 証明書情報: 開発者名、組織、および出身国を確認してください。
  6. ハッシュ を確認します。サイトに表示されている SHA-256 を、発行者が独自の公式サイト、プロジェクト リリース ページ、または署名マニフェストで公開している値と比較します。

セキュリティ警告

検証者が 「デバッグ証明書」 または Facebook や WhatsApp などの主要アプリの不明な「自己署名」エンティティを示した場合、インストールしないでください。ほぼ確実に侵害されています。

チェックサムについて(MD5、SHA-1、SHA-256)

チェックサムは、ファイル全体を表す固定長の文字列です。アプリのアイコン内の 1 つのピクセルを変更すると、SHA-256 ハッシュが完全に変更されます。

ハッシュタイプ セキュリティレベル 注意事項
MD5 遺産 衝突しやすい。セキュリティのためではありません。
SHA-1 適度 素早い検索に今でも広く使用されています。
SHA-256 素晴らしい アプリ検証の最新の標準。

署名証明書から実際にわかること

検証者が証明書を返す場合、サイドローディングの安全性にとって重要な部分は、X.509 メタデータのカラフルな部分ではなく、少数のフィールドです。実際的には:

ハッシュと署名: ほとんどのチュートリアルがスキップする違い

人々はよく「ハッシュ」と「署名」を混同します。これらは非常に異なる目的を果たし、安全な検証には次の両方が必要です。

サイドロード APK の場合、証明書のフィンガープリントが発行者の既知のフィンガープリント そして と一致すること、ファイルの SHA-256 がその正確なビルドに対して発行者が公開した値と一致すること、の 2 つを組み合わせることで最も強力な保証が得られます。

信頼できる参照フィンガープリントを入手できる場所

検証で最も難しいのは、比較する適切な値を知ることです。いくつかの信頼できるアプローチを、信頼性の大まかな順序で示します。

  1. 発行者自身の Web サイトまたはリリース ページ。 多くのオープンソース プロジェクトやセキュリティを重視するベンダーは、ダウンロードと一緒に署名証明書の SHA-256 フィンガープリントを公開しています。これがゴールドスタンダードです。
  2. 既存の Play ストアのインストール。 アプリが Play 管理のデバイスにすでにインストールされている場合、その証明書のフィンガープリントは、定義上、発行者のフィンガープリントになります。サイドロードされた APK のフィンガープリントをそれと比較します。 Apk Analyzer (Android Studio 内) や apksigner verify --print-certs などのツールは、インストールされた APK から直接それを読み取ります。
  3. このアプリにインストールした最初の APK。 アプリをしばらく使用していて、「署名の不一致」プロンプトが一度も表示されなかった場合は、古いコピーのいずれかを参照として使用できます。同じ発行者からの後続の更新では、同じキーを使用する必要があります (または、v3 を介してローテーションします。この場合、チェーンは引き続き検証します)。
  4. アーカイブされた公開スナップショット。 Internet Archive および同様のサービスでは、古い APK リリース ページが宣言されたハッシュとともに保存されることがあります。元の発行者ページがなくなった非常に古いビルドに役立ちます。

よくある検証の間違い

あなたのアプリは安全ですか?

推測しないでください。サイドロードされた APK を公式の開発者証明書と照合して数秒で検証します。

APK検証を開始する

よくある質問 (FAQ)

Android が変更された APK のインストールをブロックするのはなぜですか?

新しい APK の署名がすでにインストールされているものと一致しないためです。これにより、ハッカーが本物の銀行アプリを偽のアプリで「上書き」することを防ぎます。

APKを変更した後に再署名できますか?

はい、ただし、異なるキー を使用することになります。 アプリは「クリーンな」スマートフォンには引き続きインストールできますが、元の開発者からのアップデートは受け取れなくなります。

証明書の固定とは何ですか?

これは、アプリがサーバーと通信する前に特定の証明書を明示的にチェックする高度なセキュリティ機能で、改ざんされたアプリは正しくインストールされている場合でも役に立たなくなります。

署名検証をすべてのサイドロードの一部にする

署名は、最新の Android セキュリティにおける重労働の多くを行っています。追加の数秒を費やして APK ベリファイア 経由でファイルを実行することは、改ざんされたアプリがインストールされる前にデバイスから遠ざける安価な方法です。

Mst Shaefale による設計と文書化 リード開発者兼 Android パッケージ アーキテクト • Android 12 ~ 15 で検証済み

Mst Shaefale は、クライアント側の XAPK/APKS マージ、バイナリ マニフェスト パーサー、APK v1+v2 署名ツールを xapktoapk.com で保守しています。古いコマンドや OS の変更を見つけましたか?編集メモを送信します。