Android key attestation
by xiangxiang
PKI的东西总是让人很头疼
- 0x00 refs
- 0x01 Attestation
- 0x02 Generate Android Key Pair with Attestation
- 0x03 Android Key Attestation Vulnerabilities?
0x00 refs
- https://developer.android.com/privacy-and-security/security-key-attestation
-
https://fidoalliance.org/fido-technotes-the-truth-about-attestation/
- https://developer.android.com/privacy-and-security/keystore
-
https://source.android.com/docs/security/features/keystore
- https://android-developers.googleblog.com/2022/03/upgrading-android-attestation-remote.html
- https://xdaforums.com/t/spoof-locked-bootloader-bypass-tee-check.4586251/
- https://github.com/vvb2060/KeyAttestation
-
https://github.com/chiteroman/PlayIntegrityFix
- https://jbp.io/2014/04/07/android-keystore-leak.html
0x01 Attestation
- what is attestation? It is a key pair that is burned into the device during manufacturing time that is specific to a device model
-
FIDO: Please note that attestation is supposed to be unique to a device model, not an individual device.
-
During registration, a new public key is created and signed by an attestation private key that was created with the device
- Attestation accomplishes two things
- if an attacker intercepts a registration message with their own, they would not be able to swap out the new public key with their own since the attestation signature wouldn’t match; (简单的替换而非完整的证书链)
- it allows the service to trust that it knows the provenance of the authenticator being used.
0x02 Generate Android Key Pair with Attestation
2.1 Code
- https://developer.android.com/privacy-and-security/keystore#GeneratingANewPrivateKey
-
https://source.android.com/docs/security/features/keystore/attestation#expandable-1
- 主要参考keystore开发文档
- 首先确定使用keychain还是Android Keystore provider
- 对于公私密钥对用于签名的场景先生成公私密钥对然后调用
KeyStore.setKeyEntry()
更换私钥对应的证书为CA签发的证 - 后续可以通过alias在keystore中获取密钥然后使用
- 在调用密钥时可以加入用户认证
- 注意生成的cert3(根证书)与Google公开的一致
/**
* generates a key pair and requests an attestation.
* <a href="https://source.android.com/docs/security/features/keystore/attestation#expandable-1">Google官方说明</a>
*/
public static KeyPair generateKeyPairWithAttestation(String keyAlias, byte[] challenge)
throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
keyPairGenerator.initialize(
new KeyGenParameterSpec.Builder(keyAlias, KeyProperties.PURPOSE_SIGN)
// using the NIST P-256 curve
.setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
.setDigests(KeyProperties.DIGEST_SHA256,
KeyProperties.DIGEST_SHA384,
KeyProperties.DIGEST_SHA512)
// Only permit the private key to be used if the user
// authenticated within the last five minutes.
.setUserAuthenticationRequired(true)
.setUserAuthenticationValidityDurationSeconds(5 * 60)
// Request an attestation with challenge "hello world".
.setAttestationChallenge(challenge)
.build());
// Generate the key pair. This will result in calls to both generate_key() and
// attest_key() at the keymaster2 HAL.
return keyPairGenerator.generateKeyPair();
}
// 以下为调用逻辑
// 实践中, challenge需要服务端生成且必须为nonce
byte[] challenge = Long.toString(new Date().getTime()).getBytes();
String keyAlias = "xx-demo";
KeyPair kp = AttestationKeyHelper.generateKeyPairWithAttestation(keyAlias, challenge);
binding.keyPairWithAttestationGenerated.setText("生成公私密钥成功: " + new String(Base64.getEncoder().encode(kp.getPublic().getEncoded())));
// 这里无法获取私钥并打印
// Get the certificate chain
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Certificate[] certs = keyStore.getCertificateChain(keyAlias);
// 经过验证, 相同keyAlias返回的证书链一致
// certs[0] is the attestation certificate. certs[1] signs certs[0], etc.,
// up to certs[certs.length - 1].
2.2 Pixel 3A with locked BL
- 在pixel 3A会生成如下的证书链
- cert0为attestation certificate, attestation扩展字段的ASN.1 schema
2.2.1 cert 0
- 使用https://lapo.it/asn1js/解析cert0的扩展字段
- attestation扩展字段的ASN.1 schema
-----BEGIN CERTIFICATE-----
MIICojCCAkmgAwIBAgIBATAKBggqhkjOPQQDAjApMRkwFwYDVQQFExAxYzE3MmFlOWViMmMyNzg3MQwwCgYDVQQMDANURUUwIBcNNzAwMTAxMDAwMDAwWhgPMjEwNjAyMDcwNjI4MTVaMB8xHTAbBgNVBAMMFEFuZHJvaWQgS2V5c3RvcmUgS2V5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr2XbCNUn04ZSHjZHDuGATFNHaatKYD64xVxq0hbXE/B/rVNN4mQbfMEehrZtD0clG9n0DTIBU7DhZJuk0z23RKOCAWgwggFkMA4GA1UdDwEB/wQEAwIHgDCCAVAGCisGAQQB1nkCAREEggFAMIIBPAIBAwoBAQIBBAoBAQQbY2hhbGxlbmdlLXNob3VsZC1iZS1hLW5vbmNlBAAwXL+FPQgCBgFqCA+sML+FRUwESjBIMSIwIAQbY29tLnNoZW4xOTkxLmtleWF0dGVzdGF0aW9uAgEBMSIEIPwsiTcXTYF4XlKEOAs8vctVWTQqaeQAXaykAXYuonKDMIGwoQUxAwIBAqIDAgEDowQCAgEApQsxCQIBBAIBBQIBBqoDAgEBv4N4AwIBA7+DeQQCAgEsv4U+AwIBAL+FQEwwSgQgjKia8abap0sAgQhJNW3pKc/ESY7zavlkdXveihE79G0BAf8KAQAEIE1O53kDZ6JaRR6DWQ2I5FciNcCllfhTZtmBJuUr33hBv4VBBQIDAdTAv4VCBQIDAxXdv4VOBgIEATSKWb+FTwYCBAE0ilkwCgYIKoZIzj0EAwIDRwAwRAIgF4eShdyYw0HHxfaFtOnVUrCP3+IuQsyIv74uPvK1h90CIBGv/4R2bDW53IRbt9j9yUpiR6esT6Ee3LvCRxps9klA
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: ecdsa-with-SHA256
Issuer: serialNumber = 1c172ae9eb2c2787, title = TEE
Validity
Not Before: Jan 1 00:00:00 1970 GMT
Not After : Feb 7 06:28:15 2106 GMT
Subject: CN = Android Keystore Key
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:af:65:db:08:d5:27:d3:86:52:1e:36:47:0e:e1:
80:4c:53:47:69:ab:4a:60:3e:b8:c5:5c:6a:d2:16:
d7:13:f0:7f:ad:53:4d:e2:64:1b:7c:c1:1e:86:b6:
6d:0f:47:25:1b:d9:f4:0d:32:01:53:b0:e1:64:9b:
a4:d3:3d:b7:44
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature
1.3.6.1.4.1.11129.2.1.17:
0..<...
.....
....challenge-should-be-a-nonce..0\..=....j...0..EL.J0H1"0 ..com.shen1991.keyattestation...1". .,.7.M.x^R.8.<..UY4*i..]...v..r.0....1.................1.................x......y....,..>......@L0J. .......K...I5m.)..I..j.du{...;.m...
..W"5....Sf..&.+.xA..A........B........N....4.Y..O....4.Y
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:44:02:20:17:87:92:85:dc:98:c3:41:c7:c5:f6:85:b4:e9:
d5:52:b0:8f:df:e2:2e:42:cc:88:bf:be:2e:3e:f2:b5:87:dd:
02:20:11:af:ff:84:76:6c:35:b9:dc:84:5b:b7:d8:fd:c9:4a:
62:47:a7:ac:4f:a1:1e:dc:bb:c2:47:1a:6c:f6:49:40
PrivateKeyInfo SEQUENCE (8 elem)
version Version INTEGER 3
privateKeyAlgorithm AlgorithmIdentifier [?] ENUMERATED 1
privateKey PrivateKey [?] INTEGER 4
ENUMERATED 1
OCTET STRING (27 byte) challenge-should-be-a-nonce
Offset: 16
Length: 2+27
Value:
(27 byte)
challenge-should-be-a-nonce
OCTET STRING (0 byte)
SEQUENCE (2 elem)
[701] (1 elem)
INTEGER (41 bit) 1554913406000
[709] (1 elem)
OCTET STRING (74 byte) 304831223020041B636F6D2E7368656E313939312E6B65796174746573746174696F6E…
SEQUENCE (2 elem)
SET (1 elem)
SEQUENCE (2 elem)
OCTET STRING (27 byte) com.shen1991.keyattestation
INTEGER 1
SET (1 elem)
OCTET STRING (32 byte) FC2C8937174D81785E5284380B3CBDCB5559342A69E4005DACA401762EA27283
SEQUENCE (13 elem)
[1] (1 elem)
SET (1 elem)
INTEGER 2
[2] (1 elem)
INTEGER 3
[3] (1 elem)
INTEGER 256
[5] (1 elem)
SET (3 elem)
INTEGER 4
INTEGER 5
INTEGER 6
[10] (1 elem)
INTEGER 1
[504] (1 elem)
INTEGER 3
[505] (1 elem)
INTEGER 300
[702] (1 elem)
INTEGER 0
[704] (1 elem)
SEQUENCE (4 elem)
OCTET STRING (32 byte) 8CA89AF1A6DAA74B00810849356DE929CFC4498EF36AF964757BDE8A113BF46D
BOOLEAN true
ENUMERATED 0
OCTET STRING (32 byte) 4D4EE7790367A25A451E83590D88E4572235C0A595F85366D98126E52BDF7841
[705] (1 elem)
INTEGER 120000
[706] (1 elem)
INTEGER 202205
[718] (1 elem)
INTEGER 20220505
[719] (1 elem)
INTEGER 20220505
2.2.2 cert 1
-----BEGIN CERTIFICATE-----
MIICJjCCAaugAwIBAgIKBQEZiXBZcGSUkTAKBggqhkjOPQQDAjApMRkwFwYDVQQFExA0NDNkMjI4NGU5NmFiMjNiMQwwCgYDVQQMDANURUUwHhcNMTgxMjAzMjIzNDM1WhcNMjgxMTMwMjIzNDM1WjApMRkwFwYDVQQFExAxYzE3MmFlOWViMmMyNzg3MQwwCgYDVQQMDANURUUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARUwB/D1Rb36KHnHZLegpyGlDdTlST1sf8qihs4afBp3Ph0Sbhhl/elouosSJppGpQ/eVHbMWV4NPX2EoiSKx4so4G6MIG3MB0GA1UdDgQWBBTF3ye+of2SeZJfghuQeyomYK+IPDAfBgNVHSMEGDAWgBTz+kTekgvidiuHITJW3HWiylgVkzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDBUBgNVHR8ETTBLMEmgR6BFhkNodHRwczovL2FuZHJvaWQuZ29vZ2xlYXBpcy5jb20vYXR0ZXN0YXRpb24vY3JsLzA1MDExOTg5NzA1OTcwNjQ5NDkxMAoGCCqGSM49BAMCA2kAMGYCMQDtW3tf/nIrThg6cbXyc8olLRV2t3/cvRp93zarRz6FDRrciKTcsimjwJ/8ZPMJNoUCMQCjEzXW6ZRIauWs3hy53eOtSzFHO5ZqZuDyWnyY6AEoX+/Us1wZgbUxT1U/Sr27F8M=
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
05:01:19:89:70:59:70:64:94:91
Signature Algorithm: ecdsa-with-SHA256
Issuer: serialNumber = 443d2284e96ab23b, title = TEE
Validity
Not Before: Dec 3 22:34:35 2018 GMT
Not After : Nov 30 22:34:35 2028 GMT
Subject: serialNumber = 1c172ae9eb2c2787, title = TEE
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:54:c0:1f:c3:d5:16:f7:e8:a1:e7:1d:92:de:82:
9c:86:94:37:53:95:24:f5:b1:ff:2a:8a:1b:38:69:
f0:69:dc:f8:74:49:b8:61:97:f7:a5:a2:ea:2c:48:
9a:69:1a:94:3f:79:51:db:31:65:78:34:f5:f6:12:
88:92:2b:1e:2c
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Subject Key Identifier:
C5:DF:27:BE:A1:FD:92:79:92:5F:82:1B:90:7B:2A:26:60:AF:88:3C
X509v3 Authority Key Identifier:
F3:FA:44:DE:92:0B:E2:76:2B:87:21:32:56:DC:75:A2:CA:58:15:93
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
X509v3 CRL Distribution Points:
Full Name:
URI:https://android.googleapis.com/attestation/crl/05011989705970649491
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:66:02:31:00:ed:5b:7b:5f:fe:72:2b:4e:18:3a:71:b5:f2:
73:ca:25:2d:15:76:b7:7f:dc:bd:1a:7d:df:36:ab:47:3e:85:
0d:1a:dc:88:a4:dc:b2:29:a3:c0:9f:fc:64:f3:09:36:85:02:
31:00:a3:13:35:d6:e9:94:48:6a:e5:ac:de:1c:b9:dd:e3:ad:
4b:31:47:3b:96:6a:66:e0:f2:5a:7c:98:e8:01:28:5f:ef:d4:
b3:5c:19:81:b5:31:4f:55:3f:4a:bd:bb:17:c3
2.2.3 cert 2
-----BEGIN CERTIFICATE-----
MIID0TCCAbmgAwIBAgIKA4gmZ2BliZaFzjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MB4XDTE4MTIwMzIyMjQxNFoXDTI4MTEzMDIyMjQxNFowKTEZMBcGA1UEBRMQNDQzZDIyODRlOTZhYjIzYjEMMAoGA1UEDAwDVEVFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE2tYXAmHqxDPYOcCe0QQ4/aMQ1kpkOFpiBsNnnfs0nsOR5ywGNHAbRNqWSKr8FYh/GuspoW2rT5JE3WLjAF9kHEQrOJ8HTThxJS9fl2VAfQS/2gJ64oHBabj6XB5qiqfAo4G2MIGzMB0GA1UdDgQWBBTz+kTekgvidiuHITJW3HWiylgVkzAfBgNVHSMEGDAWgBQ2YeEAfIgFCVGLRGxH/xpMyepPEjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwczovL2FuZHJvaWQuZ29vZ2xlYXBpcy5jb20vYXR0ZXN0YXRpb24vY3JsL0U4RkExOTYzMTREMkZBMTgwDQYJKoZIhvcNAQELBQADggIBAB9OWP309acpcELw3KHF5LrHsNLYfJsaAzem4gQplevmQlTfVQnok3h5zfmB99TgtlcOfTEO3SLZO4MwjK0oBVBL3AVxGN99+1WLjDEHm35hVqzFEZ93N41boFso+448hpl43BFJwRkAUg5NJ3vgrvGgPW7UhWSYE92ao+p5qmwzZlcIloX+tEVTR6yzowYlpYMacx5IKovoUX9DmATbufSt9iH65gtiJ4CmGM/U6qyMc7rPeA+eaW65NwRkRMOM3fKBSIdR1cde5nG62kkOchbJdGwyXM+Ux/zuCiXyyV0R7HMpmM3siOjDbP6lnGIt70iGVMaQ2JECy7GjAOaHOWZf1kUvZWDg6d15DsuHEDtk/oJIt6dtJ57kGJdhO0DtB3P5zW9VhjsUHrbdYCdzP0Fy5CNJFGo8c83f8yzQknLeGbAFFxHEhEff0F3rbneC26mU9UVaAcKo+o8HH1qnI0Twp9fieMUAwaiWfkjpkvzhl5nuFu4740eV1zC9zX9cGH9MMupoDrRvI42Djhd/7W6KJ1MQWu/7m/Xst7DeBTJSri++ZPcYtxuLpHiZEuvIzYBLGbLAjQ0OkDo/KDVtRrradd1P4746PW9Zfk6I3ALRjLrUT+q4UICLh+o+dtXTN0pNzlSqKWpV6yaFscwRQ4fdZ0grBzo0pbudDU26JmTm
-----END CERTIFICATE-----
Certificate 2:
Data:
Version: 3 (0x2)
Serial Number:
03:88:26:67:60:65:89:96:85:ce
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: Dec 3 22:24:14 2018 GMT
Not After : Nov 30 22:24:14 2028 GMT
Subject: serialNumber = 443d2284e96ab23b, title = TEE
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (384 bit)
pub:
04:da:d6:17:02:61:ea:c4:33:d8:39:c0:9e:d1:04:
38:fd:a3:10:d6:4a:64:38:5a:62:06:c3:67:9d:fb:
34:9e:c3:91:e7:2c:06:34:70:1b:44:da:96:48:aa:
fc:15:88:7f:1a:eb:29:a1:6d:ab:4f:92:44:dd:62:
e3:00:5f:64:1c:44:2b:38:9f:07:4d:38:71:25:2f:
5f:97:65:40:7d:04:bf:da:02:7a:e2:81:c1:69:b8:
fa:5c:1e:6a:8a:a7:c0
ASN1 OID: secp384r1
NIST CURVE: P-384
X509v3 extensions:
X509v3 Subject Key Identifier:
F3:FA:44:DE:92:0B:E2:76:2B:87:21:32:56:DC:75:A2:CA:58:15:93
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
X509v3 CRL Distribution Points:
Full Name:
URI:https://android.googleapis.com/attestation/crl/E8FA196314D2FA18
Signature Algorithm: sha256WithRSAEncryption
2.2.4 cert 3
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIJAOj6GWMU0voYMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNVBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTYwNTI2MTYyODUyWhcNMjYwNTI0MTYyODUyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdSSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggjnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGqC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQoVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+OJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/EgsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRiigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+MRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9EaDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5UmAGMCAwEAAaOBpjCBozAdBgNVHQ4EFgQUNmHhAHyIBQlRi0RsR/8aTMnqTxIwHwYDVR0jBBgwFoAUNmHhAHyIBQlRi0RsR/8aTMnqTxIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZWFwaXMuY29tL2F0dGVzdGF0aW9uL2NybC8wDQYJKoZIhvcNAQELBQADggIBACDIw41L3KlXG0aMiS//cqrG+EShHUGo8HNsw30W1kJtjn6UBwRM6jnmiwfBPb8VA91chb2vssAtX2zbTvqBJ9+LBPGCdw/E53Rbf86qhxKaiAHOjpvAy5Y3m00mqC0w/Zwvju1twb4vhLaJ5NkUJYsUS7rmJKHHBnETLi8GFqiEsqTWpG/6ibYCv7rYDBJDcR9W62BW9jfIoBQcxUCUJouMPH25lLNcDc1ssqvC2v7iUgI9LeoM1sNovqPmQUiG9rHli1vXxzCyaMTjwftkJLkf6724DFhuKug2jITV0QkXvaJWF4nUaHOTNA4uJU9WDvZLI1j83A+/xnAJUucIv/zGJ1AMH2boHqF8CY16LpsYgBt6tKxxWH00XcyDCdW2KlBCeqbQPcsFmWyWugxdcekhYsAWyoSf818NUsZdBWBaR/OukXrNLfkQ79IyZohZbvabO/X+MVT3rriAoKc8oE2Uws6DF+60PV7/WIPjNvXySdqspImSN78mflxDqwLqRBYkA3I75qppLGG9rp7UCdRjxMl8ZDBld+7yvHVgt1cVzJx9xnyGCC23UaicMDSXYrB4I4WHXPGjxhZuCuPBLTdOLU8YRvMYdEvYebWHMpvwGCF6bAx3JBpIeOQ1wDB5y0USicV3YgYGmi+NZfhA4URSh77Yd6uuJOJENRaNVTzk
-----END CERTIFICATE-----
Certificate 3:
Data:
Version: 3 (0x2)
Serial Number:
e8:fa:19:63:14:d2:fa:18
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: May 26 16:28:52 2016 GMT
Not After : May 24 16:28:52 2026 GMT
Subject: serialNumber = f92009e853b6b045
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:af:b6:c7:82:2b:b1:a7:01:ec:2b:b4:2e:8b:cc:
54:16:63:ab:ef:98:2f:32:c7:7f:75:31:03:0c:97:
52:4b:1b:5f:e8:09:fb:c7:2a:a9:45:1f:74:3c:bd:
9a:6f:13:35:74:4a:a5:5e:77:f6:b6:ac:35:35:ee:
17:c2:5e:63:95:17:dd:9c:92:e6:37:4a:53:cb:fe:
25:8f:8f:fb:b6:fd:12:93:78:a2:2a:4c:a9:9c:45:
2d:47:a5:9f:32:01:f4:41:97:ca:1c:cd:7e:76:2f:
b2:f5:31:51:b6:fe:b2:ff:fd:2b:6f:e4:fe:5b:c6:
bd:9e:c3:4b:fe:08:23:9d:aa:fc:eb:8e:b5:a8:ed:
2b:3a:cd:9c:5e:3a:77:90:e1:b5:14:42:79:31:59:
85:98:11:ad:9e:b2:a9:6b:bd:d7:a5:7c:93:a9:1c:
41:fc:cd:27:d6:7f:d6:f6:71:aa:0b:81:52:61:ad:
38:4f:a3:79:44:86:46:04:dd:b3:d8:c4:f9:20:a1:
9b:16:56:c2:f1:4a:d6:d0:3c:56:ec:06:08:99:04:
1c:1e:d1:a5:fe:6d:34:40:b5:56:ba:d1:d0:a1:52:
58:9c:53:e5:5d:37:07:62:f0:12:2e:ef:91:86:1b:
1b:0e:6c:4c:80:92:74:99:c0:e9:be:c0:b8:3e:3b:
c1:f9:3c:72:c0:49:60:4b:bd:2f:13:45:e6:2c:3f:
8e:26:db:ec:06:c9:47:66:f3:c1:28:23:9d:4f:43:
12:fa:d8:12:38:87:e0:6b:ec:f5:67:58:3b:f8:35:
5a:81:fe:ea:ba:f9:9a:83:c8:df:3e:2a:32:2a:fc:
67:2b:f1:20:b1:35:15:8b:68:21:ce:af:30:9b:6e:
ee:77:f9:88:33:b0:18:da:a1:0e:45:1f:06:a3:74:
d5:07:81:f3:59:08:29:66:bb:77:8b:93:08:94:26:
98:e7:4e:0b:cd:24:62:8a:01:c2:cc:03:e5:1f:0b:
3e:5b:4a:c1:e4:df:9e:af:9f:f6:a4:92:a7:7c:14:
83:88:28:85:01:5b:42:2c:e6:7b:80:b8:8c:9b:48:
e1:3b:60:7a:b5:45:c7:23:ff:8c:44:f8:f2:d3:68:
b9:f6:52:0d:31:14:5e:bf:9e:86:2a:d7:1d:f6:a3:
bf:d2:45:09:59:d6:53:74:0d:97:a1:2f:36:8b:13:
ef:66:d5:d0:a5:4a:6e:2f:5d:9a:6f:ef:44:68:32:
bc:67:84:47:25:86:1f:09:3d:d0:e6:f3:40:5d:a8:
96:43:ef:0f:4d:69:b6:42:00:51:fd:b9:30:49:67:
3e:36:95:05:80:d3:cd:f4:fb:d0:8b:c5:84:83:95:
26:00:63
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 CRL Distribution Points:
Full Name:
URI:https://android.googleapis.com/attestation/crl/
Signature Algorithm: sha256WithRSAEncryption
2.3 XAGA with unlocked BL(TEE not Broken)
2.3.1 cert 0
- 使用https://lapo.it/asn1js/解析cert0的扩展字段
- attestation扩展字段的ASN.1 schema
-----BEGIN CERTIFICATE-----
MIICkTCCAjegAwIBAgIBATAKBggqhkjOPQQDAjA5MQwwCgYDVQQMDANURUUxKTAnBgNVBAUTIDMyYzc4ZjNhYTE0NDM3YTM1YTRhOGQyZjJhMWJlOWVjMB4XDTcwMDEwMTAwMDAwMFoXDTQ4MDEwMTAwMDAwMFowHzEdMBsGA1UEAxMUQW5kcm9pZCBLZXlzdG9yZSBLZXkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS1JKLq7yJVPPEea74NxKRnBJQbWWMB9jsVdyKt7Qrw+TvxDRZSmyq2mnkLNKFN/ev6yZGF8mMTPzUPMW0yGe/Co4IBSDCCAUQwDgYDVR0PAQH/BAQDAgeAMIIBMAYKKwYBBAHWeQIBEQSCASAwggEcAgFkCgEBAgFkCgEBBBtjaGFsbGVuZ2Utc2hvdWxkLWJlLWEtbm9uY2UEADBQv4VFTARKMEgxIjAgBBtjb20uc2hlbjE5OTEua2V5YXR0ZXN0YXRpb24CAQExIgQg/CyJNxdNgXheUoQ4Czy9y1VZNCpp5ABdrKQBdi6icoMwgZyhBTEDAgECogMCAQOjBAICAQClCzEJAgEEAgEFAgEGqgMCAQG/g3gDAgEDv4N5BAICASy/hT4DAgEAv4VATDBKBCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAoBAgQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/hUEFAgMB1MC/hUIFAgMDFeIwCgYIKoZIzj0EAwIDSAAwRQIhAN5kZiQu/vmf+IYhcESEnfN2vVQtsdu9SCjV0O2x7vZIAiB85VmBJC72GGrNogRVGfjcQZuz5GeRsIwnZe1djQbcRg==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: ecdsa-with-SHA256
Issuer: title = TEE, serialNumber = 32c78f3aa14437a35a4a8d2f2a1be9ec
Validity
Not Before: Jan 1 00:00:00 1970 GMT
Not After : Jan 1 00:00:00 2048 GMT
Subject: CN = Android Keystore Key
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:b5:24:a2:ea:ef:22:55:3c:f1:1e:6b:be:0d:c4:
a4:67:04:94:1b:59:63:01:f6:3b:15:77:22:ad:ed:
0a:f0:f9:3b:f1:0d:16:52:9b:2a:b6:9a:79:0b:34:
a1:4d:fd:eb:fa:c9:91:85:f2:63:13:3f:35:0f:31:
6d:32:19:ef:c2
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature
1.3.6.1.4.1.11129.2.1.17:
0.....d
....d
....challenge-should-be-a-nonce..0P..EL.J0H1"0 ..com.shen1991.keyattestation...1". .,.7.M.x^R.8.<..UY4*i..]...v..r.0....1.................1.................x......y....,..>......@L0J. ...................................
... ..................................A........B......
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:45:02:21:00:de:64:66:24:2e:fe:f9:9f:f8:86:21:70:44:
84:9d:f3:76:bd:54:2d:b1:db:bd:48:28:d5:d0:ed:b1:ee:f6:
48:02:20:7c:e5:59:81:24:2e:f6:18:6a:cd:a2:04:55:19:f8:
dc:41:9b:b3:e4:67:91:b0:8c:27:65:ed:5d:8d:06:dc:46
SEQUENCE (8 elem)
INTEGER 100
ENUMERATED 1
INTEGER 100
ENUMERATED 1
OCTET STRING (27 byte) challenge-should-be-a-nonce
OCTET STRING (0 byte)
Offset: 45
Length: 2+0
(encapsulates)
Value:
(0 byte)
SEQUENCE (1 elem)
[709] (1 elem)
OCTET STRING (74 byte) 304831223020041B636F6D2E7368656E313939312E6B65796174746573746174696F6E…
SEQUENCE (2 elem)
SET (1 elem)
SEQUENCE (2 elem)
OCTET STRING (27 byte) com.shen1991.keyattestation
INTEGER 1
SET (1 elem)
OCTET STRING (32 byte) FC2C8937174D81785E5284380B3CBDCB5559342A69E4005DACA401762EA27283
SEQUENCE (11 elem)
[1] (1 elem)
SET (1 elem)
INTEGER 2
[2] (1 elem)
INTEGER 3
[3] (1 elem)
INTEGER 256
[5] (1 elem)
SET (3 elem)
INTEGER 4
INTEGER 5
INTEGER 6
[10] (1 elem)
INTEGER 1
[504] (1 elem)
INTEGER 3
[505] (1 elem)
INTEGER 300
[702] (1 elem)
INTEGER 0
[704] (1 elem)
SEQUENCE (4 elem)
OCTET STRING (32 byte) 0000000000000000000000000000000000000000000000000000000000000000
BOOLEAN false
ENUMERATED 2
OCTET STRING (32 byte) 0000000000000000000000000000000000000000000000000000000000000000
[705] (1 elem)
INTEGER 120000
[706] (1 elem)
INTEGER 202210
2.3.2 cert 1
-----BEGIN CERTIFICATE-----
MIIB9DCCAXmgAwIBAgIQUN87SJSOda+SnVBeOKa8xTAKBggqhkjOPQQDAjA5MQwwCgYDVQQMDANURUUxKTAnBgNVBAUTIDhlYTAzZjlmNzcyNWFhNDhkNzgzNzk1MzNiMzAxYmE5MB4XDTIyMDkxNzE3MjY0MFoXDTMyMDkxNDE3MjY0MFowOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQFEyAzMmM3OGYzYWExNDQzN2EzNWE0YThkMmYyYTFiZTllYzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNcguWZ/jyXncReCB/YYQqNN/H+ALJ+4Qz93qfPJHfH9Mi/2EUa7mcfxIBtJ7gq4ePXxc8BltxpQT1HK2rZw/S2jYzBhMB0GA1UdDgQWBBQvPKrC11Cu2K3ss9xi7lPWzOpdgDAfBgNVHSMEGDAWgBROmIZs7FoUHqyCiL59cV5zcOZydjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDAKBggqhkjOPQQDAgNpADBmAjEAxBKLv1M9iT6Gy189UT/PU2NgKtdLCeVmzGJpoaUBD2yximnR0/fZ+1HRfxddtl5GAjEA2HtyYI0IKLvh9MmNLxpYBM353SyLZ9yFB1Gb587u+/Mn3T2fYudQS8Vbglo5fWrc
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
50:df:3b:48:94:8e:75:af:92:9d:50:5e:38:a6:bc:c5
Signature Algorithm: ecdsa-with-SHA256
Issuer: title = TEE, serialNumber = 8ea03f9f7725aa48d78379533b301ba9
Validity
Not Before: Sep 17 17:26:40 2022 GMT
Not After : Sep 14 17:26:40 2032 GMT
Subject: title = TEE, serialNumber = 32c78f3aa14437a35a4a8d2f2a1be9ec
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:d7:20:b9:66:7f:8f:25:e7:71:17:82:07:f6:18:
42:a3:4d:fc:7f:80:2c:9f:b8:43:3f:77:a9:f3:c9:
1d:f1:fd:32:2f:f6:11:46:bb:99:c7:f1:20:1b:49:
ee:0a:b8:78:f5:f1:73:c0:65:b7:1a:50:4f:51:ca:
da:b6:70:fd:2d
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Subject Key Identifier:
2F:3C:AA:C2:D7:50:AE:D8:AD:EC:B3:DC:62:EE:53:D6:CC:EA:5D:80
X509v3 Authority Key Identifier:
4E:98:86:6C:EC:5A:14:1E:AC:82:88:BE:7D:71:5E:73:70:E6:72:76
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:66:02:31:00:c4:12:8b:bf:53:3d:89:3e:86:cb:5f:3d:51:
3f:cf:53:63:60:2a:d7:4b:09:e5:66:cc:62:69:a1:a5:01:0f:
6c:b1:8a:69:d1:d3:f7:d9:fb:51:d1:7f:17:5d:b6:5e:46:02:
31:00:d8:7b:72:60:8d:08:28:bb:e1:f4:c9:8d:2f:1a:58:04:
cd:f9:dd:2c:8b:67:dc:85:07:51:9b:e7:ce:ee:fb:f3:27:dd:
3d:9f:62:e7:50:4b:c5:5b:82:5a:39:7d:6a:dc
2.3.3 cert 2
-----BEGIN CERTIFICATE-----
MIIDlDCCAXygAwIBAgIRAJsbJTM0rFYTusNOKGA6buwwDQYJKoZIhvcNAQELBQAwGzEZMBcGA1UEBRMQZjkyMDA5ZTg1M2I2YjA0NTAeFw0yMjA5MTcxNzIzMzhaFw0zMjA5MTQxNzIzMzhaMDkxDDAKBgNVBAwMA1RFRTEpMCcGA1UEBRMgOGVhMDNmOWY3NzI1YWE0OGQ3ODM3OTUzM2IzMDFiYTkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARiTo/8v71cIEsKy224z2K7Hpn0woN4bM+3rLRCZ+pulfNmQjJbprsvdq9C2mBT1K50lKtwyASymKM6WsXZKaQ75hnFtAIFn0T1Bv/bNRqg3rSpVr1bDaZKrKjLrTQM0UOjYzBhMB0GA1UdDgQWBBROmIZs7FoUHqyCiL59cV5zcOZydjAfBgNVHSMEGDAWgBQ2YeEAfIgFCVGLRGxH/xpMyepPEjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDANBgkqhkiG9w0BAQsFAAOCAgEACJdpcp1R3EqCQTBa7y0Wf+HLU1DjEuHxXv9wBUrPBxjJl6wRMy32G9X9x0hNc0lqiiAKAuVi8UZOA7mKlM0nKOeu/Jkmpq+Boq/FHHgYtUSzGzvXZSfs0gtCJqD7LKLyTY2ScVsJgKUdbAyBOOjO2s97H/cbXX0zcL22x42KO/FoIrvsLWD57q/IOT44G3RA3nc6gQMYjGj3NdjDHdMfwA50x1x/C5JXiMqudWhVCilDPjkbxKgN9TZ2LqnmoVSLHi4M/JyxsjAEpMO2xGKvhJAGbMCBg8r8hiA33qMcKqryNbaYZyPwwTaTtvw0MhUq3KzZ1qjBvvJUOKk6xL9HxJH7Xt66fRJUJfkhz0qzNevRmTtANBaP8Wvj5eLk+m/n8cJlK6zHEXEH9tV+Oc5YQgh658fuFUGoFy72wGZWlRoA3eB8S1i1PI++uAlDLx2OdsOrbAx/ve9sl8yiy7xrZCKdpnogf85cu5BW4DmxUk9Is/FsE59D4GTIrIaIoYSJVE+zh8g6gZElfn0uey/BYGCsh3jGjOetwsG8HjNbeBxTh5Gksp2kfYPgXzFxUn8fXfqKxUip82646UsNcxBfMsPq6F8fy+zBoooJMtK5hDCN6KEp5tzyNxmPwhQL1TuGYROVrCAWVSey+YY8YHhCEuTBMw2RWgh+9v5osmHDtTE=
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9b:1b:25:33:34:ac:56:13:ba:c3:4e:28:60:3a:6e:ec
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: Sep 17 17:23:38 2022 GMT
Not After : Sep 14 17:23:38 2032 GMT
Subject: title = TEE, serialNumber = 8ea03f9f7725aa48d78379533b301ba9
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (384 bit)
pub:
04:62:4e:8f:fc:bf:bd:5c:20:4b:0a:cb:6d:b8:cf:
62:bb:1e:99:f4:c2:83:78:6c:cf:b7:ac:b4:42:67:
ea:6e:95:f3:66:42:32:5b:a6:bb:2f:76:af:42:da:
60:53:d4:ae:74:94:ab:70:c8:04:b2:98:a3:3a:5a:
c5:d9:29:a4:3b:e6:19:c5:b4:02:05:9f:44:f5:06:
ff:db:35:1a:a0:de:b4:a9:56:bd:5b:0d:a6:4a:ac:
a8:cb:ad:34:0c:d1:43
ASN1 OID: secp384r1
NIST CURVE: P-384
X509v3 extensions:
X509v3 Subject Key Identifier:
4E:98:86:6C:EC:5A:14:1E:AC:82:88:BE:7D:71:5E:73:70:E6:72:76
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
08:97:69:72:9d:51:dc:4a:82:41:30:5a:ef:2d:16:7f:e1:cb:
53:50:e3:12:e1:f1:5e:ff:70:05:4a:cf:07:18:c9:97:ac:11:
33:2d:f6:1b:d5:fd:c7:48:4d:73:49:6a:8a:20:0a:02:e5:62:
f1:46:4e:03:b9:8a:94:cd:27:28:e7:ae:fc:99:26:a6:af:81:
a2:af:c5:1c:78:18:b5:44:b3:1b:3b:d7:65:27:ec:d2:0b:42:
26:a0:fb:2c:a2:f2:4d:8d:92:71:5b:09:80:a5:1d:6c:0c:81:
38:e8:ce:da:cf:7b:1f:f7:1b:5d:7d:33:70:bd:b6:c7:8d:8a:
3b:f1:68:22:bb:ec:2d:60:f9:ee:af:c8:39:3e:38:1b:74:40:
de:77:3a:81:03:18:8c:68:f7:35:d8:c3:1d:d3:1f:c0:0e:74:
c7:5c:7f:0b:92:57:88:ca:ae:75:68:55:0a:29:43:3e:39:1b:
c4:a8:0d:f5:36:76:2e:a9:e6:a1:54:8b:1e:2e:0c:fc:9c:b1:
b2:30:04:a4:c3:b6:c4:62:af:84:90:06:6c:c0:81:83:ca:fc:
86:20:37:de:a3:1c:2a:aa:f2:35:b6:98:67:23:f0:c1:36:93:
b6:fc:34:32:15:2a:dc:ac:d9:d6:a8:c1:be:f2:54:38:a9:3a:
c4:bf:47:c4:91:fb:5e:de:ba:7d:12:54:25:f9:21:cf:4a:b3:
35:eb:d1:99:3b:40:34:16:8f:f1:6b:e3:e5:e2:e4:fa:6f:e7:
f1:c2:65:2b:ac:c7:11:71:07:f6:d5:7e:39:ce:58:42:08:7a:
e7:c7:ee:15:41:a8:17:2e:f6:c0:66:56:95:1a:00:dd:e0:7c:
4b:58:b5:3c:8f:be:b8:09:43:2f:1d:8e:76:c3:ab:6c:0c:7f:
bd:ef:6c:97:cc:a2:cb:bc:6b:64:22:9d:a6:7a:20:7f:ce:5c:
bb:90:56:e0:39:b1:52:4f:48:b3:f1:6c:13:9f:43:e0:64:c8:
ac:86:88:a1:84:89:54:4f:b3:87:c8:3a:81:91:25:7e:7d:2e:
7b:2f:c1:60:60:ac:87:78:c6:8c:e7:ad:c2:c1:bc:1e:33:5b:
78:1c:53:87:91:a4:b2:9d:a4:7d:83:e0:5f:31:71:52:7f:1f:
5d:fa:8a:c5:48:a9:f3:6e:b8:e9:4b:0d:73:10:5f:32:c3:ea:
e8:5f:1f:cb:ec:c1:a2:8a:09:32:d2:b9:84:30:8d:e8:a1:29:
e6:dc:f2:37:19:8f:c2:14:0b:d5:3b:86:61:13:95:ac:20:16:
55:27:b2:f9:86:3c:60:78:42:12:e4:c1:33:0d:91:5a:08:7e:
f6:fe:68:b2:61:c3:b5:31
2.3.4 cert 3
-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIJAPHBcqaZ6vUdMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNVBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjIwMzIwMTgwNzQ4WhcNNDIwMzE1MTgwNzQ4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdSSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggjnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGqC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQoVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+OJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/EgsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRiigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+MRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9EaDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5UmAGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1UdIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQB8cMqTllHc8U+qCrOlg3H7174lmaCsbo/bJ0C17JEgMLb4kvrqsXZs01U3mB/qABg/1t5Pd5AORHARs1hhqGICW/nKMav574f9rZN4PC2ZlufGXb7sIdJpGiO9ctRhiLuYuly10JccUZGEHpHSYM2GtkgYbZba6lsCPYAAP83cyDV+1aOkTf1RCp/lM0PKvmxYN10RYsK631jrleGdcdkxoSK//mSQbgcWnmAEZrzHoF1/0gso1HZgIn0YLzVhLSA/iXCX4QT2h3J5z3znluKG1nv8NQdxei2DIIhASWfu804CA96cQKTTlaae2fweqXjdN1/v2nqOhngNyz1361mFmr4XmaKH/ItTwOe72NI9ZcwS1lVaCvsIkTDCEXdm9rCNPAY10iTunIHFXRh+7KPzlHGewCq/8TOohBRn0/NNfh7uRslOSZ/xKbN9tMBtw37Z8d2vvnXq/YWdsm1+JLVwn6yYD/yacNJBlwpddla8eaVMjsF6nBnIgQOf9zKSe06nSTqvgwUHosgOECZJZ1EuzbH4yswbt02tKtKEFhx+v+OTge/06V+jGsqTWLsfrOCNLuA8H++z+pUENmpqnnHovaI47gC+TNpkgYGkkBT6B/m/U01BuOBBTzhIlMEZq9qkDWuM2cA5kW5V3FJUcfHnw1IdYIg2Wxg7yHcQZemFQg==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
f1:c1:72:a6:99:ea:f5:1d
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: Mar 20 18:07:48 2022 GMT
Not After : Mar 15 18:07:48 2042 GMT
Subject: serialNumber = f92009e853b6b045
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:af:b6:c7:82:2b:b1:a7:01:ec:2b:b4:2e:8b:cc:
54:16:63:ab:ef:98:2f:32:c7:7f:75:31:03:0c:97:
52:4b:1b:5f:e8:09:fb:c7:2a:a9:45:1f:74:3c:bd:
9a:6f:13:35:74:4a:a5:5e:77:f6:b6:ac:35:35:ee:
17:c2:5e:63:95:17:dd:9c:92:e6:37:4a:53:cb:fe:
25:8f:8f:fb:b6:fd:12:93:78:a2:2a:4c:a9:9c:45:
2d:47:a5:9f:32:01:f4:41:97:ca:1c:cd:7e:76:2f:
b2:f5:31:51:b6:fe:b2:ff:fd:2b:6f:e4:fe:5b:c6:
bd:9e:c3:4b:fe:08:23:9d:aa:fc:eb:8e:b5:a8:ed:
2b:3a:cd:9c:5e:3a:77:90:e1:b5:14:42:79:31:59:
85:98:11:ad:9e:b2:a9:6b:bd:d7:a5:7c:93:a9:1c:
41:fc:cd:27:d6:7f:d6:f6:71:aa:0b:81:52:61:ad:
38:4f:a3:79:44:86:46:04:dd:b3:d8:c4:f9:20:a1:
9b:16:56:c2:f1:4a:d6:d0:3c:56:ec:06:08:99:04:
1c:1e:d1:a5:fe:6d:34:40:b5:56:ba:d1:d0:a1:52:
58:9c:53:e5:5d:37:07:62:f0:12:2e:ef:91:86:1b:
1b:0e:6c:4c:80:92:74:99:c0:e9:be:c0:b8:3e:3b:
c1:f9:3c:72:c0:49:60:4b:bd:2f:13:45:e6:2c:3f:
8e:26:db:ec:06:c9:47:66:f3:c1:28:23:9d:4f:43:
12:fa:d8:12:38:87:e0:6b:ec:f5:67:58:3b:f8:35:
5a:81:fe:ea:ba:f9:9a:83:c8:df:3e:2a:32:2a:fc:
67:2b:f1:20:b1:35:15:8b:68:21:ce:af:30:9b:6e:
ee:77:f9:88:33:b0:18:da:a1:0e:45:1f:06:a3:74:
d5:07:81:f3:59:08:29:66:bb:77:8b:93:08:94:26:
98:e7:4e:0b:cd:24:62:8a:01:c2:cc:03:e5:1f:0b:
3e:5b:4a:c1:e4:df:9e:af:9f:f6:a4:92:a7:7c:14:
83:88:28:85:01:5b:42:2c:e6:7b:80:b8:8c:9b:48:
e1:3b:60:7a:b5:45:c7:23:ff:8c:44:f8:f2:d3:68:
b9:f6:52:0d:31:14:5e:bf:9e:86:2a:d7:1d:f6:a3:
bf:d2:45:09:59:d6:53:74:0d:97:a1:2f:36:8b:13:
ef:66:d5:d0:a5:4a:6e:2f:5d:9a:6f:ef:44:68:32:
bc:67:84:47:25:86:1f:09:3d:d0:e6:f3:40:5d:a8:
96:43:ef:0f:4d:69:b6:42:00:51:fd:b9:30:49:67:
3e:36:95:05:80:d3:cd:f4:fb:d0:8b:c5:84:83:95:
26:00:63
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
7c:70:ca:93:96:51:dc:f1:4f:aa:0a:b3:a5:83:71:fb:d7:be:
25:99:a0:ac:6e:8f:db:27:40:b5:ec:91:20:30:b6:f8:92:fa:
ea:b1:76:6c:d3:55:37:98:1f:ea:00:18:3f:d6:de:4f:77:90:
0e:44:70:11:b3:58:61:a8:62:02:5b:f9:ca:31:ab:f9:ef:87:
fd:ad:93:78:3c:2d:99:96:e7:c6:5d:be:ec:21:d2:69:1a:23:
bd:72:d4:61:88:bb:98:ba:5c:b5:d0:97:1c:51:91:84:1e:91:
d2:60:cd:86:b6:48:18:6d:96:da:ea:5b:02:3d:80:00:3f:cd:
dc:c8:35:7e:d5:a3:a4:4d:fd:51:0a:9f:e5:33:43:ca:be:6c:
58:37:5d:11:62:c2:ba:df:58:eb:95:e1:9d:71:d9:31:a1:22:
bf:fe:64:90:6e:07:16:9e:60:04:66:bc:c7:a0:5d:7f:d2:0b:
28:d4:76:60:22:7d:18:2f:35:61:2d:20:3f:89:70:97:e1:04:
f6:87:72:79:cf:7c:e7:96:e2:86:d6:7b:fc:35:07:71:7a:2d:
83:20:88:40:49:67:ee:f3:4e:02:03:de:9c:40:a4:d3:95:a6:
9e:d9:fc:1e:a9:78:dd:37:5f:ef:da:7a:8e:86:78:0d:cb:3d:
77:eb:59:85:9a:be:17:99:a2:87:fc:8b:53:c0:e7:bb:d8:d2:
3d:65:cc:12:d6:55:5a:0a:fb:08:91:30:c2:11:77:66:f6:b0:
8d:3c:06:35:d2:24:ee:9c:81:c5:5d:18:7e:ec:a3:f3:94:71:
9e:c0:2a:bf:f1:33:a8:84:14:67:d3:f3:4d:7e:1e:ee:46:c9:
4e:49:9f:f1:29:b3:7d:b4:c0:6d:c3:7e:d9:f1:dd:af:be:75:
ea:fd:85:9d:b2:6d:7e:24:b5:70:9f:ac:98:0f:fc:9a:70:d2:
41:97:0a:5d:76:56:bc:79:a5:4c:8e:c1:7a:9c:19:c8:81:03:
9f:f7:32:92:7b:4e:a7:49:3a:af:83:05:07:a2:c8:0e:10:26:
49:67:51:2e:cd:b1:f8:ca:cc:1b:b7:4d:ad:2a:d2:84:16:1c:
7e:bf:e3:93:81:ef:f4:e9:5f:a3:1a:ca:93:58:bb:1f:ac:e0:
8d:2e:e0:3c:1f:ef:b3:fa:95:04:36:6a:6a:9e:71:e8:bd:a2:
38:ee:00:be:4c:da:64:81:81:a4:90:14:fa:07:f9:bf:53:4d:
41:b8:e0:41:4f:38:48:94:c1:19:ab:da:a4:0d:6b:8c:d9:c0:
39:91:6e:55:dc:52:54:71:f1:e7:c3:52:1d:60:88:36:5b:18:
3b:c8:77:10:65:e9:85:42
2.4 XAGA with locked BL
2.4.1 cert 0
- 使用https://lapo.it/asn1js/解析cert0的扩展字段
- attestation扩展字段的ASN.1 schema
-----BEGIN CERTIFICATE-----
MIICsjCCAlegAwIBAgIBATAKBggqhkjOPQQDAjA5MQwwCgYDVQQMDANURUUxKTAnBgNVBAUTIGQ1NWZhMWVmZTgwZjFlY2NmODM1NDQ5YzAzZDhjZGU0MB4XDTcwMDEwMTAwMDAwMFoXDTQ4MDEwMTAwMDAwMFowHzEdMBsGA1UEAxMUQW5kcm9pZCBLZXlzdG9yZSBLZXkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARjNOoYzYIujs/OiJ7Tl3XNF5CVoevGt4mgEN+aRP/LrGJs8dwlZ0kPQxH1P7S5/ZGDeb8y1Nq6Q3EZFrGruF+Co4IBaDCCAWQwDgYDVR0PAQH/BAQDAgeAMIIBUAYKKwYBBAHWeQIBEQSCAUAwggE8AgFkCgEBAgFkCgEBBBtjaGFsbGVuZ2Utc2hvdWxkLWJlLWEtbm9uY2UEADBcv4U9CAIGAYxnZ5HQv4VFTARKMEgxIjAgBBtjb20uc2hlbjE5OTEua2V5YXR0ZXN0YXRpb24CAQExIgQg/CyJNxdNgXheUoQ4Czy9y1VZNCpp5ABdrKQBdi6icoMwgbChBTEDAgECogMCAQOjBAICAQClCzEJAgEEAgEFAgEGqgMCAQG/g3gDAgEDv4N5BAICASy/hT4DAgEAv4VATDBKBCAHrGWksyShKyYDh1pt6rID5/YqBpdIrguWTegi07S1VgEB/woBAAQg1IFxrl0udMEfKaH/FZjdH9agH67rUFAYHwlRpMqTJW2/hUEFAgMB+9C/hUIFAgMDFeS/hU4GAgQBNI0Rv4VPBgIEATSNETAKBggqhkjOPQQDAgNJADBGAiEAzCt+4nwOy9w4c2XyvFvee1+w3QtLA/EECrOBmI2WCAsCIQCigJ4qcBTRF2J36MXvYOzpF7yld2O+uKMGYyZwoJactA==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: ecdsa-with-SHA256
Issuer: title = TEE, serialNumber = d55fa1efe80f1eccf835449c03d8cde4
Validity
Not Before: Jan 1 00:00:00 1970 GMT
Not After : Jan 1 00:00:00 2048 GMT
Subject: CN = Android Keystore Key
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:63:34:ea:18:cd:82:2e:8e:cf:ce:88:9e:d3:97:
75:cd:17:90:95:a1:eb:c6:b7:89:a0:10:df:9a:44:
ff:cb:ac:62:6c:f1:dc:25:67:49:0f:43:11:f5:3f:
b4:b9:fd:91:83:79:bf:32:d4:da:ba:43:71:19:16:
b1:ab:b8:5f:82
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature
1.3.6.1.4.1.11129.2.1.17:
0..<..d
....d
....challenge-should-be-a-nonce..0\..=.....gg....EL.J0H1"0 ..com.shen1991.keyattestation...1". .,.7.M.x^R.8.<..UY4*i..]...v..r.0....1.................1.................x......y....,..>......@L0J. ..e..$.+&..Zm.....*..H...M."...V...
... ..q.].t..)...........PP...Q...%m..A........B........N....4....O....4..
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:46:02:21:00:cc:2b:7e:e2:7c:0e:cb:dc:38:73:65:f2:bc:
5b:de:7b:5f:b0:dd:0b:4b:03:f1:04:0a:b3:81:98:8d:96:08:
0b:02:21:00:a2:80:9e:2a:70:14:d1:17:62:77:e8:c5:ef:60:
ec:e9:17:bc:a5:77:63:be:b8:a3:06:63:26:70:a0:96:9c:b4
SEQUENCE (8 elem)
INTEGER 100
ENUMERATED 1
INTEGER 100
ENUMERATED 1
OCTET STRING (27 byte) challenge-should-be-a-nonce
Offset: 16
Length: 2+27
Value:
(27 byte)
challenge-should-be-a-nonce
OCTET STRING (0 byte)
SEQUENCE (2 elem)
[701] (1 elem)
INTEGER (41 bit) 1702541890000
[709] (1 elem)
OCTET STRING (74 byte) 304831223020041B636F6D2E7368656E313939312E6B65796174746573746174696F6E…
SEQUENCE (2 elem)
SET (1 elem)
SEQUENCE (2 elem)
OCTET STRING (27 byte) com.shen1991.keyattestation
INTEGER 1
SET (1 elem)
OCTET STRING (32 byte) FC2C8937174D81785E5284380B3CBDCB5559342A69E4005DACA401762EA27283
SEQUENCE (13 elem)
[1] (1 elem)
SET (1 elem)
INTEGER 2
[2] (1 elem)
INTEGER 3
[3] (1 elem)
INTEGER 256
[5] (1 elem)
SET (3 elem)
INTEGER 4
INTEGER 5
INTEGER 6
[10] (1 elem)
INTEGER 1
[504] (1 elem)
INTEGER 3
[505] (1 elem)
INTEGER 300
[702] (1 elem)
INTEGER 0
[704] (1 elem)
SEQUENCE (4 elem)
OCTET STRING (32 byte) 07AC65A4B324A12B2603875A6DEAB203E7F62A069748AE0B964DE822D3B4B556
BOOLEAN true
ENUMERATED 0
OCTET STRING (32 byte) D48171AE5D2E74C11F29A1FF1598DD1FD6A01FAEEB5050181F0951A4CA93256D
[705] (1 elem)
INTEGER 130000
[706] (1 elem)
INTEGER 202212
[718] (1 elem)
INTEGER 20221201
[719] (1 elem)
INTEGER 20221201
2.4.2 cert 1
-----BEGIN CERTIFICATE-----
MIIB9DCCAXmgAwIBAgIQHIZ9phan3gKkaGygX/hMazAKBggqhkjOPQQDAjA5MQwwCgYDVQQMDANURUUxKTAnBgNVBAUTIGFmYjE1NDk5MDZjMjdhODRlZGE0NmYyNDgxM2ZiZmEwMB4XDTIyMDEyNTIzMjYxN1oXDTMyMDEyMzIzMjYxN1owOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQFEyBkNTVmYTFlZmU4MGYxZWNjZjgzNTQ0OWMwM2Q4Y2RlNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIpbsUYv0MFsaajpCGoyvIaWnQIzVccK/UGXUoNN+EZz7lBKBNZtmkQ/Q2ebyZHt05oLwbQe+zuzmEzQFgDRyNCjYzBhMB0GA1UdDgQWBBR7imZZjjfMrcTEKG+UdkjTErLiWjAfBgNVHSMEGDAWgBQIT1dJ1ceCjitQ8mWbIeGpq4WBvDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDAKBggqhkjOPQQDAgNpADBmAjEA+gMugmp/OjHvxGxluu8cphvktmgZw2Ik2buyQWxbF8RhNM2V08ll6rj7ZeLK2qOmAjEAy4J/HuoglcR06VVyHHB3b/1eZFrSuuU8IYSRUSx9iiumYPwxme0bhzfxxbpIxwCF
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
1c:86:7d:a6:16:a7:de:02:a4:68:6c:a0:5f:f8:4c:6b
Signature Algorithm: ecdsa-with-SHA256
Issuer: title = TEE, serialNumber = afb1549906c27a84eda46f24813fbfa0
Validity
Not Before: Jan 25 23:26:17 2022 GMT
Not After : Jan 23 23:26:17 2032 GMT
Subject: title = TEE, serialNumber = d55fa1efe80f1eccf835449c03d8cde4
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:8a:5b:b1:46:2f:d0:c1:6c:69:a8:e9:08:6a:32:
bc:86:96:9d:02:33:55:c7:0a:fd:41:97:52:83:4d:
f8:46:73:ee:50:4a:04:d6:6d:9a:44:3f:43:67:9b:
c9:91:ed:d3:9a:0b:c1:b4:1e:fb:3b:b3:98:4c:d0:
16:00:d1:c8:d0
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Subject Key Identifier:
7B:8A:66:59:8E:37:CC:AD:C4:C4:28:6F:94:76:48:D3:12:B2:E2:5A
X509v3 Authority Key Identifier:
08:4F:57:49:D5:C7:82:8E:2B:50:F2:65:9B:21:E1:A9:AB:85:81:BC
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:66:02:31:00:fa:03:2e:82:6a:7f:3a:31:ef:c4:6c:65:ba:
ef:1c:a6:1b:e4:b6:68:19:c3:62:24:d9:bb:b2:41:6c:5b:17:
c4:61:34:cd:95:d3:c9:65:ea:b8:fb:65:e2:ca:da:a3:a6:02:
31:00:cb:82:7f:1e:ea:20:95:c4:74:e9:55:72:1c:70:77:6f:
fd:5e:64:5a:d2:ba:e5:3c:21:84:91:51:2c:7d:8a:2b:a6:60:
fc:31:99:ed:1b:87:37:f1:c5:ba:48:c7:00:85
2.4.3 cert 2
-----BEGIN CERTIFICATE-----
MIIDkzCCAXugAwIBAgIQdf0ZJTfo+lrb+ci6uj5PtjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MB4XDTIyMDEyNTIzMjUxNloXDTMyMDEyMzIzMjUxNlowOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQFEyBhZmIxNTQ5OTA2YzI3YTg0ZWRhNDZmMjQ4MTNmYmZhMDB2MBAGByqGSM49AgEGBSuBBAAiA2IABGAkq81HgjL+/1QZCD20OkhUaEwp/nvoFG8WocNgWiiwJOrkDfXcjQQXrrboa9w22O7Tr6d/BGzgnz3R0kd+W5QG8+S0XbtLyte1jek9/L8aBR4VnFstUCHcVi9jiBfsTqNjMGEwHQYDVR0OBBYEFAhPV0nVx4KOK1DyZZsh4amrhYG8MB8GA1UdIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQAM+sjCRY7aM8JItYZYK1TtypnE58A6VjusH+2kUPBAHe6gfHF0ofLajO2HG2caaPcuuYEP4CF2r+w0aBfDLRLL/LYbMuJ51eb8KpQm+TzUeUrA9QxEIRHUhriNptsx9ioAOK7c7SFOtIFTFd4fUTzcwYbWQy3BcIiLG/pjHNnI8lfSnHXBopFn2PfF6vs9Xho3efcSbxvEVvUB/eX+qXaVyGLKZIkDewwdL4mHC8UCmQdHMzEAerbb0imv0yTh5ItbH7s4EmZbghtZ3IEIDwU6gvvWiO8vCLjHpz9JCJDIqdLGLuGVmFn7MMlZBKJqDBr8NDQ+Wf36ag4SX3pT+kBDj8X89eoAQVuIZZZ0IyWp8cdXzPicsFQgtLKvxTULfT3jWW/yneUAM+qxQLAAAe9MnM/UtstospDQ/8u/oZLNRuT/0GmD3Yahm3pZaB4RH5qgm/Vf0tNt6bH3+K0NSFZfSskdxZagpvkJIGIdM5JjLAdGktxBpjFhrKpxG739pDVnVXbfWOQmHppf11Sh82vDpVlq6k9+W1fmVWExlIgTEO3/QTGB4rfFzlYCB6vOhjspaUjgr8mobMZfEic6hu7zMKxXmpipyRFSxyLNXUOvEXc/mSkGDErDzrLwPATFIuJeTe2QO/mwvWXD7amMGRo4qzSeU+N6AYM4fIKEE1LhNA==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
75:fd:19:25:37:e8:fa:5a:db:f9:c8:ba:ba:3e:4f:b6
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: Jan 25 23:25:16 2022 GMT
Not After : Jan 23 23:25:16 2032 GMT
Subject: title = TEE, serialNumber = afb1549906c27a84eda46f24813fbfa0
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (384 bit)
pub:
04:60:24:ab:cd:47:82:32:fe:ff:54:19:08:3d:b4:
3a:48:54:68:4c:29:fe:7b:e8:14:6f:16:a1:c3:60:
5a:28:b0:24:ea:e4:0d:f5:dc:8d:04:17:ae:b6:e8:
6b:dc:36:d8:ee:d3:af:a7:7f:04:6c:e0:9f:3d:d1:
d2:47:7e:5b:94:06:f3:e4:b4:5d:bb:4b:ca:d7:b5:
8d:e9:3d:fc:bf:1a:05:1e:15:9c:5b:2d:50:21:dc:
56:2f:63:88:17:ec:4e
ASN1 OID: secp384r1
NIST CURVE: P-384
X509v3 extensions:
X509v3 Subject Key Identifier:
08:4F:57:49:D5:C7:82:8E:2B:50:F2:65:9B:21:E1:A9:AB:85:81:BC
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
0c:fa:c8:c2:45:8e:da:33:c2:48:b5:86:58:2b:54:ed:ca:99:
c4:e7:c0:3a:56:3b:ac:1f:ed:a4:50:f0:40:1d:ee:a0:7c:71:
74:a1:f2:da:8c:ed:87:1b:67:1a:68:f7:2e:b9:81:0f:e0:21:
76:af:ec:34:68:17:c3:2d:12:cb:fc:b6:1b:32:e2:79:d5:e6:
fc:2a:94:26:f9:3c:d4:79:4a:c0:f5:0c:44:21:11:d4:86:b8:
8d:a6:db:31:f6:2a:00:38:ae:dc:ed:21:4e:b4:81:53:15:de:
1f:51:3c:dc:c1:86:d6:43:2d:c1:70:88:8b:1b:fa:63:1c:d9:
c8:f2:57:d2:9c:75:c1:a2:91:67:d8:f7:c5:ea:fb:3d:5e:1a:
37:79:f7:12:6f:1b:c4:56:f5:01:fd:e5:fe:a9:76:95:c8:62:
ca:64:89:03:7b:0c:1d:2f:89:87:0b:c5:02:99:07:47:33:31:
00:7a:b6:db:d2:29:af:d3:24:e1:e4:8b:5b:1f:bb:38:12:66:
5b:82:1b:59:dc:81:08:0f:05:3a:82:fb:d6:88:ef:2f:08:b8:
c7:a7:3f:49:08:90:c8:a9:d2:c6:2e:e1:95:98:59:fb:30:c9:
59:04:a2:6a:0c:1a:fc:34:34:3e:59:fd:fa:6a:0e:12:5f:7a:
53:fa:40:43:8f:c5:fc:f5:ea:00:41:5b:88:65:96:74:23:25:
a9:f1:c7:57:cc:f8:9c:b0:54:20:b4:b2:af:c5:35:0b:7d:3d:
e3:59:6f:f2:9d:e5:00:33:ea:b1:40:b0:00:01:ef:4c:9c:cf:
d4:b6:cb:68:b2:90:d0:ff:cb:bf:a1:92:cd:46:e4:ff:d0:69:
83:dd:86:a1:9b:7a:59:68:1e:11:1f:9a:a0:9b:f5:5f:d2:d3:
6d:e9:b1:f7:f8:ad:0d:48:56:5f:4a:c9:1d:c5:96:a0:a6:f9:
09:20:62:1d:33:92:63:2c:07:46:92:dc:41:a6:31:61:ac:aa:
71:1b:bd:fd:a4:35:67:55:76:df:58:e4:26:1e:9a:5f:d7:54:
a1:f3:6b:c3:a5:59:6a:ea:4f:7e:5b:57:e6:55:61:31:94:88:
13:10:ed:ff:41:31:81:e2:b7:c5:ce:56:02:07:ab:ce:86:3b:
29:69:48:e0:af:c9:a8:6c:c6:5f:12:27:3a:86:ee:f3:30:ac:
57:9a:98:a9:c9:11:52:c7:22:cd:5d:43:af:11:77:3f:99:29:
06:0c:4a:c3:ce:b2:f0:3c:04:c5:22:e2:5e:4d:ed:90:3b:f9:
b0:bd:65:c3:ed:a9:8c:19:1a:38:ab:34:9e:53:e3:7a:01:83:
38:7c:82:84:13:52:e1:34
2.4.4 cert 3
-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIJAMNrfES5rhgxMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNVBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjExMTE3MjMxMDQyWhcNMzYxMTEzMjMxMDQyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdSSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggjnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGqC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQoVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+OJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/EgsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRiigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+MRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9EaDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5UmAGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1UdIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBTNNZe5cuf8oiq+jV0itTGzWVhSTjOBEk2FQvh11J3o3lna0o7rd8RFHnN00q4hi6TapFhh4qaw/iG6Xg+xOan63niLWIC5GOPFgPeYXM9+nBb3zZzC8ABypYuCusWCmt6Tn3+Pjbz3MTVhRGXuT/TQH4KGFY4PhvzAyXwdjTOCXID+aHud4RLcSySr0Fq/L+R8TWalvM1wJJPhyRjqRCJerGtfBagiALzvhnmY7U1qFcS0NCnKjoO7oFedKdWlZz0YAfu3aGCJd4KHT0MsGiLZez9WP81xYSrKMNEsDK+zK5fVzw6jA7cxmpXcARTnmAuGUeI7VVDhDzKeVOctf3a0qQLwC+d0+xrETZ4r2fRGNw2YEs2W8Qj6oDcfPvq9JySe7pJ6wcHnl5EZ0lwc4xH7Y4Dx9RA1JlfooLMw3tOdJZH0enxPXaydfAD3YifeZpFaUzicHeLzVJLt9dvGB0bHQLE4+EqKFgOZv2EoP686DQqbVS1u+9k0p2xbMA105TBIk7npraa8VM0fnrRKi7wlZKwdH+aNAyhbXRW9xsnODJ+g8eF452zvbiKKngEKirK5LGieoXBX7tZ9D1GNBH2Ob3bKOwwIWdEFle/YF/h6zWgdeoaNGDqVBrLr2+0DtWoiB1aDEjLWl9FmyIUyUm7mD/vFDkzF+wm7cyWpQpCVQ==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
c3:6b:7c:44:b9:ae:18:31
Signature Algorithm: sha256WithRSAEncryption
Issuer: serialNumber = f92009e853b6b045
Validity
Not Before: Nov 17 23:10:42 2021 GMT
Not After : Nov 13 23:10:42 2036 GMT
Subject: serialNumber = f92009e853b6b045
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:af:b6:c7:82:2b:b1:a7:01:ec:2b:b4:2e:8b:cc:
54:16:63:ab:ef:98:2f:32:c7:7f:75:31:03:0c:97:
52:4b:1b:5f:e8:09:fb:c7:2a:a9:45:1f:74:3c:bd:
9a:6f:13:35:74:4a:a5:5e:77:f6:b6:ac:35:35:ee:
17:c2:5e:63:95:17:dd:9c:92:e6:37:4a:53:cb:fe:
25:8f:8f:fb:b6:fd:12:93:78:a2:2a:4c:a9:9c:45:
2d:47:a5:9f:32:01:f4:41:97:ca:1c:cd:7e:76:2f:
b2:f5:31:51:b6:fe:b2:ff:fd:2b:6f:e4:fe:5b:c6:
bd:9e:c3:4b:fe:08:23:9d:aa:fc:eb:8e:b5:a8:ed:
2b:3a:cd:9c:5e:3a:77:90:e1:b5:14:42:79:31:59:
85:98:11:ad:9e:b2:a9:6b:bd:d7:a5:7c:93:a9:1c:
41:fc:cd:27:d6:7f:d6:f6:71:aa:0b:81:52:61:ad:
38:4f:a3:79:44:86:46:04:dd:b3:d8:c4:f9:20:a1:
9b:16:56:c2:f1:4a:d6:d0:3c:56:ec:06:08:99:04:
1c:1e:d1:a5:fe:6d:34:40:b5:56:ba:d1:d0:a1:52:
58:9c:53:e5:5d:37:07:62:f0:12:2e:ef:91:86:1b:
1b:0e:6c:4c:80:92:74:99:c0:e9:be:c0:b8:3e:3b:
c1:f9:3c:72:c0:49:60:4b:bd:2f:13:45:e6:2c:3f:
8e:26:db:ec:06:c9:47:66:f3:c1:28:23:9d:4f:43:
12:fa:d8:12:38:87:e0:6b:ec:f5:67:58:3b:f8:35:
5a:81:fe:ea:ba:f9:9a:83:c8:df:3e:2a:32:2a:fc:
67:2b:f1:20:b1:35:15:8b:68:21:ce:af:30:9b:6e:
ee:77:f9:88:33:b0:18:da:a1:0e:45:1f:06:a3:74:
d5:07:81:f3:59:08:29:66:bb:77:8b:93:08:94:26:
98:e7:4e:0b:cd:24:62:8a:01:c2:cc:03:e5:1f:0b:
3e:5b:4a:c1:e4:df:9e:af:9f:f6:a4:92:a7:7c:14:
83:88:28:85:01:5b:42:2c:e6:7b:80:b8:8c:9b:48:
e1:3b:60:7a:b5:45:c7:23:ff:8c:44:f8:f2:d3:68:
b9:f6:52:0d:31:14:5e:bf:9e:86:2a:d7:1d:f6:a3:
bf:d2:45:09:59:d6:53:74:0d:97:a1:2f:36:8b:13:
ef:66:d5:d0:a5:4a:6e:2f:5d:9a:6f:ef:44:68:32:
bc:67:84:47:25:86:1f:09:3d:d0:e6:f3:40:5d:a8:
96:43:ef:0f:4d:69:b6:42:00:51:fd:b9:30:49:67:
3e:36:95:05:80:d3:cd:f4:fb:d0:8b:c5:84:83:95:
26:00:63
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Authority Key Identifier:
36:61:E1:00:7C:88:05:09:51:8B:44:6C:47:FF:1A:4C:C9:EA:4F:12
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
53:34:d6:5e:e5:cb:9f:f2:88:aa:fa:35:74:8a:d4:c6:cd:65:
61:49:38:ce:04:49:36:15:0b:e1:d7:52:77:a3:79:67:6b:4a:
3b:ad:df:11:14:79:cd:d3:4a:b8:86:2e:93:6a:91:61:87:8a:
9a:c3:f8:86:e9:78:3e:c4:e6:a7:eb:79:e2:2d:62:02:e4:63:
8f:16:03:de:61:73:3d:fa:70:5b:df:36:73:0b:c0:01:ca:96:
2e:0a:eb:16:0a:6b:7a:4e:7d:fe:3e:36:f3:dc:c4:d5:85:11:
97:b9:3f:d3:40:7e:0a:18:56:38:3e:1b:f3:03:25:f0:76:34:
ce:09:72:03:f9:a1:ee:77:84:4b:71:2c:92:af:41:6a:fc:bf:
91:f1:35:9a:96:f3:35:c0:92:4f:87:24:63:a9:10:89:7a:b1:
ad:7c:16:a0:88:02:f3:be:19:e6:63:b5:35:a8:57:12:d0:d0:
a7:2a:3a:0e:ee:81:5e:74:a7:56:95:9c:f4:60:07:ee:dd:a1:
82:25:de:0a:1d:3d:0c:b0:68:8b:65:ec:fd:58:ff:35:c5:84:
ab:28:c3:44:b0:32:be:cc:ae:5f:57:3c:3a:8c:0e:dc:c6:6a:
57:70:04:53:9e:60:2e:19:47:88:ed:55:43:84:3c:ca:79:53:
9c:b5:fd:da:d2:a4:0b:c0:2f:9d:d3:ec:6b:11:36:78:af:67:
d1:18:dc:36:60:4b:36:5b:c4:23:ea:80:dc:7c:fb:ea:f4:9c:
92:7b:ba:49:eb:07:07:9e:5e:44:67:49:70:73:8c:47:ed:8e:
03:c7:d4:40:d4:99:5f:a2:82:cc:c3:7b:4e:74:96:47:d1:e9:
f1:3d:76:b2:75:f0:03:dd:88:9f:79:9a:45:69:4c:e2:70:77:
8b:cd:52:4b:b7:d7:6f:18:1d:1b:1d:02:c4:e3:e1:2a:28:58:
0e:66:fd:84:a0:fe:bc:e8:34:2a:6d:54:b5:bb:ef:64:d2:9d:
b1:6c:c0:35:d3:94:c1:22:4e:e7:a6:b6:9a:f1:53:34:7e:7a:
d1:2a:2e:f0:95:92:b0:74:7f:9a:34:0c:a1:6d:74:56:f7:1b:
27:38:32:7e:83:c7:85:e3:9d:b3:bd:b8:8a:2a:78:04:2a:2a:
ca:e4:b1:a2:7a:85:c1:5f:bb:59:f4:3d:46:34:11:f6:39:bd:
db:28:ec:30:21:67:44:16:57:bf:60:5f:e1:eb:35:a0:75:ea:
1a:34:60:ea:54:1a:cb:af:6f:b4:0e:d5:a8:88:1d:5a:0c:48:
cb:5a:5f:45:9b:22:14:c9:49:bb:98:3f:ef:14:39:33:17:ec:
26:ed:cc:96:a5:0a:42:55
0x03 Android Key Attestation Vulnerabilities?
- 假设严格根据Google文档进行使用, 没有已知风险
- 服务端生成challenge(注意新鲜数)
- 在服务端对证书链进行校验, 校验根证书及CRL列表
- 在服务端校验cert0的扩展字段, 分析BL状态、安卓及patch版本, 确保手机无已知漏洞
- 注意生成的cert3(根证书)与Google公开的一致
那么实践中有哪些风险呢
- 手机虽未解锁BL但有已知RCE漏洞 -> 破坏了条件3
- 未校验设备BL解锁状态 -> 破坏了
- 服务端challenge重放 -> 破坏了条件1, 实际利用方式暂未研究
- 本地校验证书链 -> 破坏了条件2
- 只校验证书链, 不校验根证书 -> 破坏了条件4
另外Google的文档中提到了这样一个细节
static const uint8_t kEcAttestKey[] = {
0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x21, 0xe0, 0x86, 0x43, 0x2a, 0x15, 0x19, 0x84, 0x59,
0xcf, 0x36, 0x3a, 0x50, 0xfc, 0x14, 0xc9, 0xda, 0xad, 0xf9, 0x35, 0xf5, 0x27, 0xc2, 0xdf, 0xd7,
0x1e, 0x4d, 0x6d, 0xbc, 0x42, 0xe5, 0x44, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xeb, 0x9e, 0x79, 0xf8, 0x42, 0x63, 0x59,
0xac, 0xcb, 0x2a, 0x91, 0x4c, 0x89, 0x86, 0xcc, 0x70, 0xad, 0x90, 0x66, 0x93, 0x82, 0xa9, 0x73,
0x26, 0x13, 0xfe, 0xac, 0xcb, 0xf8, 0x21, 0x27, 0x4c, 0x21, 0x74, 0x97, 0x4a, 0x2a, 0xfe, 0xa5,
0xb9, 0x4d, 0x7f, 0x66, 0xd4, 0xe0, 0x65, 0x10, 0x66, 0x35, 0xbc, 0x53, 0xb7, 0xa0, 0xa3, 0xa6,
0x71, 0x58, 0x3e, 0xdb, 0x3e, 0x11, 0xae, 0x10, 0x14,
};
static const keymaster_key_blob_t kEcAttestKeyBlob = {
(const uint8_t*)&kEcAttestKey, sizeof(kEcAttestKey)
};
static const uint8_t kEcAttestCert[] = {
0x30, 0x82, 0x02, 0x78, 0x30, 0x82, 0x02, 0x1e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x02, 0x10,
0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0x98,
0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30,
0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e,
0x69, 0x61, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0d, 0x4d, 0x6f, 0x75,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x69, 0x65, 0x77, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03,
0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
0x2e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x07, 0x41, 0x6e, 0x64, 0x72,
0x6f, 0x69, 0x64, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x2a, 0x41, 0x6e,
0x64, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x53,
0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x31,
0x31, 0x31, 0x30, 0x30, 0x34, 0x36, 0x30, 0x39, 0x5a, 0x17, 0x0d, 0x32, 0x36, 0x30, 0x31, 0x30,
0x38, 0x30, 0x30, 0x34, 0x36, 0x30, 0x39, 0x5a, 0x30, 0x81, 0x88, 0x31, 0x0b, 0x30, 0x09, 0x06,
0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
0x08, 0x0c, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x31, 0x15, 0x30,
0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2c, 0x20,
0x49, 0x6e, 0x63, 0x2e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x07, 0x41,
0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x31, 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
0x32, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x74, 0x6f, 0x72,
0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69,
0x61, 0x74, 0x65, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01,
0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xeb, 0x9e,
0x79, 0xf8, 0x42, 0x63, 0x59, 0xac, 0xcb, 0x2a, 0x91, 0x4c, 0x89, 0x86, 0xcc, 0x70, 0xad, 0x90,
0x66, 0x93, 0x82, 0xa9, 0x73, 0x26, 0x13, 0xfe, 0xac, 0xcb, 0xf8, 0x21, 0x27, 0x4c, 0x21, 0x74,
0x97, 0x4a, 0x2a, 0xfe, 0xa5, 0xb9, 0x4d, 0x7f, 0x66, 0xd4, 0xe0, 0x65, 0x10, 0x66, 0x35, 0xbc,
0x53, 0xb7, 0xa0, 0xa3, 0xa6, 0x71, 0x58, 0x3e, 0xdb, 0x3e, 0x11, 0xae, 0x10, 0x14, 0xa3, 0x66,
0x30, 0x64, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3f, 0xfc, 0xac,
0xd6, 0x1a, 0xb1, 0x3a, 0x9e, 0x81, 0x20, 0xb8, 0xd5, 0x25, 0x1c, 0xc5, 0x65, 0xbb, 0x1e, 0x91,
0xa9, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc8, 0xad,
0xe9, 0x77, 0x4c, 0x45, 0xc3, 0xa3, 0xcf, 0x0d, 0x16, 0x10, 0xe4, 0x79, 0x43, 0x3a, 0x21, 0x5a,
0x30, 0xcf, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
0x04, 0x04, 0x03, 0x02, 0x02, 0x84, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04,
0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x4b, 0x8a, 0x9b, 0x7b, 0xee, 0x82, 0xbc,
0xc0, 0x33, 0x87, 0xae, 0x2f, 0xc0, 0x89, 0x98, 0xb4, 0xdd, 0xc3, 0x8d, 0xab, 0x27, 0x2a, 0x45,
0x9f, 0x69, 0x0c, 0xc7, 0xc3, 0x92, 0xd4, 0x0f, 0x8e, 0x02, 0x21, 0x00, 0xee, 0xda, 0x01, 0x5d,
0xb6, 0xf4, 0x32, 0xe9, 0xd4, 0x84, 0x3b, 0x62, 0x4c, 0x94, 0x04, 0xef, 0x3a, 0x7c, 0xcc, 0xbd,
0x5e, 0xfb, 0x22, 0xbb, 0xe7, 0xfe, 0xb9, 0x77, 0x3f, 0x59, 0x3f, 0xfb,
};
static const uint8_t kEcAttestRootCert[] = {
0x30, 0x82, 0x02, 0x8b, 0x30, 0x82, 0x02, 0x32, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
0xa2, 0x05, 0x9e, 0xd1, 0x0e, 0x43, 0x5b, 0x57, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,
0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x43,
0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55,
0x04, 0x07, 0x0c, 0x0d, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x69, 0x65,
0x77, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x47, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04,
0x0b, 0x0c, 0x07, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03,
0x55, 0x04, 0x03, 0x0c, 0x2a, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x4b, 0x65, 0x79,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x41,
0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30,
0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x34, 0x33, 0x35, 0x30, 0x5a,
0x17, 0x0d, 0x33, 0x36, 0x30, 0x31, 0x30, 0x36, 0x30, 0x30, 0x34, 0x33, 0x35, 0x30, 0x5a, 0x30,
0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f,
0x72, 0x6e, 0x69, 0x61, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0d, 0x4d,
0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x69, 0x65, 0x77, 0x31, 0x15, 0x30, 0x13,
0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x49,
0x6e, 0x63, 0x2e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x07, 0x41, 0x6e,
0x64, 0x72, 0x6f, 0x69, 0x64, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x2a,
0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x65,
0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07,
0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01,
0x07, 0x03, 0x42, 0x00, 0x04, 0xee, 0x5d, 0x5e, 0xc7, 0xe1, 0xc0, 0xdb, 0x6d, 0x03, 0xa6, 0x7e,
0xe6, 0xb6, 0x1b, 0xec, 0x4d, 0x6a, 0x5d, 0x6a, 0x68, 0x2e, 0x0f, 0xff, 0x7f, 0x49, 0x0e, 0x7d,
0x77, 0x1f, 0x44, 0x22, 0x6d, 0xbd, 0xb1, 0xaf, 0xfa, 0x16, 0xcb, 0xc7, 0xad, 0xc5, 0x77, 0xd2,
0x56, 0x9c, 0xaa, 0xb7, 0xb0, 0x2d, 0x54, 0x01, 0x5d, 0x3e, 0x43, 0x2b, 0x2a, 0x8e, 0xd7, 0x4e,
0xec, 0x48, 0x75, 0x41, 0xa4, 0xa3, 0x63, 0x30, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
0x04, 0x16, 0x04, 0x14, 0xc8, 0xad, 0xe9, 0x77, 0x4c, 0x45, 0xc3, 0xa3, 0xcf, 0x0d, 0x16, 0x10,
0xe4, 0x79, 0x43, 0x3a, 0x21, 0x5a, 0x30, 0xcf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
0x18, 0x30, 0x16, 0x80, 0x14, 0xc8, 0xad, 0xe9, 0x77, 0x4c, 0x45, 0xc3, 0xa3, 0xcf, 0x0d, 0x16,
0x10, 0xe4, 0x79, 0x43, 0x3a, 0x21, 0x5a, 0x30, 0xcf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,
0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x02, 0x84, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86,
0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02, 0x20, 0x35, 0x21, 0xa3,
0xef, 0x8b, 0x34, 0x46, 0x1e, 0x9c, 0xd5, 0x60, 0xf3, 0x1d, 0x58, 0x89, 0x20, 0x6a, 0xdc, 0xa3,
0x65, 0x41, 0xf6, 0x0d, 0x9e, 0xce, 0x8a, 0x19, 0x8c, 0x66, 0x48, 0x60, 0x7b, 0x02, 0x20, 0x4d,
0x0b, 0xf3, 0x51, 0xd9, 0x30, 0x7c, 0x7d, 0x5b, 0xda, 0x35, 0x34, 0x1d, 0xa8, 0x47, 0x1b, 0x63,
0xa5, 0x85, 0x65, 0x3c, 0xad, 0x4f, 0x24, 0xa7, 0xe7, 0x4d, 0xaf, 0x41, 0x7d, 0xf1, 0xbf,
};