การติดตั้งใช้งานการยืนยันที่ปลอดภัย

ข้อควรพิจารณา

คุณต้องพิจารณาสิ่งต่อไปนี้เพื่อให้การยืนยันที่ปลอดภัยของ Android ทำงานได้อย่างถูกต้อง หากไม่สามารถจัดการกับข้อควรพิจารณาเหล่านี้ได้อย่างน่าพอใจ คุณจะใช้งานการยืนยันที่ปลอดภัยในอุปกรณ์ไม่ได้

ข้อควรพิจารณาเกี่ยวกับเคอร์เนล Linux

การยืนยันที่ปลอดภัยออกแบบมาให้ทำงานได้อย่างปลอดภัยแม้ว่าเคอร์เนลของอุปกรณ์จะถูกบุกรุก ขณะที่กล่องโต้ตอบการยืนยันที่ปลอดภัยทำงานอยู่ เคอร์เนลจะไม่สามารถแทรกแซงความสมบูรณ์ของเนื้อหาหน้าจอ ความสมบูรณ์ของอินพุตของผู้ใช้ และความเป็นอะตอมระหว่างอินพุตและเอาต์พุตของผู้ใช้ ในแง่สถาปัตยกรรม ต้องป้องกันไม่ให้เคอร์เนลเสริมการตัดสินใจของผู้ใช้และป้องกันการปลอมแปลงเหตุการณ์ของผู้ใช้ตั้งแต่แรก ระบบไม่ถือว่าเคอร์เนลเชื่อถือได้สำหรับกรณีการใช้งานนี้ เนื่องจากอาจอยู่ภายใต้การควบคุมของผู้โจมตีหรือถูกแทนที่ด้วยสิ่งที่แตกต่างออกไปโดยสิ้นเชิง

ข้อควรพิจารณาเกี่ยวกับเฟิร์มแวร์

คุณจะติดตั้งใช้งานการยืนยันที่ปลอดภัยในอุปกรณ์ได้ก็ต่อเมื่อคอมโพเนนต์ทั้งหมดที่เกี่ยวข้องมีเฟิร์มแวร์ที่เชื่อถือได้เท่านั้น การยืนยันที่ปลอดภัยออกแบบมาเพื่อให้ผู้ใช้มีโอกาสอ่านข้อความที่แสดงใน UI ที่เชื่อถือได้เพื่อตัดสินใจว่าจะดำเนินการธุรกรรมต่อหรือไม่ ไดร์เวอร์แผงแสดงผลมีความสำคัญอย่างยิ่งเนื่องจากอาจทำให้ผู้ใช้ดู UI ที่เชื่อถือไม่ได้

ข้อควรพิจารณาเกี่ยวกับอินพุต

เลือกวิธีการป้อนข้อมูลที่ปลอดภัยเพื่อให้แน่ใจว่าระบบจะไม่ส่งเหตุการณ์การป้อนข้อมูลซึ่งสร้างขึ้นโดยวิธีการป้อนข้อมูลที่เลือกนี้ไปยังกล่องโต้ตอบการยืนยันที่ปลอดภัย เว้นแต่ผู้ใช้จะสร้างเหตุการณ์ขณะที่กล่องโต้ตอบดังกล่าวทำงานอยู่

ฮาร์ดแวร์จริง

คอมโพเนนต์ที่เคอร์เนล Android ควบคุมได้ เช่น ระบบบนชิป (SoC) หรือวงจรรวมการจัดการพลังงาน (PMIC) ต้องไม่สามารถขับเคลื่อนสายไฟที่เชื่อมต่อกับปุ่มยืนยันจริง

ข้อควรพิจารณาเกี่ยวกับตัวควบคุมระบบสัมผัส

การยืนยันที่ปลอดภัยสามารถใช้ปุ่มซอฟต์แวร์บนหน้าจอเป็นอินพุตได้ เมื่อใดก็ตามที่ TEE ขับเคลื่อนตัวควบคุมระบบสัมผัส จะต้องมีมาตรการในการล้างสถานะของตัวควบคุมระบบสัมผัส

