https://signal.org/Android/apk/ からシグナルアプリをダウンロードしました。ダウンロードを確認するために、フィンガープリントが提供されています。しかし、この指紋をファイルでどのように確認できますか? sha256sum
ハッシュを検証しますが、指紋の場合、証明書または同様のものが必要ですか?
ダウンロードページのキーワードを逃しました:
APKの署名証明書がこのSHA256フィンガープリントと一致することを確認できます
(強調鉱山)
APKファイルは実際には単なるZipファイルなので、任意のアーカイブツールで開いて(私は7Zipを使用しています)、そこからMETA-INF\CERT.RSA
を抽出します。次に、証明書のフィンガープリントがサイトに書かれているものと一致することを確認できます。これは証明書全体のハッシュとも同じではないことに注意してください!確認するには、keytool
を使用する必要があります。
keytool
バイナリは、Java JDK(通常は%ProgramFiles%\Java\jdk_<version>\bin\
ディレクトリにあります)に含まれており、次のように使用できます。
keytool -printcert -file X:\Path\To\CERT.RSA
出力は次のようになります。
Owner: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Issuer: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Serial number: 4bfbebba
Valid from: Tue May 25 16:24:42 BST 2010 until: Tue May 16 16:24:42 BST 2045
Certificate fingerprints:
MD5: D9:0D:B3:64:E3:2F:A3:A7:BD:A4:C2:90:FB:65:E3:10
SHA1: 45:98:9D:C9:AD:87:28:C2:AA:9A:82:FA:55:50:3E:34:A8:87:93:74
SHA256: 29:F3:4E:5F:27:F2:11:B4:24:BC:5B:F9:D6:71:62:C0:EA:FB:A2:DA:35:AF:35:C1:64:16:FC:44:62:76:BA:26
Signature algorithm name: SHA1withRSA
Version: 3
SHA256フィンガープリントが、サイトで確認したものと一致していることがわかります。
これを確認したら、AndroidデバイスにAPKをインストールします。APK内の署名証明書が、Signalが期待するものと一致することを確認したので、その後、Androidオペレーティングシステムを使用して、APKが適切に署名されていることを検証できます。それ以外の場合は、APKをロードできません。
APKファイルを確認する正しい方法は、Android SDKのapksigner
を使用することです。
keytool
に基づく他の回答とは異なり、apksigner
には2つの大きな利点があります。
keytool
を使用してチェックできません。apksigner
はAndroidビルドツールの一部であるため、インストールされているビルドツールのバージョンごとに1つずつ、複数のバージョンがインストールされている場合があります。
Android SDKからapksigner
へのパスの例は次のとおりです。
Android-sdk/build-tools/29.0.2/apksigner
この方法でapksignerを実行します。
apksigner verify --verbose --print-certs "Signal-website-universal-release-4.49.13.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
Signer #1 certificate DN: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Signer #1 certificate SHA-256 digest: 29f34e5f27f211b424bc5bf9d67162c0eafba2da35af35c16416fc446276ba26
Signer #1 certificate SHA-1 digest: 45989dc9ad8728c2aa9a82fa55503e34a8879374
Signer #1 certificate MD5 digest: d90db364e32fa3a7bda4c290fb65e310
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 1024
Signer #1 public key SHA-256 digest: 75336a3cc9edb64202cd77cd4caa6396a9b5fc3c78c58660313c7098ea248a55
Signer #1 public key SHA-1 digest: b46cbed18d6fbbe42045fdb93f5032c943d80266
Signer #1 public key MD5 digest: 0f9c33bbd45db0218c86ac378067538d
<skipped a lot of warnings>
これでAPKの確認は完了しましたが、APKファイルに署名した個人/組織を信頼できるかどうかはまだわかりません。これは、Android APK署名が定義により自己署名証明書を使用するためです。したがって、証明書を信頼できるかどうかは難しい質問です。唯一の方法は、使用して署名された他のアプリを確認することです同じ証明書。
私が知っている唯一の方法は、PlayStoreクロールサービスandroidobservatory.orgを使用することです。証明書SHA-1ダイジェストを使用して、同じ証明書で署名されているアプリを確認するためのAPIがあります。
https://androidobservatory.org/cert/45989DC9AD8728C2AA9A82FA55503E34A8879374
このページでは、同じ証明書で署名されたGoogle Playストアの他のすべてのAPKファイルを確認できます。
開けないでください。提供されている例のように、ターミナルでコマンドとして使用する必要があります
keytool -printcert -file X:\Path\To\CERT.RSA