APK ファイルをインストールする前に SHA-256 ハッシュを照合すると、信頼できるハッシュを入手した版と手元のファイルが同一であることを確認できます。これは有用ですが、それだけでアプリに脆弱性やマルウェアがないとは証明できません。
安全なダウンロードには、ファイルの入手元、途中で改変されたかどうか、内部のコードに関する証拠という三つの別々の問いがあります。ハッシュ値だけで三つすべてに答えることはできません。
ファイルのハッシュは何をするのか?
SHA-256 はファイルの内容から固定長の値を生成します。ファイルが変われば、そのハッシュも変わることが期待されます。そのため、二つのハッシュの比較は、ファイルのバイト列が同じかを調べる実用的な方法です。
この結果の信頼性は、比較対象となる参照情報の信頼性に依存します。攻撃者が APK と、その横に掲載されたハッシュの両方を差し替えられるなら、二つの値が一致しても問題はわかりません。Livara の脅威モデルも、ファイル確認のこの限界を説明しています。
インストール前の確認手順
**対象のバージョンを特定します。**製品名、バージョン番号、パッケージの種類をリリースページと照合してください。異なる二つのバージョンのファイルは、通常、同じハッシュにはなりません。
**期待されるハッシュを信頼できる参照元から入手します。**ファイルとハッシュを一緒に送ってくる見知らぬメッセージだけを頼りにしないでください。公式サイトのアドレスを独立に確認してください。
ダウンロードしたファイルのハッシュを計算します。Livara Proof Labには APK のハッシュ比較ツールがあります。アプリ全体のセキュリティ検査と混同しないでください。
**値全体を比較します。**先頭や末尾の数文字だけでは不十分です。バージョン名やファイルの選択を間違えていないかも確認してください。
**一致しなければインストールを中止します。**不一致は、バージョンの違い、不完全なダウンロード、ファイルの変更で生じる可能性があり、それだけでマルウェアの証拠にはなりません。原因が明らかになるまでインストールせず、公式の経路で再確認してください。
このガイドでは「安全な版」としてハッシュの例を示しません。正しい値は、特定のリリースファイルによって決まるためです。
ハッシュ、署名、再現可能なビルドはどう違うのか?
| 確認方法 | 裏付けられる結果 | それだけでは証明できないこと |
|---|---|---|
| SHA-256 ハッシュ | ファイルが比較対象と同一である | コードが安全である、または発行者が信頼できる |
| APK 署名 | 特定の署名鍵で署名され、署名検証が有効である | 鍵の所有者が悪意あるコードを一度も公開しない |
| 再現可能なビルド | 指定されたソース、環境、手順から同じバイト列を作れる | ソースにセキュリティ上の欠陥がない |
| コードのセキュリティレビュー | 調査した範囲とバージョンで問題が発見または評価された | 未知の欠陥が一つも残っていない |
Android 公式の apksigner ツールは、APK の署名や証明書情報の確認に使えます。新規インストールと既存アプリの更新も同じではありません。Android は更新時に署名者の互換性を確認します。知らない発行者の有効な署名だけでは、信頼の十分な根拠になりません。
再現可能なビルドの定義にも、指定されたソースとビルド環境が必要です。ダウンロードのハッシュ照合は、このプロセスの代わりにはなりません。
Proof Lab が扱う範囲は?
Proof Lab のページには、ファイルのハッシュに加え、ブラウザー内の暗号処理デモがあります。暗号処理が成功するデモは、インストール済みアプリの完全な監査でも、メッセンジャーのプロトコル全体の実行でもありません。ツール自体も信頼できる環境で実行する必要があります。侵害された端末やページは、誤解を招く結果を表示する可能性があります。
インストール後も、更新、アプリの権限、端末のセキュリティは重要です。今日のファイルの確認は、将来のバージョンの自動的な確認にはなりません。
ハッシュ照合は信頼の連鎖における特定の確認です。リリースの参照元、署名者、結果の限界も理解してこそ、その価値が高まります。