ลักษณะการทำงานที่ควรจะเป็น

เสียงแทรก

หากระบบขัดจังหวะเซสชันการยืนยันเนื่องจากมีการโทรเข้าหรือเหตุการณ์เกี่ยวกับพลังงาน HAL ต้องรายงานResponseCode::Aborted แอปจะได้รับ onCanceled() การเรียกกลับและทราบว่าผู้ใช้ไม่ได้เลือกการดำเนินการใดๆ การปลุกไม่จำเป็นต้องหยุดเซสชัน แต่ต้องแจ้งให้ผู้ใช้ทราบ ไม่อนุญาตให้วางซ้อนการแจ้งเตือนทุกประเภทขณะที่กล่องโต้ตอบทำงานอยู่

ระยะเวลาผ่อนผันในการป้อนข้อมูล

หลังจากเริ่มการยืนยันที่ปลอดภัยแล้ว อินพุตจะต้องไม่ทำงานอย่างน้อย 1 วินาทีก่อนที่จะตอบสนองต่อการโต้ตอบของผู้ใช้ ระยะเวลาผ่อนผันนี้ช่วยให้ผู้ใช้มีเวลาตอบสนองต่อกล่องโต้ตอบการยืนยันที่ไม่คาดคิด แอปที่เชื่อถือได้ต้องบังคับใช้ระยะเวลาผ่อนผันนี้

การหมุนหน้าจอ

โหมดแนวตั้งเป็นโหมดเดียวที่กำหนดไว้ และระบบไม่รองรับการหมุนหน้าจอ การหมุนหน้าจออาจทำให้เกิดความเสี่ยงต่อการละเมิดในระบบที่ถูกบุกรุก เช่น การวางปุ่มที่ทําให้เข้าใจผิดหรือการปรับแต่งข้อความเนื้อหา

การแสดงผลข้อความเนื้อหาไม่สำเร็จ

ข้อความเนื้อหามีขอบเขตแบบตายตัว 6144 (0x1800) ไบต์ ซึ่งรวมถึงข้อมูลเพิ่มเติมที่ไม่ได้แสดงและข้อมูลส่วนหัว CBOR นอกจากนี้ ยังมีขอบเขตที่ไม่ชัดเจนซึ่งต้องบังคับใช้ หากข้อความที่แสดงผลไม่พอดีกับพื้นที่หน้าจอที่มีอยู่ ให้ตรวจสอบว่าระบบยกเลิกการยืนยันที่ปลอดภัยและยกเลิกธุรกรรม หาก MessageSize มีขนาดเกินกว่าที่อนุญาตสูงสุด การติดตั้งใช้งานของคุณจะต้องแสดงผล UIErrorMessageTooLong ใน promptUserConfirmation

แนวทางปฏิบัติแนะนำคือให้จัดรูปแบบข้อความเนื้อหาหลังจากได้รับการเรียก API ข้อความเนื้อหาต้องแสดงต่อผู้ใช้อย่างเต็มรูปแบบ

จอแสดงผลรอง

ระบบรองรับจอแสดงผลรองภายใต้เงื่อนไขบางประการ ต้องรักษาความสมบูรณ์ของเอาต์พุตและอินพุตของผู้ใช้ และจะต้องไม่แสดงข้อมูลที่ทําให้เข้าใจผิดผ่านช่องทางอื่นๆ ไม่เช่นนั้น กล่องโต้ตอบอาจแสดงเฉพาะในจอแสดงผลหลัก และจอแสดงผลอื่นๆ ทั้งหมดควรปิดใช้งานหรือว่างเปล่า โซลูชันสตรีมมิงและการแชร์หน้าจอไม่ได้รับอนุญาตให้แสดงกล่องโต้ตอบหรือสร้างการยืนยัน