Android-›Pengaturan-›Keamanan-›StorageType dapatkan Nilai di dalam aplikasi

Di versi Android yang lebih baru (saya kira sejak 4.2) ada opsi yang disebut "didukung perangkat keras" dan "hanya perangkat lunak". Seperti dugaan Google:

Android kini juga mendukung penyimpanan yang didukung perangkat keras untuk kredensial KeyChain Anda, memberikan keamanan lebih dengan membuat kunci tidak tersedia untuk diekstraksi. Artinya, setelah kunci berada di penyimpanan kunci yang didukung perangkat keras (Elemen Aman, TPM, atau TrustZone), kunci tersebut dapat digunakan untuk operasi kriptografi namun materi kunci pribadi tidak dapat diekspor. Bahkan kernel OS tidak dapat mengakses materi kunci ini. Meskipun tidak semua perangkat yang diberdayakan Android mendukung penyimpanan pada perangkat keras, Anda dapat memeriksa pada waktu proses apakah penyimpanan yang didukung perangkat keras tersedia

penekanan adalah milikku

Apa yang saya tidak mengerti adalah: GalaxyNexus dan Nexus 7 memiliki NFC-Chip dengan Elemen Aman, namun tipe penyimpanannya adalah "hanya perangkat lunak". Nexus 4 memiliki Elemen Aman NFC, dan "didukung perangkat keras", sedangkan Nexus 7 (2013) dan Nexus 5 tidak memiliki Elemen Aman NFC namun masih "didukung perangkat keras". Saya dapat memeriksanya secara manual di dalam Aplikasi Pengaturan, tetapi apakah ada cara untuk memeriksanya di dalam Aplikasi saya?

Seperti yang disebutkan CommonsWare, saya harus memberikan tautan: Info pertama bahwa Elemen Aman terkait dengan jenis penyimpanan disebutkan di sini: sumber info berguna lainnya adalah blog Nelenkov


person Rafael T    schedule 07.11.2013    source sumber
comment
@CommonsWare Anda benar, ini tidak sepenuhnya terkait. Ini hanya memerlukan akar kepercayaan perangkat keras (yang dapat berupa Elemen aman NFC) yang jelas dimiliki oleh Galaxy Nexus, namun hanya mendukung kredensial Perangkat Lunak Saja. Lihat hasil edit saya   -  person Rafael T    schedule 07.11.2013
comment
Jadi, Anda ingin tahu apakah jenis penyimpanannya didukung perangkat keras atau tidak?   -  person Vikram    schedule 27.11.2013
comment
tepatnya, inilah yang ingin saya temukan di dalam aplikasi saya.   -  person Rafael T    schedule 27.11.2013
comment
Saya akan menyarankan agar Anda menggunakan refleksi karena layanan KeyStore bukan bagian dari SDK ››› Dapatkan IKeystoreService dari ServiceManager dan panggil metode is_hardware_backed(). Namun, seperti jawaban Nikolay di bawah, KeyChain#isBoundKeyAlgorithm(String) mengikuti rute yang sama, akhirnya memanggil IKeystoreService#is_hardware_backed().   -  person Vikram    schedule 27.11.2013


Jawaban (1)


Apakah Anda benar-benar membaca blog itu? :) Saat ini 'didukung perangkat keras' berarti didukung TrustZone (TEE) untuk semua perangkat yang dirilis. Menggunakan elemen aman yang tertanam untuk ini agak rumit karena alasan politik, dan saat ini tidak ada perangkat Android yang memiliki TMP. Hal ini meninggalkan implementasi TEE berbasis TrustZone. BTW, Galaxy Nexus juga memilikinya, tetapi drivernya dinonaktifkan pada versi rilis. Sudah ada sejak 4.1.

Untuk memeriksa dari aplikasi gunakan KeyChain.isBoundKeyAlgorithm(String algorithm).

person Nikolay Elenkov    schedule 27.11.2013
comment
Wah, Pak Elenkov sendiri yang menjawab ;). Saya membaca blog Anda (bersama semua postingan tentang SecureElements dan cara menggunakannya). Ini mungkin membuat saya sedikit bingung. Terima kasih telah memberikan jawaban yang tepat. - person Rafael T; 27.11.2013