Android->การตั้งค่า->ความปลอดภัย->ประเภทการจัดเก็บ รับค่าภายในแอป

ใน Android เวอร์ชันใหม่กว่า (ฉันเดาว่าตั้งแต่ 4.2) มีตัวเลือกที่เรียกว่า "ฮาร์ดแวร์สำรอง" และ "ซอฟต์แวร์เท่านั้น" ดังที่ Google สันนิษฐาน:

ขณะนี้ Android ยังสนับสนุนพื้นที่จัดเก็บข้อมูลที่สนับสนุนด้วยฮาร์ดแวร์สำหรับข้อมูลประจำตัว KeyChain ของคุณ ซึ่งให้ความปลอดภัยมากขึ้นโดยการทำให้ไม่สามารถดึงคีย์ได้ กล่าวคือ เมื่อคีย์อยู่ในที่เก็บคีย์ที่สนับสนุนฮาร์ดแวร์ (Secure Element, TPM หรือ TrustZone) คีย์เหล่านั้นจะสามารถนำมาใช้สำหรับการดำเนินการเข้ารหัสลับได้ แต่เนื้อหาคีย์ส่วนตัวจะไม่สามารถส่งออกได้ แม้แต่เคอร์เนลระบบปฏิบัติการก็ไม่สามารถเข้าถึงเนื้อหาสำคัญนี้ได้ แม้ว่าอุปกรณ์ที่ใช้ Android บางตัวจะรองรับพื้นที่เก็บข้อมูลบนฮาร์ดแวร์ แต่คุณสามารถตรวจสอบในขณะรันไทม์ได้ว่ามีที่เก็บข้อมูลที่สำรองไว้ด้วยฮาร์ดแวร์หรือไม่

อีฟาซิสเป็นของฉัน

สิ่งที่ฉันไม่เข้าใจคือ GalaxyNexus และ Nexus 7 มีชิป NFC พร้อม Secure Element แต่ประเภทพื้นที่เก็บข้อมูลคือ "ซอฟต์แวร์เท่านั้น" Nexus 4 มี NFC Secure Element และ "รองรับฮาร์ดแวร์" ในขณะที่ Nexus 7 (2013) และ Nexus 5 ไม่มี NFC-Secure-Element แต่ยังคง "รองรับฮาร์ดแวร์" ฉันสามารถตรวจสอบสิ่งนี้ด้วยตนเองภายในแอพการตั้งค่า แต่มีวิธีตรวจสอบสิ่งนี้ภายในแอพของฉันหรือไม่

ตามที่ CommonsWare กล่าวถึง ฉันควรจัดเตรียมลิงก์: ข้อมูลแรกที่องค์ประกอบความปลอดภัยเกี่ยวข้องกับประเภทการจัดเก็บข้อมูลนั้นถูกกล่าวถึง ที่นี่: แหล่งข้อมูลที่มีประโยชน์อีกแหล่งคือ บล็อกของ Nelenkov


person Rafael T    schedule 07.11.2013    source แหล่งที่มา
comment
@CommonsWare คุณพูดถูกว่ามันไม่เกี่ยวข้องกันอย่างแน่นอน เพียงต้องการความไว้วางใจจากฮาร์ดแวร์ (ซึ่งอาจเป็นองค์ประกอบที่ปลอดภัยของ NFC) ซึ่ง Galaxy Nexus มีอย่างชัดเจน แต่รองรับเฉพาะข้อมูลรับรองซอฟต์แวร์เท่านั้น ดูการแก้ไขของฉัน   -  person Rafael T    schedule 07.11.2013
comment
ดังนั้น คุณต้องการทราบว่าประเภทพื้นที่จัดเก็บข้อมูลได้รับการสนับสนุนด้วยฮาร์ดแวร์หรือไม่   -  person Vikram    schedule 27.11.2013
comment
นี่คือสิ่งที่ฉันต้องการค้นหาภายในแอปของฉัน   -  person Rafael T    schedule 27.11.2013
comment
ฉันจะแนะนำให้คุณใช้การสะท้อนกลับเนื่องจากบริการ KeyStore ไม่ได้เป็นส่วนหนึ่งของ SDK ››› รับ IKeystoreService จาก ServiceManager และเรียกใช้เมธอด is_hardware_backed() แต่ตามที่นิโคเลย์ตอบด้านล่าง KeyChain#isBoundKeyAlgorithm(String) ไปตามเส้นทางเดียวกัน และเรียก IKeystoreService#is_hardware_backed() ในที่สุด   -  person Vikram    schedule 27.11.2013


คำตอบ (1)


คุณอ่านบล็อกจริงเหรอ? :) ปัจจุบัน 'ฮาร์ดแวร์สำรอง' หมายถึง TrustZone (TEE) ที่ได้รับการสนับสนุนสำหรับอุปกรณ์ที่วางจำหน่ายทั้งหมด การใช้องค์ประกอบความปลอดภัยที่ฝังไว้สำหรับสิ่งนี้ค่อนข้างยุ่งยากด้วยเหตุผลทางการเมือง และไม่มีอุปกรณ์ Android ในปัจจุบันที่มี TMP ซึ่งจะทำให้การใช้งาน TEE ที่ใช้ TrustZone BTW, Galaxy Nexus ก็มีหนึ่งอันเช่นกัน แต่ไดรเวอร์ถูกปิดใช้งานในรุ่นรีลีส มันมีมาตั้งแต่ 4.1

หากต้องการตรวจสอบจากแอป ให้ใช้ KeyChain.isBoundKeyAlgorithm(String algorithm)

person Nikolay Elenkov    schedule 27.11.2013
comment
ว้าว คุณเอเลนคอฟเองก็กำลังตอบอยู่ ;) ฉันอ่านบล็อกของคุณ (รวมถึงโพสต์ทั้งหมดเกี่ยวกับ SecureElements และวิธีการใช้งาน) นี่อาจทำให้ฉันสับสนเล็กน้อย ขอบคุณที่ให้คำตอบที่ถูกต้อง - person Rafael T; 27.11.2013