すべてのAndroid APKは、開発者が秘密鍵で署名してからでなければインストールできません。この署名には偽造不可能なSHA-256フィンガープリントが残されます。お手元のBinance APKのフィンガープリントがBinance公式が公表しているフィンガープリントと完全に一致していれば、100%オリジナル(本物)であることが確認でき、改ざんされている可能性はありません。Binance公式サイトからAPKを取得した後、本記事の方法に従って検証するか、信頼できるデバイスに直接Binance公式アプリをインストールすることをお勧めします。iPhoneユーザーの方はiOSインストールチュートリアルをご覧ください。
電子署名とは
Androidシステムは、すべてのAPKにインストール前の電子署名を義務付けています。署名の仕組みは概ね以下の通りです:
- 開発者が公開鍵と秘密鍵のペアを生成する
- APKを公開する前に、秘密鍵を使ってAPKコンテンツに対する署名ブロックを計算する
- 署名ブロックを公開鍵証明書と一緒にAPKにパッケージ化する
- インストール時、Androidシステムが公開鍵を使って署名が有効かどうかを検証する
- APKファイルが少しでも変更されていると、署名が無効になり、システムはインストールを拒否するかエラーを出す
秘密鍵はBinance公式によって厳重に保管されており、外部からは取得できません。これはつまり:
- 誰もBinanceの署名を偽造できない(理論上、解読には数億年かかります)
- 不正なコードが埋め込まれたAPKは再署名する必要があり、署名フィンガープリントが完全に異なるものになる
- フィンガープリントが一致すれば、そのAPKは間違いなく本物である
これが電子署名の威力であり、アプリ偽造防止の最終防衛線なのです。
署名検証のコアコンセプト
SHA-256フィンガープリントとは
SHA-256はハッシュアルゴリズムの一種で、任意のサイズのデータを固定長の64桁の16進数文字列に変換することができます。同じ証明書に対しては、誰が計算しても完全に同じSHA-256が得られます。
Binanceの署名証明書のフィンガープリントは次のような形式です:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
(32バイト、各バイトは2桁の16進数で表され、合計64文字)
この文字列がBinance APKの「DNA」です。本物の公式APKであれば、全く同じフィンガープリントが出力されます。
3つの署名スキーム
Androidにはこれまでにいくつかの世代のAPK署名スキームが存在します:
| スキーム | 導入バージョン | 特徴 |
|---|---|---|
| v1 (JAR) | Android 1.0 | JAR署名ベース、META-INF/ のみ署名 |
| v2 (APK Sig Scheme v2) | Android 7.0 | APK全体に署名、インストールが高速 |
| v3 (APK Sig Scheme v3) | Android 9.0 | キーローテーションに対応 |
| v4 (APK Sig Scheme v4) | Android 11 | インクリメンタルアップデートに対応 |
Binance APKはv1+v2+v3署名を同時に使用しており、すべてのAndroidバージョンで検証を通過できるようになっています。
方法1:apksignerで検証する
apksignerはGoogle公式のツールであり、検証において最も権威があります。
apksignerのインストール
Windows:
- Android Command Line Tools(Google公式)をダウンロード
- 解凍後、
build-tools/<バージョン番号>/ディレクトリ内にあるapksigner.batを見つける - このディレクトリを環境変数PATHに追加する
macOS / Linux:
brew install android-commandlinetools
またはAndroid Studioをダウンロードすると、apksignerは ~/Library/Android/sdk/build-tools/xx.x.x/ ディレクトリに配置されます。
署名の有効性を検証
最も基本的な検証コマンド:
apksigner verify --verbose Binance.apk
正常な出力:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Number of signers: 1
どれか一つでも false の場合、署名に問題がある(APKが破損しているか、改ざんされている)ことを示しています。
署名証明書の詳細を出力
apksigner verify --print-certs Binance.apk
出力例(フィンガープリントはダミー値):
Signer #1 certificate DN: CN=Binance Holdings Limited, O=Binance, L=George Town, ST=Cayman, C=KY
Signer #1 certificate SHA-256 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90
Signer #1 certificate SHA-1 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90:11:22:33
Signer #1 certificate MD5 digest:
a1:b2:c3:d4:e5:f6:07:18:29:3a:4b:5c:6d:7e:8f:90
以下の3つのフィールドに注目してください:
- certificate DN:"Binance Holdings Limited" またはそれに類する公式名称が含まれていること
- SHA-256 digest:Binance公式サイトで公表されている値と完全に一致していること
- Signer 数量:1であること(複数の署名者がいる場合、二次署名された可能性があります)
あなたが計算したSHA-256と公式サイトの数値を比較し、一文字残らず一致している必要があります。
方法2:keytoolで検証する
keytoolはJDKに付属するツールなので、追加インストールの必要はありません(Javaがインストールされていれば使えます)。
証明書のエクスポート
まずAPKをZIPファイルとして解凍し、META-INF/ ディレクトリ内にある証明書ファイル(通常は CERT.RSA または BINANCE.RSA)を見つけます:
unzip -p Binance.apk META-INF/CERT.RSA > cert.rsa
証明書のフィンガープリントを表示
keytool -printcert -file cert.rsa
出力例:
Owner: CN=Binance Holdings Limited, O=Binance, L=George Town
Issuer: CN=Binance Holdings Limited, O=Binance, L=George Town
Serial number: abc123def456
Valid from: Mon Jan 01 00:00:00 UTC 2020 until: Sat Dec 31 23:59:59 UTC 2049
Certificate fingerprints:
SHA1: A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90:11:22:33:44
SHA256: A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90:A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F:90
Signature algorithm name: SHA256withRSA
Version: 3
ここでもSHA256フィンガープリントを公式サイトの公表値と比較します。
方法3:オンラインツールで検証する
コマンドラインツールをインストールしていない場合は、オンラインのAPK分析ツールを使用できます:
- APK Analyzer 系のサイト(信頼できるものを選んでください)
- AppMoD、APKMirror などの署名検証機能
APKをアップロードすると、SHA-256フィンガープリントを含む署名情報が表示されます。
プライバシーリスクに注意:APKをサードパーティのサイトにアップロードすることは、ファイルを彼らに渡すことと同じです。Binance APK自体にはあなたの個人データは含まれていませんが、以下の点をお勧めします:
- 有名で評判の良いオンラインツールのみを使用する
- 検証後、相手がアップロードしたファイルを自動的に削除すること
- 電話番号やアカウントに関連するアプリではオンライン検証を避ける
方法4:スマホで直接検証する
パソコンを使わない手軽な方法:信頼できるアプリストアからパッケージ情報確認系のアプリをインストールし、開いてBinanceを選択します。その中の「署名情報」や「証明書情報」という項目で、SHA-256フィンガープリントを確認できます。
この方法の前提は、お使いのスマホに入っている情報確認アプリ自体が信頼できることです。
検証プロセスの完全なサイクル
推奨される完全な検証プロセス:
- binance.comからAPKをダウンロードする
- APKのファイルサイズをメモし、公式サイトの公表値と比較する(80〜90MBのはずです)
apksigner verifyを実行して署名が有効であることを確認するapksigner verify --print-certsを実行してSHA-256を取得する- 公式サイトが公表しているSHA-256と比較する
- 完全に一致した場合のみインストールする
- インストール後、パッケージ名が
com.binance.devであるか確認する
これら7つのステップを踏めば、99.99%の確率でAPKがオリジナルであると確信できます。
よくある質問
Q1: Binance公式が公表しているSHA-256フィンガープリントはどこにありますか?
A:Binance公式は、ヘルプセンターの「APKの真偽を検証する方法」ページで公表しています。キーローテーションが行われた場合、時期によってメインの署名が異なることがありますが、公式サイトには有効な過去のすべての署名がリストアップされています。見つからない場合はBinanceのカスタマーサポートに直接連絡して取得し、サードパーティのサイトにある「フィンガープリント」を参考にしないでください。
Q2: SHA-1とSHA-256ではどちらが信頼できますか?
A:SHA-256の方が信頼性が高いです。SHA-1は理論上衝突の脆弱性があることが証明されており、安全確認の唯一の基準として使用すべきではありません。ただし、APK署名のような非機密性の高いシナリオでは、SHA-1の衝突難易度は依然として非常に高いです。実際の使用では両方を比較する方がより安全です。MD5だけを見るのは絶対にやめてください——MD5は完全に破られています。
Q3: バージョンが異なる2つのBinance APKで、署名フィンガープリントは同じであるべきですか?
A:完全に同じであるべきです。同じ署名証明書を使用しているからです。v2.91.0とv2.92.0の2つのバージョンのAPK署名を比較した場合、SHA-256フィンガープリントは完全に一致しなければなりません。異なるのはAPKコンテンツ自体のハッシュだけで、証明書のフィンガープリントは変わりません。これが「同じ開発者」であると判断する根拠となります。
Q4: 署名検証を通過したのにアプリの動作が異常です。アプリに問題があるということですか?
A:署名検証の通過は、APKが改ざんされていないことを証明するだけであり、アプリ実行時のすべてが正常であることを証明するものではありません。署名が正しいのに動作が異常な場合、①システムのバージョンが非互換、②ネットワークの問題、③ローカルキャッシュの破損、④スマホ内の他のマルウェアがBinanceアプリに干渉している、などが考えられます。まずはアンインストールして再インストール + キャッシュのクリアを試してください。
Q5: iOSユーザーはどうやってアプリの真正性を検証すればいいですか?
A:iOSでは手動で署名を検証する必要はありません。Appleのサンドボックスの仕組み上、App StoreからダウンロードしたアプリはすべてAppleによって署名されており、システムが起動のたびに自動的に署名を検証します。改ざんされたアプリは普通のiPhoneでは実行できません。iOSユーザーが重視すべきは、公式のApp Storeからダウンロードしたことと、開発者が Binance Holdings Limited と表示されていることを確認することです。
署名検証は一度きりの投資
初めてapksignerの使い方を覚えるには10〜20分かかりますが、その後、新しいバージョンのAPKを検証するたびにわずか30秒しかかかりません。以下の2つのシナリオを比較してみてください:
- 検証しないコスト:万が一偽アプリをインストールしてしまい、資産が盗まれると、被害額は数千から数十万に及ぶ可能性がある
- 検証するコスト:アップデートのたびに30秒余分に時間をかける
数学的な期待値から見ても、APK署名の検証はリターンの非常に高い習慣です。1,000ドル以上の暗号資産を保有しているユーザーにとって、これはアプリを更新するたびの標準手順であるべきです。
コマンドラインが面倒だと感じる場合は、少なくとも以下の基本的な2つの手順を行ってください:
- binance.comからのみダウンロードする
- インストール後、パッケージ名が
com.binance.devであることを確認する
この2つのステップだけで、偽物アプリの大部分を防ぐことができ、あなたの資産をもう一段階保護することができます。