私はセキュリティと暗号化の初心者ですが、Androidアプリケーションを開発していて、Androidセキュリティメカニズムについてさらに詳しく知りたいと思っています。理解しようとしています。 CERT.rsa(私はこのキーペアからの公開キーを知っています)とパッケージマネージャーによって返された署名がどのように相互接続されているか。
PackageInfo packageInfo = appContext.getPackageManager().getPackageInfo(appContext.getPackageName(), PackageManager.GET_SIGNATURES);
Signature[] signatures = packageInfo.signatures;
Log.d(TAG,"Signature" + signatures[0].toString());
パッケージマネージャーで署名を取得する場合、長さが700を超えるバイトの配列を取得します。自己署名デバッグキーの場合は、次のようになります。
bytes[48, -126, 3, 13, 48, -126, 1, -11, -96, 3, 2, 1, 2, 2, 4, 102, -106, 43, -72, 48, 13, 6, 9, ...........
META-INFフォルダーから公開鍵CERT.rsaファイルに関する情報を抽出して表示しようとしました。
次のコマンドを使用して取得しました。
openssl pkcs7 -in CERT
.RSA -print_certs -inform DER -out foo.cer
私のfoo.certファイルには次の情報が含まれています
subject=/C=US/O=Android/CN=Android Debug
issuer=/C=US/O=Android/CN=Android Debug
-----BEGIN CERTIFICATE-----
MIIDDTCCAfWgAwIBAgIEZpYruDANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJV
UzEQMA4GA1UEChMHQW5.......
または16進数で30 82 01 0A 02 82 01 01 00 8A 24 24 1A F1 0B 5D 85 56 FE 35 17 50 90 5E F9 BF BA 2D 36 83 3C 0A 9A 56 4B 91 71 3A 48 E3 CB CE 25 73 76 C4 7F 1C 8B A7 5C F0 C3 52 6D E0 35 5A CC 10 C3 54 E5 DE 57 80 BF 6E
私の主な質問は次のとおりです。PackageManagerはこの署名情報をどこで取得しますか?
これは、次のコマンドの16進数の最後のブロックです。
openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text